Cara menonaktifkan simpan otomatis di emacs hanya untuk file yang dibuka sebagai root

8

Saya ingin menggunakan fitur auto-save emacs dengan tramp, tetapi hanya untuk file yang saya tidak buka menggunakan sudo. Konfigurasi saya saat ini, berdasarkan pada dokumentasi tramp , terlihat seperti ini:

;;;;;;;; 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"))))))))

Itu dilarang membuat backup jarak jauh dari file yang diedit sebagai superuser tetapi file yang disimpan otomatis masih dibuat di mesin lokal saya. Apakah ada cara untuk menonaktifkannya tanpa menonaktifkan simpan otomatis sama sekali?

berseri-seri
sumber

Jawaban:

2

Cadangkan dan simpan otomatis adalah operasi yang berbeda, dikendalikan oleh variabel yang berbeda.

Jika Anda ingin membuang penyimpanan otomatis untuk file yang dibuka sebagai root, Anda dapat mengubah variabel buffer-local auto-save-file-name-transforms. Sesuatu seperti ini (belum diuji):

(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))))
Michael Albinus
sumber
Jika Anda meletakkan ini di file pengguna .emacs, itu tidak akan dibaca jika emacs dibuka dengan sudobenar? Jadi kapan kode ini berlaku?
Startec
Saya tidak mengerti pertanyaan Anda. Segala sesuatu di ~ / .emacs dievaluasi pada awal Emacs, kecuali jika Anda memulai Emacs dengan opsi -Q atau yang serupa.
Michael Albinus
Maaf, maksud saya membuka emacsdengan sudo emacsitu tidak akan membaca file konfigurasi di direktori home pengguna. Saya menyadari sekarang ini mungkin jawaban yang baik ketika sesuatu dibuka sebagai sudo dari instance emacs yang dibuka sebagai pengguna.
Startec
Variabel apa yang akan memeriksa apakah file dibuka sebagai root? (Yaitu dibuka dengan /sudo::/metode gelandangan)?
Startec
default-directoryadalah variabel buffer-local, yang memberitahu Anda direktori saat ini dari buffer itu. (file-remote-p default-directory)mengembalikan non-nil, ketika Anda jauh. (file-remote-p default-directory 'user)memberi Anda nama pengguna jarak jauh, "root"misalnya.
Michael Albinus