使用DeskTop进行基本项目管理


12

我想使用DeskTop进行基本的项目管理,即根据我正在处理的项目打开一组缓冲区并恢复历史记录。这是否可能,即在项目目录中只有一个桌面文件,我该如何实现?

Answers:


13

我需要像您一样管理桌面文件;每个项目都有一个单独的桌面文件,并分别为每个项目保存缓冲区,Emacs变量等。

我可以使用名为的软件包来实现这一目标bookmark+

书签+

Library Bookmark +管理不同类型的书签,其中之一是Desktop Bookmarks

安装软件包后,

  • 你需要(require 'bookmark+)在你的init.el
  • 要为每个项目创建书签,请为每个项目设置所需的缓冲区,然后执行M-x bmkp-set-desktop-bookmarkC-x p K。这将询问您要将桌面文件保存在何处,您可以选择将其保存在该项目的文件夹中。
  • 为所有项目设置桌面书签后,您可以使用M-x bmkp-desktop-jump或跳到不同的书签C-x j K

如果您想了解更多有关此软件包的信息,请参阅Emacs Wiki上的Bookmark +文档。

桌面版

除此之外,我还有以下步骤来设置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的组合,但是找不到一种简洁的方法。听起来不错。我会在最近的星期一尝试一下!
Rainer

1
请注意,与普通Emacs桌面命令不同,Bookmark +桌面书签旨在在多个桌面之间切换。IOW,您可以有多个桌面文件。您的桌面文件可以在任何地方。它们不必位于不同的目录中。使用Vanilla桌面时,假设每个目录只有一个桌面文件。
Drew

@kaushalmodi谢谢-太好了。现在,我对书签+有很多了解-但这确实是我想要的。
Rainer

@Drew正是我一直在寻找的东西-它就像一种魅力。
Rainer

@kaushalmodi我假设您正在使用退出功能来退出emacs而不保存桌面-或当您希望始终保存桌面时,是否存在使用变量desktop-eve“ ask-if-new”的区别`?
Rainer

0

我倾向于使用以下设置从相应项目的本地目录中保存和加载/读取桌面文件:

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

这不是没有问题的,因为通过例如射弹或其他项目管理实用程序切换项目不会加载任何桌面文件,但我希望可以利用该projectile-after-switch-project-hook函数调用私有函数来完成必要的工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.