ฉันต้องการใช้DeskTopสำหรับการจัดการโครงการขั้นพื้นฐานเช่นการเปิดชุดบัฟเฟอร์และเรียกคืนประวัติขึ้นอยู่กับโครงการที่ฉันกำลังทำงานอยู่ เป็นไปได้หรือไม่นั่นคือมีไฟล์เดสก์ท็อปหนึ่งไฟล์ในไดเรกทอรีโครงการและฉันจะทำสิ่งนี้ได้อย่างไร
ฉันต้องการใช้DeskTopสำหรับการจัดการโครงการขั้นพื้นฐานเช่นการเปิดชุดบัฟเฟอร์และเรียกคืนประวัติขึ้นอยู่กับโครงการที่ฉันกำลังทำงานอยู่ เป็นไปได้หรือไม่นั่นคือมีไฟล์เดสก์ท็อปหนึ่งไฟล์ในไดเรกทอรีโครงการและฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ฉันต้องการจัดการไฟล์เดสก์ท็อปเช่นเดียวกับคุณ มีไฟล์เดสก์ท็อปแยกต่างหากสำหรับแต่ละโครงการและบันทึกบัฟเฟอร์ตัวแปร Emacs และอื่น ๆ แยกกันสำหรับแต่ละโครงการ
bookmark+
ผมสามารถที่จะประสบความสำเร็จที่ใช้แพคเกจที่เรียกว่า
ห้องสมุดBookmark +จัดการแตกต่างกันของบุ๊กเป็นหนึ่งในนั้นคือสก์ท็อปที่คั่นหน้า
หลังจากติดตั้งแพคเกจแล้ว
(require 'bookmark+)
ในของคุณinit.el
M-x bmkp-set-desktop-bookmark
C-x p Kซึ่งจะถามว่าคุณต้องการบันทึกไฟล์เดสก์ท็อปไว้ที่ใดและคุณสามารถเลือกที่จะบันทึกไว้ในโฟลเดอร์ของโครงการM-x bmkp-desktop-jump
C-x j Kส่วนที่คั่นไว้ + doc บน Emacs Wiki นั้นเป็นข้อมูลหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแพ็คเกจนี้
นอกจากนั้นฉันมีดังต่อไปนี้เพื่อตั้งค่า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)))
ฉันพบว่ามีประโยชน์ในการผูกฟังก์ชั่นด้านล่างเพื่อ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-eve
`` ถาม - ถ้า - ใหม่ ' `?
ฉันมักจะใช้การตั้งค่าต่อไปนี้เพื่อบันทึกและโหลด / อ่านไฟล์เดสก์ทอปจากไดเรกทอรีท้องถิ่นของโครงการที่เกี่ยวข้อง:
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
นี่ไม่ใช่ปัญหาโดยไม่มีการสลับโครงการผ่านเช่นprojectileหรือยูทิลิตี้การจัดการโครงการอื่น ๆ ไม่โหลดไฟล์เดสก์ท็อปใด ๆ แต่ฉันสามารถใช้projectile-after-switch-project-hook
ฟังก์ชั่นเพื่อเรียกใช้ฟังก์ชั่นส่วนตัวเพื่อทำสิ่งที่จำเป็น