การใช้ DeskTop สำหรับการจัดการโครงการพื้นฐาน


12

ฉันต้องการใช้DeskTopสำหรับการจัดการโครงการขั้นพื้นฐานเช่นการเปิดชุดบัฟเฟอร์และเรียกคืนประวัติขึ้นอยู่กับโครงการที่ฉันกำลังทำงานอยู่ เป็นไปได้หรือไม่นั่นคือมีไฟล์เดสก์ท็อปหนึ่งไฟล์ในไดเรกทอรีโครงการและฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


13

ฉันต้องการจัดการไฟล์เดสก์ท็อปเช่นเดียวกับคุณ มีไฟล์เดสก์ท็อปแยกต่างหากสำหรับแต่ละโครงการและบันทึกบัฟเฟอร์ตัวแปร Emacs และอื่น ๆ แยกกันสำหรับแต่ละโครงการ

bookmark+ผมสามารถที่จะประสบความสำเร็จที่ใช้แพคเกจที่เรียกว่า

มาร์ค +

ห้องสมุดBookmark +จัดการแตกต่างกันของบุ๊กเป็นหนึ่งในนั้นคือสก์ท็อปที่คั่นหน้า

หลังจากติดตั้งแพคเกจแล้ว

  • คุณจำเป็นต้องมี(require 'bookmark+)ในของคุณinit.el
  • เพื่อสร้างบุ๊กสำหรับแต่ละโครงการ, ตั้งค่าบัฟเฟอร์ที่คุณต้องการสำหรับแต่ละโครงการและทำหรือM-x bmkp-set-desktop-bookmark C-x p Kซึ่งจะถามว่าคุณต้องการบันทึกไฟล์เดสก์ท็อปไว้ที่ใดและคุณสามารถเลือกที่จะบันทึกไว้ในโฟลเดอร์ของโครงการ
  • เมื่อคุณได้ตั้งบุ๊กมาสก์ท็อปสำหรับโครงการทุกท่านสามารถข้ามไปยังบุ๊กที่แตกต่างกันโดยใช้หรือM-x bmkp-desktop-jumpC-x j K

ส่วนที่คั่นไว้ + doc บน Emacs Wiki นั้นเป็นข้อมูลหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแพ็คเกจนี้

desktop.el

นอกจากนั้นฉันมีดังต่อไปนี้เพื่อตั้งค่าdesktopแพคเกจที่ฉันสามารถเลือกสิ่งที่ฉันต้องการบันทึกต่อเดสก์ท็อป

(desktop-save-mode 1)

;; Source: https://github.com/purcell/emacs.d/blob/master/lisp/init-sessions.el
; save a bunch of variables to the desktop file
;; for lists specify the len of the maximal saved data also
(setq desktop-globals-to-save
      (append '((comint-input-ring . 50)
                (compile-history . 30)
                desktop-missing-file-warning
                (dired-regexp-history . 20)
                (extended-command-history . 30)
                (face-name-history . 20)
                (file-name-history . 100)
                (grep-find-history . 30)
                (grep-history . 30)
                (ido-buffer-history . 100)
                (ido-last-directory-list . 100)
                (ido-work-directory-list . 100)
                (ido-work-file-list . 100)
                (magit-read-rev-history . 50)
                (minibuffer-history . 50)
                (org-clock-history . 50)
                (org-refile-history . 50)
                (org-tags-history . 50)
                (query-replace-history . 60)
                (read-expression-history . 60)
                (regexp-history . 60)
                (regexp-search-ring . 20)
                register-alist
                (search-ring . 20)
                (shell-command-history . 50)
                tags-file-name
                tags-table-list)))

บันทึกเดสก์ท็อปเฉพาะโครงการเมื่อเลิกใช้ emacs

ฉันพบว่ามีประโยชน์ในการผูกฟังก์ชั่นด้านล่างเพื่อC-x C-cให้เดสก์ท็อปได้รับการบันทึกโดยอัตโนมัติเมื่อฉันออกจาก emacs

(defun save-desktop-save-buffers-kill-emacs ()
  "Save buffers and current desktop every time when quitting emacs."
  (interactive)
  (desktop-save-in-desktop-dir)
  (save-buffers-kill-emacs))

บางครั้งฉันไม่ต้องการบันทึกเดสก์ท็อปเมื่อเลิกใช้ emacs สำหรับโอกาสที่ผมใช้ฟังก์ชั่นอื่น ๆ C-x M-cนี้และได้ผูกไว้ที่

;; Kill emacs when running in daemon mode or not
;; Source: http://lists.gnu.org/archive/html/emacs-devel/2011-11/msg00348.html
(defun tv-stop-emacs ()
  (interactive)
  (if (daemonp)
      (save-buffers-kill-emacs)
    (save-buffers-kill-terminal)))

ขอบคุณ - ที่มีแนวโน้มมาก ฉันพบการรวมกันของบุ๊กมาร์ก + และ DeskTop มาก่อน แต่ไม่สามารถหาวิธีรัดกุมในการทำ ฟังดูดีมาก ฉันจะลองวันจันทร์ล่าสุด!
Rainer

1
โปรดทราบว่าไม่เหมือนกับกรณีสำหรับคำสั่งเดสก์ท็อปของวานิลลา Emacs ที่คั่นหน้า +บุ๊คมาร์คบนเดสก์ท็อปนั้นมีจุดประสงค์เพื่อสลับระหว่างเดสก์ท็อปหลายเครื่อง IOW คุณสามารถมีไฟล์เดสก์ทอปได้หลายไฟล์ และไฟล์เดสก์ท็อปของคุณสามารถอยู่ได้ทุกที่ พวกเขาไม่จำเป็นต้องอยู่ในไดเรกทอรีอื่น การใช้เดสก์ท็อปวานิลลาสันนิษฐานว่าคุณมีไฟล์เดสก์ท็อปเดียวต่อไดเรกทอรี
ดึง

@kaushalmodi ขอบคุณ - ยอดเยี่ยม และตอนนี้ฉันมีจำนวนมากที่ต้องอ่านเกี่ยวกับบุ๊กมาร์ก + - แต่มันไม่ต้องการอย่างแน่นอน
Rainer

@ ดึงนี่คือสิ่งที่ฉันกำลังมองหา - และมันทำงานได้เหมือนมีเสน่ห์
Rainer

@kaushalmodi ฉันคิดว่าคุณกำลังใช้ฟังก์ชัน exit ของคุณเพื่อให้สามารถออกจาก emacs ได้โดยไม่ต้องบันทึกเดสก์ท็อป - หรือมีความแตกต่างเมื่อต้องการบันทึกเดสก์ท็อปอยู่เสมอเพื่อใช้ตัวแปรdesktop-eve`` ถาม - ถ้า - ใหม่ ' `?
Rainer

0

ฉันมักจะใช้การตั้งค่าต่อไปนี้เพื่อบันทึกและโหลด / อ่านไฟล์เดสก์ทอปจากไดเรกทอรีท้องถิ่นของโครงการที่เกี่ยวข้อง:

 (require 'desktop)
 (setq desktop-path (list "./"))
 (desktop-save-mode 1)
 (desktop-read)

นี่ไม่ใช่ปัญหาโดยไม่มีการสลับโครงการผ่านเช่นprojectileหรือยูทิลิตี้การจัดการโครงการอื่น ๆ ไม่โหลดไฟล์เดสก์ท็อปใด ๆ แต่ฉันสามารถใช้projectile-after-switch-project-hookฟังก์ชั่นเพื่อเรียกใช้ฟังก์ชั่นส่วนตัวเพื่อทำสิ่งที่จำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.