Necesitaba administrar los archivos de escritorio como tú; tener un archivo de escritorio separado para cada proyecto y guardar buffers, variables de Emacs, etc. de forma independiente para cada uno.
Pude lograr eso usando un paquete llamado bookmark+
.
marcador +
Library Bookmark + gestiona diferentes tipos de marcadores, uno de ellos es Desktop Bookmarks .
Después de instalar el paquete,
- Necesitas tener
(require 'bookmark+)
en tuinit.el
- Para crear un marcador para cada proyecto, configure los buffers que desea para cada proyecto y haga
M-x bmkp-set-desktop-bookmark
o C-x p K. Eso le preguntará dónde desea guardar el archivo de escritorio y puede elegir guardarlo en la carpeta de ese proyecto.
- Una vez que haya establecido los marcadores de escritorio para todos los proyectos, puede saltar a diferentes marcadores usando
M-x bmkp-desktop-jump
o C-x j K.
El Favorito + doc en Emacs Wiki es muy informativo si desea obtener más información sobre este paquete.
escritorio.el
Además de eso, tengo lo siguiente para configurar el desktop
paquete donde puedo elegir lo que quiero guardar por escritorio
(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)))
Guardar escritorios específicos del proyecto al salir de emacs
Me resulta útil vincular la función a continuación C-x C-cpara que los escritorios se guarden automáticamente cuando salgo de 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 veces, no me gustaría guardar el escritorio al salir de emacs. Para esas ocasiones, uso esta otra función y la he vinculado 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
`` preguntar si es nuevo '' `?Tiendo a usar la siguiente configuración para guardar y cargar / leer el archivo de escritorio desde el directorio local de los proyectos respectivos:
Esto no está exento de problemas, ya que el cambio de proyectos a través de, por ejemplo, proyectiles u otras utilidades de gestión de proyectos no carga ningún archivo de escritorio, pero podría utilizar la
projectile-after-switch-project-hook
función para llamar a una función privada para hacer lo necesariofuente