Cách tắt tự động lưu trong emacs chỉ cho các tệp được mở dưới dạng root


8

Tôi muốn sử dụng tính năng tự động lưu emacs với tramp, nhưng chỉ cho tệp mà tôi không mở bằng sudo. Cấu hình hiện tại của tôi, dựa trên tài liệu về tramp , trông như thế này:

;;;;;;;; BAKUCP ;;;;;;;;
;; Backup remote files locally to stop autosave pain
(setq tramp-backup-directory "~/.emacs-backup")
(unless (file-directory-p tramp-backup-directory)
  (make-directory tramp-backup-directory))
(if (file-accessible-directory-p tramp-backup-directory)
    (setq tramp-auto-save-directory tramp-backup-directory)
  (error "Cannot write to ~/.emacs-backup"))
;; Don't backup su and sudo files
(setq backup-enable-predicate
      (lambda (name)
        (and (normal-backup-enable-predicate name)
             (not
              (let ((method (file-remote-p name 'method)))
                (when (stringp method)
                  (member method '("su" "sudo"))))))))

Nghiêm cấm tạo các bản sao lưu từ xa của các tệp được chỉnh sửa thành siêu người dùng nhưng các tệp được lưu tự động vẫn được tạo trên máy cục bộ của tôi. Có cách nào để vô hiệu hóa mà không vô hiệu hóa tự động lưu không?

Câu trả lời:


2

Sao lưu và tự động lưu là các hoạt động khác nhau, được kiểm soát bởi các biến khác nhau.

Nếu bạn muốn loại bỏ tự động lưu cho các tệp được mở dưới dạng root, bạn có thể thay đổi biến cục bộ đệm auto-save-file-name-transforms. Một cái gì đó như thế này (chưa được kiểm tra):

(add-hook
 'find-file-hook
 (lambda ()
   (when (and (stringp buffer-file-name)
          (string-equal (file-remote-p buffer-file-name 'user) "root"))
     (setq buffer-auto-save-file-name nil))))

Nếu bạn đặt nó trong .emacstệp của người dùng , nó sẽ không được đọc nếu emacs được mở sudomặc dù đúng? Vậy khi nào thì mã này sẽ có hiệu lực?
Bắt đầu

Tôi không hiểu câu hỏi của bạn. Mọi thứ trong ~ / .emacs được đánh giá khi bắt đầu Emacs, trừ khi bạn bắt đầu Emacs với tùy chọn -Q hoặc tương tự.
Michael Albinus

Xin lỗi, tôi có nghĩa là mở emacsbằng sudo emacssẽ không đọc tệp cấu hình trong thư mục chính của người dùng. Tôi nhận ra bây giờ đây có lẽ là một câu trả lời tốt khi một cái gì đó được mở dưới dạng sudo từ một ví dụ của emacs được mở dưới dạng người dùng.
Bắt đầu

Biến nào sẽ kiểm tra nếu tập tin được mở dưới dạng root? (tức là mở bằng /sudo::/phương pháp tramp)?
Bắt đầu

default-directorylà một biến cục bộ đệm, cho bạn biết thư mục hiện tại của bộ đệm đó. (file-remote-p default-directory)trả về không, khi bạn ở xa. (file-remote-p default-directory 'user)cung cấp cho bạn tên người dùng từ xa, "root"ví dụ.
Michael Albinus
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.