Utilizzo di DeskTop per la gestione di base dei progetti


12

Vorrei utilizzare DeskTop per la gestione di base del progetto, ovvero l'apertura di un set di buffer e il ripristino delle cronologie a seconda del progetto su cui sto lavorando. È possibile, ovvero avere un file desktop in una directory di progetto e come posso farlo?

Risposte:


13

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+.

segnalibro +

Library Bookmark + gestisce diversi tipi di segnalibri, uno di questi è Segnalibri desktop .

Dopo aver installato il pacchetto,

  • Devi avere (require 'bookmark+)nel tuoinit.el
  • Per creare un segnalibro per ciascun progetto, imposta i buffer che desideri per ciascun progetto e fai M-x bmkp-set-desktop-bookmarko C-x p K. Questo ti chiederà dove vuoi salvare il file desktop e puoi scegliere di salvarlo nella cartella di quel progetto.
  • Dopo aver impostato i segnalibri desktop per tutti i progetti, è possibile passare a segnalibri diversi utilizzando M-x bmkp-desktop-jumpo C-x j K.

Il segnalibro + documento su Emacs Wiki è molto istruttivo se vuoi saperne di più su questo pacchetto.

desktop.el

Oltre a ciò, ho il seguente per impostare il desktoppacchetto 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)))

Salvataggio di desktop specifici del progetto all'uscita da emacs

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)))

Grazie - sembra MOLTO promettente. Ho trovato la combinazione di segnalibri + e DeskTop prima, ma non sono riuscito a trovare un modo conciso per farlo. Sembra fantastico. Lo proverò gli ultimi lunedì!
Rainer,

1
Si noti che, a differenza del caso dei comandi desktop Emacs vaniglia, i segnalibri + segnalibri desktop sono destinati al passaggio tra più desktop. IOW, puoi avere più file desktop. E i tuoi file desktop possono essere ovunque. Non devono trovarsi in directory diverse. L'uso del desktop vanilla presuppone che si disponga di un solo file desktop per directory.
Drew

@kaushalmodi Grazie - geniale. E ora ho molto da leggere sul segnalibro + - ma vuole esattamente quello che voglio.
Rainer,

@Drew questo è esattamente quello che stavo cercando - e funziona come un fascino.
Rainer,

@kaushalmodi Suppongo che tu stia usando la tua funzione di uscita per poter uscire da emacs senza salvare il desktop - o c'è una differenza, quando vuoi salvare sempre il desktop, nell'usare la variabile desktop-eveper `` chiedere-nuovo-nuovo`` `?
Rainer,

0

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-hookfunzione per chiamare una funzione privata per fare il necessario

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.