Jawaban:
Saya perlu mengelola file desktop sama seperti Anda; memiliki file desktop terpisah untuk setiap proyek dan menyimpan buffer, variabel Emacs, dll secara terpisah untuk masing-masing proyek.
Saya dapat mencapai itu dengan menggunakan paket yang disebut bookmark+
.
Bookmark Perpustakaan + mengelola berbagai jenis bookmark, salah satunya adalah Bookmark Desktop .
Setelah menginstal paket,
(require 'bookmark+)
diinit.el
M-x bmkp-set-desktop-bookmark
atau C-x p K. Itu akan menanyakan Anda di mana Anda ingin menyimpan file desktop dan Anda dapat memilih untuk menyimpannya di folder proyek itu.M-x bmkp-desktop-jump
atau C-x j K.The Bookmark + doc pada Emacs Wiki sangat informatif jika Anda ingin mempelajari lebih lanjut tentang paket ini.
Selain itu, saya memiliki yang berikut ini untuk mengatur desktop
paket tempat saya dapat memilih apa yang ingin saya simpan per 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)))
Saya merasa berguna untuk mengikat fungsi di bawah ini C-x C-cagar desktop dapat disimpan secara otomatis ketika saya keluar dari 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))
Terkadang, saya tidak ingin menyimpan desktop saat berhenti emacs. Untuk kesempatan itu, saya menggunakan fungsi lain ini dan terikat untuk itu 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
ke `` ask-if-new`` `
Saya cenderung menggunakan pengaturan berikut untuk menyimpan dan memuat / membaca file desktop dari direktori lokal dari masing-masing proyek:
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
Ini bukan tanpa masalah karena beralih proyek melalui mis., Proyektil atau utilitas manajemen proyek lainnya tidak memuat file desktop apa pun tetapi saya dapat menggunakan projectile-after-switch-project-hook
fungsi ini untuk memanggil fungsi pribadi untuk melakukan yang diperlukan.