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


12

Я хотів би використовувати DeskTop для базового управління проектами, тобто відкрити набір буферів та відновити історії в залежності від проекту, над яким я працюю. Це можливо, тобто наявність одного файлу робочого столу в каталозі проектів і як я можу цього досягти?

Відповіді:


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

Часом я не хотів би зберігати робочий стіл при виході з електронних програм. Для тих випадків я використовую цю іншу функцію і пов’язую це 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
Зауважте, що на відміну від випадків для команд настільних комп'ютерів vanilla Emacs, закладки + закладки на робочому столі призначені для перемикання між кількома настільними комп'ютерами. IOW, ви можете мати кілька файлів на робочому столі. А файли на робочому столі можуть бути де завгодно. Вони не повинні бути в різних довідниках. Використання ванільного робочого столу передбачає, що у вас є лише один файл на робочому столі в каталозі.
Дрю

@kaushalmodi Спасибі - блискуче. І зараз мені багато що читати про закладку + - але це точно так, як я хочу.
Райнер

@Drew це саме те, що я шукав - і це працює як шарм.
Райнер

@kaushalmodi Я припускаю, що ви використовуєте функцію виходу, щоб мати можливість вийти з emacs, не зберігаючи робочий стіл - або є різниця, коли ви хочете завжди зберегти робочий стіл, щоб використовувати змінну desktop-eveна `` ask-if-new '' `?
Райнер

0

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.