Usando DeskTop para la gestión básica de proyectos

12

Me gustaría usar DeskTop para la gestión básica de proyectos, es decir, abrir un conjunto de buffers y restaurar historiales dependiendo del proyecto en el que estoy trabajando. ¿Es esto posible, es decir, tener un archivo de escritorio en un directorio de proyecto y cómo puedo lograrlo?

Rainer
fuente

Respuestas:

13

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-bookmarko 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-jumpo 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 desktoppaquete 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)))
Kaushal Modi
fuente
Gracias, eso parece MUY prometedor. Encontré la combinación de marcadores + y DeskTop antes, pero no pude encontrar una manera concisa de hacerlo. Esto suena genial ¡Lo probaré los últimos lunes!
Rainer
1
Tenga en cuenta que, a diferencia del caso de los comandos de escritorio vanilla Emacs, los marcadores de escritorio Bookmark + están destinados a cambiar entre varios escritorios. IOW, puedes tener múltiples archivos de escritorio. Y sus archivos de escritorio pueden estar en cualquier lugar. No necesitan estar en directorios diferentes. El uso de Vanilla Desktop supone que solo tiene un archivo de escritorio por directorio.
Dibujó el
@kaushalmodi Gracias, genial. Y ahora tengo mucho que leer sobre bookmark +, pero exactamente quiere lo que quiero.
Rainer
@Drew, esto es exactamente lo que estaba buscando, y funciona de maravilla.
Rainer
@kaushalmodi Supongo que está utilizando su función de salida para poder salir de emacs sin guardar el escritorio, o hay una diferencia, cuando se desea guardar siempre el escritorio, para usar la variable desktop-eve`` preguntar si es nuevo '' `?
Rainer
0

Tiendo a usar la siguiente configuración para guardar y cargar / leer el archivo de escritorio desde el directorio local de los proyectos respectivos:

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

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-hookfunción para llamar a una función privada para hacer lo necesario

ashraf
fuente