Câu trả lời:
Tôi cần phải quản lý các tập tin máy tính để bàn giống như bạn; có một tệp máy tính để bàn riêng cho từng dự án và lưu bộ đệm, biến Emacs, v.v ... độc lập cho từng dự án.
Tôi đã có thể đạt được điều đó bằng cách sử dụng một gói được gọi là bookmark+
.
Thư viện Bookmark + quản lý các loại dấu trang khác nhau, một trong số đó là Dấu trang để bàn .
Sau khi cài đặt gói,
(require 'bookmark+)
tronginit.el
M-x bmkp-set-desktop-bookmark
hoặc C-x p K. Điều đó sẽ hỏi bạn nơi bạn muốn lưu tệp máy tính để bàn và bạn có thể chọn lưu nó trong thư mục của dự án đó.M-x bmkp-desktop-jump
hoặc C-x j K.Tài liệu Bookmark + trên Emacs Wiki rất nhiều thông tin nếu bạn muốn tìm hiểu thêm về gói này.
Ngoài ra, tôi có các cách sau để thiết lập desktop
gói nơi tôi có thể chọn tất cả những gì tôi muốn lưu trên mỗi máy tính để bàn
(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)))
Tôi thấy hữu ích khi liên kết các chức năng dưới đây để C-x C-cmáy tính để bàn được lưu tự động khi tôi thoát 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))
Đôi khi, tôi không muốn lưu máy tính để bàn khi thoát emacs. Đối với những dịp đó, tôi sử dụng chức năng khác này và đã ràng buộc điều đó 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
thành `` Ask-if-new`` `?
Tôi có xu hướng sử dụng các thiết lập sau để lưu và tải / đọc tệp máy tính để bàn từ thư mục cục bộ của các dự án tương ứng:
(require 'desktop)
(setq desktop-path (list "./"))
(desktop-save-mode 1)
(desktop-read)
Đây không phải là không có vấn đề như chuyển đổi các dự án thông qua ví dụ, đạn hay các tiện ích quản lý dự án khác không tải bất kỳ tập tin máy tính để bàn nhưng tôi muốn người ta có thể sử dụng các projectile-after-switch-project-hook
chức năng để gọi một chức năng riêng để làm cần thiết