Làm cách nào để chế độ Recentf hoạt động với máy chủ / máy khách emacs?


9

Tôi thích sử dụng recentf chế độ trong Emacs tạo danh sách các tệp tôi đã mở gần đây. Danh sách này là liên tục giữa các phiên, vì vậy tôi có thể nhận được các tệp mà tôi đã sử dụng cách đây khá lâu.

Tuy nhiên, gần đây tôi đã bắt đầu sử dụng Emacsclient để kết nối với máy chủ Emacs được bật tự động khi tôi đăng nhập. Nhìn chung, đây là một cải tiến lớn. Tuy nhiên, recentfchế độ bắt đầu thiếu hầu hết các tệp tôi đã mở bất cứ khi nào tôi khởi động lại máy tính. Nó nhớ một số trong số chúng và tôi không thể thấy một mẫu trong đó các tệp được ghi lại.

Làm thế nào tôi có thể sửa chữa hành vi này? Làm cách nào tôi có thể lấy nó để ghi lại tất cả các tệp tôi truy cập và ghi nhớ chúng giữa các phiên?


3
Tôi có cùng một vấn đề, sẽ rất tuyệt khi thấy một giải pháp!
sinh viên

Tôi đã thử điều này bằng cách sử dụng emacs -nw, tải máy chủ và Recentf, sau đó chạy recentf-mode 1server-starttheo thứ tự đó và không thể tái tạo vấn đề của bạn. Bạn có thể đăng tệp .emacs của mình ở đâu đó (chẳng hạn như pastebin) cùng với một ví dụ về cách bạn bắt đầu emacs và emacsclient không?
jlp

Đây là tập tin .emacs của tôi . Tôi đang sử dụng Fedora và tôi đã cài đặt Emacs với Yum; nó đã tạo ra một launcher cho Emacs Client và đó là những gì tôi sử dụng. Các launcher chỉ chạy emacsclient -c --alternate-editor="" %f. Vấn đề có thể là do tôi không đóng Emacs trước khi tắt máy tính, nhưng tôi không chắc. Giết thủ công Emacs trước khi tắt có vẻ giúp ích, nhưng đó không phải là một giải pháp tuyệt vời.
Tikhon Jelvis

Hmmm, tôi không thấy máy chủ khởi động trong .emacs của bạn, tôi cho rằng nó đã bắt đầu với --daemon khi bạn đăng nhập. Tôi nghi ngờ một số loại vấn đề đặt hàng khi bật Recentf và khởi động máy chủ.
jlp

Câu trả lời:


8

Tôi đã có vấn đề chính xác như vậy và tôi đã giải quyết nó bằng cách thực hiện hai thay đổi. Đầu tiên sau bài đăng này , tôi đã tạo một chức năng để tự động gọi recentf-save-listtrên bộ đếm thời gian. Do đó cứ sau vài phút, chúng tôi sẽ tự động viết lại tệp ~ / .recentf:

(run-at-time nil (* 5 60) 'recentf-save-list)

Một điều khác tôi đã làm là thêm một kịch bản tắt máy vào trình quản lý hiển thị của mình (lightdm) để đóng máy chủ emacs một cách duyên dáng mỗi khi tôi đăng xuất hoặc tắt máy. Cách bạn làm điều này sẽ phụ thuộc vào trình quản lý hiển thị của bạn, nhưng tập lệnh của tôi chỉ đơn giản là trông giống như

#!/bin/bash
emacsclient -e "(save-buffers-kill-emacs)"

Cũng thật tốt khi có một hook tự động chạy lại recentf-save-listmỗi khi máy khách "ngắt kết nối" khỏi máy chủ, nhưng tôi không thể tìm ra các hook thích hợp.


2
Đó là server-done-hook. Cá nhân tôi sử dụngserver-visit-hook
tungd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.