Verwenden von DeskTop für das grundlegende Projektmanagement

12

Ich möchte DeskTop für das grundlegende Projektmanagement verwenden, dh eine Reihe von Puffern öffnen und Historien wiederherstellen, je nachdem, an welchem ​​Projekt ich arbeite. Ist dies möglich, dh eine Desktop-Datei in einem Projektverzeichnis, und wie kann ich dies erreichen?

Rainer
quelle

Antworten:

13

Ich musste die Desktop-Dateien genau wie Sie verwalten. Sie haben für jedes Projekt eine separate Desktop-Datei und speichern Puffer, Emacs-Variablen usw. unabhängig voneinander.

Das konnte ich mit einem Paket namens erreichen bookmark+.

Lesezeichen +

Library Bookmark + verwaltet verschiedene Arten von Lesezeichen. Eines davon sind Desktop-Lesezeichen .

Nach der Installation des Pakets

  • Sie müssen (require 'bookmark+)in Ihrem habeninit.el
  • Um ein Lesezeichen für jedes Projekt zu erstellen, richten Sie die gewünschten Puffer für jedes Projekt ein und führen Sie M-x bmkp-set-desktop-bookmarkoder aus C-x p K. Daraufhin werden Sie gefragt, wo Sie die Desktop-Datei speichern möchten, und Sie können sie im Ordner dieses Projekts speichern.
  • Nachdem Sie die Desktop-Lesezeichen für alle Projekte festgelegt haben, können Sie mit M-x bmkp-desktop-jumpoder zu verschiedenen Lesezeichen springen C-x j K.

Das Lesezeichen + Dokument im Emacs-Wiki ist sehr informativ, wenn Sie mehr über dieses Paket erfahren möchten.

desktop.el

Darüber hinaus habe ich folgende Möglichkeiten, um das desktopPaket einzurichten, in dem ich auswählen kann, was alles pro Desktop gespeichert werden soll

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

Speichern projektspezifischer Desktops beim Beenden von Emacs

Ich finde es nützlich, die folgende Funktion zu binden, C-x C-cdamit die Desktops automatisch gespeichert werden, wenn ich Emacs beende.

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

Manchmal möchte ich den Desktop beim Beenden von Emacs nicht speichern. Für diese Gelegenheiten benutze ich diese andere Funktion und habe sie daran gebunden 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
quelle
Danke - das sieht SEHR vielversprechend aus. Ich habe die Kombination aus Lesezeichen + und DeskTop bereits gefunden, konnte jedoch keinen präzisen Weg finden, dies zu tun. Das klingt großartig. Ich werde es spätestens montags ausprobieren!
Rainer
1
Beachten Sie, dass Lesezeichen + Desktop-Lesezeichen im Gegensatz zu den Vanilla Emacs-Desktopbefehlen zum Wechseln zwischen mehreren Desktops vorgesehen sind. IOW, Sie können mehrere Desktop-Dateien haben. Und Ihre Desktop-Dateien können überall sein. Sie müssen sich nicht in verschiedenen Verzeichnissen befinden. Bei der Verwendung von Vanilla-Desktops wird davon ausgegangen, dass Sie nur eine Desktop-Datei pro Verzeichnis haben.
Drew
@kaushalmodi Danke - genial. Und jetzt habe ich viel über Lesezeichen + zu lesen - aber es will genau, dass ich will.
Rainer
@Brew das ist genau das, wonach ich gesucht habe - und es funktioniert wie ein Zauber.
Rainer
@kaushalmodi Ich gehe davon aus, dass Sie Ihre Exit-Funktion verwenden, um Emacs zu beenden, ohne den Desktop zu speichern - oder gibt es einen Unterschied, wenn Sie den Desktop immer speichern möchten, mit der Verwendung der Variablen desktop-eve"ask-if-new" `?
Rainer
0

Ich verwende normalerweise das folgende Setup, um die Desktop-Datei aus dem lokalen Verzeichnis der jeweiligen Projekte zu speichern und zu laden / lesen:

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

Dies ist nicht ohne Probleme, da beim Wechseln von Projekten über z. B. Projektile oder andere Projektmanagement-Dienstprogramme keine Desktop-Dateien geladen werden. Ich kann jedoch die projectile-after-switch-project-hookFunktion verwenden, um eine private Funktion aufzurufen, um die erforderlichen Aufgaben zu erledigen

Ashraf
quelle