DeskTopを使用した基本的なプロジェクト管理


12

DeskTopを基本的なプロジェクト管理に使用したいと思います。つまり、作業しているプロジェクトに応じて、一連のバッファを開いて履歴を復元します。これは可能ですか、つまりプロジェクトディレクトリに1つのデスクトップファイルがあり、これをどのように実現できますか?

回答:


13

私はあなたと同じようにデスクトップファイルを管理する必要がありました。プロジェクトごとに個別のデスクトップファイルを用意し、バッファー、Emacs変数などをそれぞれ独立して保存します。

というパッケージを使用してそれを達成することができましたbookmark+

ブックマーク+

Library Bookmark +は、さまざまなタイプのブックマークを管理します。そのうちの1つがデスクトップブックマークです。

パッケージをインストールした後、

  • あなたが持っている必要があり(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 のBookmark +文書は、このパッケージについて詳しく知りたい場合に非常に役立ちます。

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-cemacsを終了したときにデスクトップが自動的に保存されるようにすると便利です。

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

ありがとう-それは非常に有望に見えます。以前、bookmarks +とDeskTopの組み合わせを見つけましたが、簡潔な方法を見つけることができませんでした。これは素晴らしいですね。毎週月曜日にやってみます!
Rainer、2014

1
通常のEmacsデスクトップコマンドの場合とは異なり、Bookmark +デスクトップブックマークは複数のデスクトップ間で切り替えることを目的としています。IOW、複数のデスクトップファイルを持つことができます。また、デスクトップファイルはどこにでも置くことができます。それらは別のディレクトリにある必要はありません。Vanillaデスクトップの使用は、ディレクトリごとにデスクトップファイルが1つしかないことを前提としています。
2014

@kaushalmodiありがとう-素晴らしい。そして今、私はブックマーク+について多くを読む必要があります-しかし、それはまさに私が欲しいと思っています。
Rainer

@Drewこれはまさに私が探していたものであり、魅力のように機能します。
Rainer

@kaushalmodiデスクトップを保存せずにEmacsを終了できるようにするために、exit関数を使用していると思います-または、常にデスクトップを保存したい場合、変数desktop-eveを `` ask-if-new`` に使用することとは異なります`?
Rainer 2014

0

次の設定を使用して、各プロジェクトのローカルディレクトリからデスクトップファイルを保存および読み込み/読み込みする傾向があります。

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

たとえば、発射体または他のプロジェクト管理ユーティリティを介してプロジェクトを切り替えると、デスクトップファイルが読み込まれないため、これには問題がないわけではありませんがprojectile-after-switch-project-hook、プライベート関数を呼び出す関数を使用して、必要なことを行うことができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.