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?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.