Risposte:
Avevo bisogno di gestire i file desktop come te; disporre di un file desktop separato per ciascun progetto e salvare buffer, variabili Emacs, ecc. indipendentemente per ciascuno.
Sono stato in grado di ottenerlo utilizzando un pacchetto chiamato bookmark+
.
Library Bookmark + gestisce diversi tipi di segnalibri, uno di questi è Segnalibri desktop .
Dopo aver installato il pacchetto,
(require 'bookmark+)
nel tuoinit.el
M-x bmkp-set-desktop-bookmark
o C-x p K. Questo ti chiederà dove vuoi salvare il file desktop e puoi scegliere di salvarlo nella cartella di quel progetto.M-x bmkp-desktop-jump
o C-x j K.Il segnalibro + documento su Emacs Wiki è molto istruttivo se vuoi saperne di più su questo pacchetto.
Oltre a ciò, ho il seguente per impostare il desktop
pacchetto in cui posso scegliere ciò che voglio salvare 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)))
Trovo utile associare la funzione seguente in C-x C-cmodo che i desktop vengano salvati automaticamente quando esco da 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))
A volte, non vorrei salvare il desktop quando si esce da Emacs. Per quelle occasioni, utilizzo quest'altra funzione e l'ho legata a 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
per `` chiedere-nuovo-nuovo`` `?
Tendo a utilizzare la seguente configurazione per salvare e caricare / leggere il file desktop dalla directory locale dei rispettivi progetti:
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
Questo non è senza problemi poiché il passaggio da un progetto all'altro , ad esempio proiettile o altre utilità di gestione dei progetti, non carica alcun file desktop ma potrei utilizzare la projectile-after-switch-project-hook
funzione per chiamare una funzione privata per fare il necessario