답변:
나는 당신처럼 데스크탑 파일을 관리해야했습니다. 각 프로젝트마다 별도의 데스크탑 파일이 있으며 버퍼, 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 의 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)))
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)))
desktop-eve
를``ask-if-new '' 로 사용하는 것과 다른 점이 있습니다 `?
다음 설정을 사용하여 각 프로젝트의 로컬 디렉토리에서 데스크탑 파일을 저장하고로드 / 읽는 경향이 있습니다.
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
예를 들어 발사체 또는 다른 프로젝트 관리 유틸리티 를 통해 프로젝트를 전환 하면 데스크탑 파일이로드되지 않지만 projectile-after-switch-project-hook
필요한 기능을 수행하기 위해 개인 기능을 호출하는 기능을 활용할 수 있기 때문에 문제 가 없습니다.