기본 프로젝트 관리를 위해 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 의 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)))

고마워-아주 유망 해 보인다. 이전에 bookmark +와 DeskTop의 조합을 찾았지만 간결한 방법을 찾지 못했습니다. 이거 좋은데 최근 월요일에 시험해 볼게요!
Rainer

1
vanilla Emacs 데스크탑 명령의 경우와 달리 Bookmark + 데스크탑 책갈피는 여러 데스크탑간에 전환하기위한 것입니다. IOW, 당신은 여러 데스크탑 파일을 가질 수 있습니다. 데스크탑 파일은 어디에나있을 수 있습니다. 다른 디렉토리에있을 필요는 없습니다. Vanilla 데스크탑 사용은 디렉토리 당 하나의 데스크탑 파일 만 있다고 가정합니다.
Drew

@kaushalmodi 감사합니다-훌륭합니다. 그리고 이제 bookmark +에 대해 읽을 내용이 많이 있지만 원하는 것을 정확히 원합니다.
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필요한 기능을 수행하기 위해 개인 기능을 호출하는 기능을 활용할 수 있기 때문에 문제 가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.