Использование DeskTop для базового управления проектами

12

Я хотел бы использовать DeskTop для базового управления проектами, то есть открытия набора буферов и восстановления историй в зависимости от проекта, над которым я работаю. Возможно ли это, то есть иметь один настольный файл в каталоге проекта и как этого добиться?

Rainer
источник

Ответы:

13

Мне нужно было управлять файлами на рабочем столе так же, как вы; иметь отдельный файл рабочего стола для каждого проекта и сохранять буферы, переменные Emacs и т. д. независимо для каждого.

Я смог добиться этого с помощью пакета под названием bookmark+.

закладка +

Библиотека Bookmark + управляет различными типами закладок, одна из которых - закладки на рабочем столе .

После установки пакета,

  • Вы должны иметь (require 'bookmark+)в своемinit.el
  • Чтобы создать закладку для каждого проекта, настройте буферы для каждого проекта и выполните M-x bmkp-set-desktop-bookmarkили C-x p K. Это спросит вас, где вы хотите сохранить файл рабочего стола, и вы можете сохранить его в папке этого проекта.
  • После того, как вы установили закладки рабочего стола для всех проектов, вы можете перейти к различным закладкам, используя M-x bmkp-desktop-jumpили C-x j K.

Закладка + док на Emacs Wiki является очень информативным , если вы хотите узнать больше об этом пакете.

desktop.el

В дополнение к этому, у меня есть следующее, чтобы настроить 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)))

Сохранение рабочих столов для конкретного проекта при выходе из emacs

Я считаю полезным связать приведенную ниже функцию с C-x C-cтем, чтобы рабочие столы автоматически сохранялись при выходе из 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))

Иногда я не хотел бы сохранять рабочий стол при выходе из emacs. В этих случаях я использую эту другую функцию и привязываю ее к 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 раньше, но не смог найти краткий способ сделать это. Это звучит великолепно. Я попробую это по последним понедельникам!
Райнер
1
Обратите внимание, что в отличие от стандартных команд рабочего стола Emacs, закладки Bookmark + на рабочем столе предназначены для переключения между несколькими рабочими столами. IOW, вы можете иметь несколько файлов рабочего стола. И ваши файлы рабочего стола могут быть где угодно. Они не должны быть в разных каталогах. Использование рабочего стола Vanilla предполагает, что у вас есть только один файл рабочего стола на каталог.
Дрю
@kaushalmodi Спасибо - отлично. И теперь у меня есть много, чтобы прочитать о закладке + - но она действительно хочет, я хочу.
Райнер
@ Нарисовал это именно то, что я искал - и это работает как шарм.
Райнер
@kaushalmodi Я предполагаю, что вы используете вашу функцию выхода, чтобы иметь возможность выйти из Emacs без сохранения рабочего стола - или есть ли разница, если вы хотите всегда сохранять рабочий стол, с использованием переменной desktop-eve`` ask-if-new`` `?
Райнер
0

Я склонен использовать следующую настройку для сохранения и загрузки / чтения файла рабочего стола из локального каталога соответствующих проектов:

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

Это не без проблем, так как переключение проектов с помощью, например, projectile или других утилит управления проектами не загружает какие-либо файлы рабочего стола, но я мог бы использовать projectile-after-switch-project-hookфункцию для вызова частной функции, чтобы сделать необходимую

Ашраф
источник