Hãy nhớ sự cho phép để thực hiện các biến cục bộ rủi ro


15

Trong nhiều dự án của tôi, tôi sử dụng .dir-locals.elcác tệp để thiết lập các biến cụ thể của dự án, chẳng hạn như các lệnh biên dịch. Khi mở một tệp trong thư mục chứa tệp đó, hãy emacsphàn nàn về "các biến cục bộ rủi ro" , cụ thể:

The local variables list in $DIR$/ contains variables that are risky (**)

Do you want to apply it? You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.

** LaTeX-command : "lualatex -shell-escape"

Tôi không muốn tắt tính năng này nhưng tôi chỉ muốn được yêu cầu một lần (trong phiên emacs) cho một .dir-locals.eltệp cụ thể .

Tôi đang sử dụng một số plugin muốn phân tích toàn bộ tài liệu và khá khó chịu khi phải đánh yhàng trăm lần chỉ để phân tích mọi thứ.

Vì vậy, câu hỏi thực tế:

Có thể emacs'cơ chế tải địa phương biến được cấu hình / sửa đổi như vậy mà nó cho phép để cho phép / từ chối tải một danh sách các biến địa phương cụ thể cho toàn bộ một emacsphiên?

Câu trả lời:


7

Emacs nên cung cấp (và thường không cung cấp) tùy chọn chấp nhận và ghi nhớ lựa chọn cho các phiên sau. Tôi đề nghị bạn M-x report-emacs-bugvề sự lựa chọn còn thiếu này trong trường hợp của bạn.

Trong lúc này, bạn có thể thêm các mục sau vào ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))

4
Không có tùy chọn để nhớ không phải là một lỗi, đó là cố ý cho các biến rủi ro. Nếu biến không nằm trong danh sách an toàn thì Emacs sẽ báo cáo rằng nó có thể không an toàn và nhanh chóng với các tùy chọn y / n cộng! nhớ. Nếu tên biến khớp với một biểu thức chính quy nhất định thì nó được coi là rủi ro và bạn chỉ được cung cấp các tùy chọn y / n. Regex để xác định xem có thứ gì đó có rủi ro hay không trong tệp .el tại github.com/emacs-mirror/emacs/blob/
Dan Midwood

Có thể nó đã được thực hiện có chủ ý, nhưng tôi nghĩ rằng nó đã bị nhầm lẫn và OP dường như đồng ý, vì vậy tôi nghĩ rằng nó xứng đáng là một báo cáo lỗi.
Stefan

2

Bạn có thể tắt tính năng "không nhớ các biến rủi ro" này bằng cách đặt các mục sau vào ~/.emacs:

;; allow remembering risky variables
(defun risky-local-variable-p (sym &optional _ignored) nil)

Sau đó, nó sẽ chỉ xác nhận lại khi bạn chỉnh sửa.


1
Bạn cũng có thể làm (advice-add 'risky-local-variable-p :override #'ignore), có lợi thế là không thể hoàn tác thông qua advice-remove.
npostavs
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.