Tôi có thể đặt một tệp cụ thể thành tự động và âm thầm chấp nhận thay đổi không?


9

Đó là, tôi có thể chỉ định cho một tệp cụ thể mà tôi không muốn Emacs thông báo cho tôi rằng tệp đã thay đổi trên đĩa và nhắc tôi về việc tôi có muốn chấp nhận thay đổi hay không? Tôi không muốn làm điều này trên toàn cầu, chỉ với các tệp tôi biết sẽ thường xuyên được thay đổi bên ngoài Emacs (đặc biệt là các tệp Org liên quan đến lịch).

Câu trả lời:


8

Bạn có thể làm điều này cho một bộ đệm cụ thể với M-x auto-revert-mode( thủ công ). Đối với bộ đệm tệp, điều này sẽ kiểm tra mỗi auto-revert-intervalgiây (mặc định là 5) để biết các thay đổi và tự động cập nhật bộ đệm từ đĩa.

Tiêu đề của bạn nói "một tệp cụ thể" trong khi phần thân câu hỏi của bạn đề cập đến một loại tệp (tệp org). Tùy thuộc vào hoàn cảnh của bạn, đây là một vài cách bạn có thể đặt chế độ này để đạt được hiệu quả mong muốn một cách bền bỉ. Các phương pháp trước đó được cho là sạch hơn và hiệu quả hơn nếu chúng áp dụng cho trường hợp sử dụng cụ thể của bạn.

Nếu bạn biết bạn muốn điều này cho mọi tệp thuộc một loại nhất định, hãy xem xét thêm móc chế độ vào thiết lập init của bạn.

(add-hook 'org-mode-hook (lambda () (auto-revert-mode 1)))

Nếu bạn biết bạn muốn nó cho mọi thứ trong một thư mục nhất định, hãy xem xét đặt nó trong .dir-locals.el ở vị trí có liên quan, đảm bảo VCS bỏ qua tệp cài đặt cục bộ nếu thích hợp. Ví dụ này sẽ áp dụng cho tất cả các bộ đệm chế độ org cho các tệp trong cùng thư mục (và thư mục con). Bạn cũng có thể chạy M-x add-dir-local-variableđể tạo Emacs và lưu cái này cho bạn tự động.

(
  (org-mode . ((auto-revert-mode . 1)))
 )

Nếu cả hai cách tiếp cận trên đều không phù hợp với bạn, hãy xem xét một biến cục bộ của tệp được đặt trong mỗi tệp. Cách ngắn nhất, chung nhất để đặt một trong số này là bao gồm các mục sau trong dòng đầu tiên của tệp đích:

-*- eval: (auto-revert-mode 1); -*-

Trong các tệp nguồn, văn bản có thể theo dấu phân cách nhận xét (//, #, v.v.). Bạn có thể chạy M-x add-file-local-variable-proplineđể Emacs tự động tạo cái này cho bạn hoặc M-x add-file-local-variablecho một định dạng sử dụng dưới cùng của tệp của bạn thay vì trên cùng.

Chỉ sử dụng phương pháp này nếu bạn không chia sẻ tệp với bất kỳ ai khác. Từ hướng dẫn GNU :

Nó thường là một sai lầm khi chỉ định các chế độ nhỏ theo cách này. Các chế độ nhỏ thể hiện tùy chọn người dùng cá nhân và có thể không phù hợp để áp đặt tùy chọn của bạn cho người dùng khác có thể chỉnh sửa tệp. Nếu bạn muốn tự động kích hoạt hoặc vô hiệu hóa một chế độ nhỏ theo cách phụ thuộc vào tình huống, thì tốt hơn là thực hiện nó trong một móc chế độ chính.


2
Không phải là (auto-revert-mode 1)một cách chính tắc để bật một chế độ nhỏ thay vì setq?
mbork

1
Vâng bạn đã đúng. Làm sạch ví dụ đó trong một giây. Cảm ơn.
Mian

1
Không có gì. (Điều đó nói rằng, AFAIU, các biến cục bộ của tệp phù hợp nhất cho trường hợp sử dụng của OP.)
mbork

1
Bạn có thể đúng. IMO nó phụ thuộc vào các chi tiết của tổ chức tập tin của họ. Nếu các tệp mà họ biết sẽ thường xuyên được thay đổi bên ngoài emacs đều là các tệp org hoặc tất cả đều ở cùng một nơi (ví dụ: thư mục Dropbox), cách tiếp cận dựa trên chế độ hoặc thư mục có thể sạch hơn và dễ dàng hơn, và sẽ tránh làm lộn xộn các tập tin của họ như là một phần thưởng.
Mian

2
Để giao diện với cả hai phương thức này, có add-file-local-variableadd-dir-local-variable.
Sean Allred

3

Đúng. Đặt cái này ở cuối tập tin của bạn.

* COMMENT Config
Local Variables:
eval: (auto-revert-mode 1)
End:

Giả định này là chế độ Org, đối với các chế độ khác, sử dụng nhận xét bằng ngôn ngữ được sử dụng như được giải thích trong liên kết được cung cấp bên dưới.

Lưu ý: xem Biến cục bộ trong Tệp trong hướng dẫn để biết thông tin cơ bản, thông tin an toàn và cảnh báo rằng điều này có thể không phải lúc nào cũng là một ý tưởng hay. Ngoài ra, phần hoàn nguyên nói ví dụ: cách thay đổi khoảng thời gian 5 giây mặc định để tự động hoàn nguyên.


Điều này hoàn toàn cần phải được ở cuối? Tôi có một tập lệnh đang tạo các tệp .org và tôi đã đặt nó vào gần đầu - có vẻ như không hoạt động ....
emacsomancer

1
Vâng, xem liên kết. Và xem các câu trả lời khác cho một giải pháp đầu tiên.
mbork
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.