Korzystanie z DeskTop do podstawowego zarządzania projektami

12

Chciałbym używać DeskTop do podstawowego zarządzania projektami, tj. Otwierania zestawu buforów i przywracania historii w zależności od projektu, nad którym pracuję. Czy to możliwe, tj. Posiadanie jednego pliku pulpitu w katalogu projektu i jak mogę to osiągnąć?

Rainer
źródło

Odpowiedzi:

13

Musiałem zarządzać plikami na pulpicie tak jak ty; mieć osobny plik pulpitu dla każdego projektu i niezależnie zapisywać bufory, zmienne Emacsa itp.

Udało mi się to osiągnąć za pomocą pakietu o nazwie bookmark+.

zakładka +

Biblioteka Zakładka + zarządza różnymi typami zakładek, jedną z nich są Zakładki na pulpicie .

Po zainstalowaniu pakietu

  • Musisz mieć (require 'bookmark+)w swoiminit.el
  • Aby utworzyć zakładkę dla każdego projektu, skonfiguruj bufory, które chcesz dla każdego projektu i wykonaj M-x bmkp-set-desktop-bookmarklub C-x p K. Zostaniesz zapytany, gdzie chcesz zapisać plik pulpitu i możesz zapisać go w folderze tego projektu.
  • Po ustawieniu zakładek pulpitu dla wszystkich projektów możesz przejść do różnych zakładek za pomocą M-x bmkp-desktop-jumplub C-x j K.

Zakładek + doc na Emacs Wiki jest bardzo pouczające, jeśli chcesz dowiedzieć się więcej o tym pakiecie.

desktop.el

Oprócz tego mam następujące ustawienia, aby skonfigurować desktoppakiet, w którym mogę wybrać wszystko, co chcę zapisać na pulpicie

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

Zapisywanie pulpitów specyficznych dla projektu podczas wychodzenia z emacsa

Uważam za użyteczne powiązanie poniższej funkcji, aby C-x C-ckomputery były zapisywane automatycznie po wyjściu z emacsa.

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

Czasami nie chciałbym oszczędzać pulpitu po wyjściu z emacsa. Na te okazje używam tej innej funkcji i związałem ją z 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
źródło
Dzięki - to wygląda BARDZO obiecująco. Znalazłem kombinację zakładek + i DeskTop wcześniej, ale nie mogłem znaleźć zwięzłego sposobu na zrobienie tego. Brzmi świetnie. Wypróbuję to w ostatnie poniedziałki!
Rainer
1
Zauważ, że w przeciwieństwie do poleceń waniliowych Emacsa na pulpicie, zakładki + zakładki na pulpicie służą do przełączania między wieloma pulpitami. IOW, możesz mieć wiele plików na pulpicie. A pliki na pulpicie mogą być wszędzie. Nie muszą znajdować się w różnych katalogach. Używanie pulpitu waniliowego zakłada, że ​​masz tylko jeden plik pulpitu na katalog.
Drew
@kaushalmodi Thanks - genialny. A teraz mam dużo do przeczytania o zakładce + - ale dokładnie tego chcę.
Rainer
@Drew właśnie tego szukałem - i działa jak urok.
Rainer
@kaushalmodi Zakładam, że używasz funkcji wyjścia, aby móc wyjść z emacsa bez zapisywania pulpitu - lub jest różnica, jeśli chcesz zawsze zapisywać pulpit, używając zmiennej desktop-evedo `` ask-if-new '' `?
Rainer
0

Zwykle używam następującej konfiguracji do zapisywania i ładowania / odczytu pliku pulpitu z lokalnego katalogu odpowiednich projektów:

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

Nie jest to bezproblemowe, ponieważ przełączanie projektów za pomocą np. Pocisków lub innych narzędzi do zarządzania projektami nie ładuje żadnych plików pulpitu, ale można użyć projectile-after-switch-project-hookfunkcji do wywołania funkcji prywatnej, aby wykonać potrzebne

ashraf
źródło