Mỗi ngày tôi khởi động emac và mở chính xác các tệp mà tôi đã mở ngày hôm trước. Có thứ gì tôi có thể thêm vào tệp init.el để nó sẽ mở lại tất cả các bộ đệm mà tôi đã sử dụng khi tôi thoát emacs lần cuối không?
Mỗi ngày tôi khởi động emac và mở chính xác các tệp mà tôi đã mở ngày hôm trước. Có thứ gì tôi có thể thêm vào tệp init.el để nó sẽ mở lại tất cả các bộ đệm mà tôi đã sử dụng khi tôi thoát emacs lần cuối không?
Câu trả lời:
Bạn có thể sử dụng thư viện Emacs Desktop :
Bạn có thể lưu màn hình theo cách thủ công bằng lệnh Mx desktop-save. Bạn cũng có thể bật tính năng tự động lưu màn hình khi thoát Emacs và tự động khôi phục màn hình đã lưu cuối cùng khi Emacs khởi động: sử dụng bộ đệm Tùy chỉnh (xem Tùy chỉnh dễ dàng) để đặt chế độ lưu trên màn hình thành t cho các phiên trong tương lai hoặc thêm dòng này trong tệp ~ / .emacs của bạn:
(desktop-save-mode 1)
M-:
thực thi (setq debug-on-error t)
, sau đó gọi desktop-revert
và nó có thể bắt lỗi vi phạm trong trình gỡ lỗi. Đối với tôi, đó là cài đặt toàn cầu được cho là bộ đệm cục bộ khiến quá trình khôi phục khung không thành công. (Chỉ cần sử dụng emacs --debug-init
có thể nắm bắt vấn đề này quá, nhưng tôi đã sử dụng phương pháp cũ.)
Mặc dù tôi nghi ngờ câu hỏi đang tìm kiếm chức năng "máy tính để bàn" của emacs (xem câu trả lời ở trên), cách tiếp cận của Lewap có thể hữu ích nếu tập hợp tệp mà người ta sử dụng thực sự là cùng một bộ tệp. Trên thực tế, người ta có thể tiến thêm một bước nữa và xác định 'hồ sơ' nếu người ta có các tập hợp tệp thường xuyên được sử dụng khác nhau ... Ví dụ Quickie:
(let ((profile
(read-from-minibuffer "Choose a profile (acad,dist,lisp,comp,rpg): ")
))
(cond
((string-match "acad" profile)
(dired "/home/thomp/acad")
(dired "/home/thomp/acad/papers")
)
((string-match "lisp" profile)
(setup-slime)
(lisp-miscellany)
(open-lisp-dirs)
)
((string-match "rpg" profile)
(find-file "/home/thomp/comp/lisp/rp-geneval/README")
(dired "/home/thomp/comp/lisp/rp-geneval/rp-geneval")
... etc.
Nếu bạn nhận thấy rằng bạn thường xuyên chuyển đổi qua lại giữa các nhóm tệp được sử dụng thường xuyên khác nhau khi làm việc, hãy cân nhắc sử dụng các phối cảnh và điền vào từng phối cảnh với nhóm tệp được sử dụng thường xuyên mong muốn.
Để lưu trữ / khôi phục bộ đệm / tab (cụ thể là tab elscreen): Tôi sử dụng elscreen và cách tôi quản lý việc lưu trữ / khôi phục phiên máy tính để bàn và cấu hình tab elscreen là đoạn mã sau trong tệp .emacs của tôi (các tên được sử dụng tự giải thích và nếu các chức năng lưu trữ / khôi phục không được thực thi mỗi khi emacs khởi động, chỉ cần ghi chú các dòng với "(push # 'elscreen-store kill-emacs-hook)" và "(elscreen-restore)"):
(defvar emacs-configuration-directory
"~/.emacs.d/"
"The directory where the emacs configuration files are stored.")
(defvar elscreen-tab-configuration-store-filename
(concat emacs-configuration-directory ".elscreen")
"The file where the elscreen tab configuration is stored.")
(defun elscreen-store ()
"Store the elscreen tab configuration."
(interactive)
(if (desktop-save emacs-configuration-directory)
(with-temp-file elscreen-tab-configuration-store-filename
(insert (prin1-to-string (elscreen-get-screen-to-name-alist))))))
(push #'elscreen-store kill-emacs-hook)
(defun elscreen-restore ()
"Restore the elscreen tab configuration."
(interactive)
(if (desktop-read)
(let ((screens (reverse
(read
(with-temp-buffer
(insert-file-contents elscreen-tab-configuration-store-filename)
(buffer-string))))))
(while screens
(setq screen (car (car screens)))
(setq buffers (split-string (cdr (car screens)) ":"))
(if (eq screen 0)
(switch-to-buffer (car buffers))
(elscreen-find-and-goto-by-buffer (car buffers) t t))
(while (cdr buffers)
(switch-to-buffer-other-window (car (cdr buffers)))
(setq buffers (cdr buffers)))
(setq screens (cdr screens))))))
(elscreen-restore)
emacs-configuration-directory
bằng user-emacs-directory
những gì Emacs đã cung cấp.
Có những cải tiến hữu ích mà bạn có thể thực hiện đối với tính năng cơ bản của máy tính để bàn. Đặc biệt tiện dụng (IMO) là các phương pháp tự động lưu màn hình trong suốt phiên làm việc, vì nếu không, nếu hệ thống của bạn gặp sự cố, bạn sẽ bị mắc kẹt với tệp máy tính để bàn mà bạn đã bắt đầu phiên đó - khá khó chịu nếu bạn có xu hướng để Emac chạy nhiều ngày tại một thời điểm.
http://www.emacswiki.org/emacs/DeskTop
Wiki cũng có thông tin hữu ích về dữ liệu liên tục giữa các phiên nói chung:
http://www.emacswiki.org/emacs/SessionManagement
Đối với máy tính để bàn cụ thể, tôi nghĩ rằng Desktop Recover trông đặc biệt hứa hẹn, tuy nhiên tôi vẫn chưa dùng thử.
(find-file-noselect "/my/file")
sẽ mở nó một cách im lặng, tức là w / o nâng bộ đệm. Chỉ nói.
CHỈNH SỬA Lệnh này không tương tác ; Để kiểm tra nó, bạn phải đánh giá biểu thức, ví dụ bằng cách đặt con trỏ sau dấu ngoặc đơn cuối cùng và nhấn Cx Ce
Từ chối điều này không phải là mát mẻ ; lệnh này chắc chắn hoạt động và nằm trong phạm vi của câu hỏi.