Come disabilitare il salvataggio automatico in emacs solo per i file aperti come root


8

Voglio usare la funzione di salvataggio automatico di emacs con vagabondo, ma solo per i file che non apro usando sudo. La mia configurazione attuale, basata sulla documentazione del vagabondo , è simile alla seguente:

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

È vietato creare backup remoti di file modificati come superutente, ma i file salvati automaticamente vengono comunque creati sul mio computer locale. C'è un modo per disabilitarlo senza disabilitare affatto il salvataggio automatico?

Risposte:


2

Il backup e il salvataggio automatico sono operazioni diverse, controllate da variabili diverse.

Se si desidera eliminare il salvataggio automatico per i file aperti come root, è possibile modificare la variabile buffer-local auto-save-file-name-transforms. Qualcosa del genere (non testato):

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

Se lo metti nel .emacsfile degli utenti , non verrà letto se emacs viene aperto con sudosebbene corretto? Quindi, quando dovrebbe entrare in vigore questo codice?
Startec,

Non capisco la tua domanda. Tutto in ~ / .emacs viene valutato all'inizio di Emacs, a meno che non si avvii Emacs con l'opzione -Q o simile.
Michael Albinus,

Spiacenti, intendevo dire che l'apertura emacscon sudo emacsnon avrebbe letto il file di configurazione nella home directory degli utenti. Ora capisco che questa è probabilmente una buona risposta per quando qualcosa viene aperto come sudo da un'istanza di emacs aperta come utente.
Startec,

Quale variabile verificherebbe se il file fosse aperto come root? (cioè aperto con il /sudo::/metodo del vagabondo)?
Startec,

default-directoryè una variabile buffer-locale, che indica la directory corrente di quel buffer. (file-remote-p default-directory)restituisce un valore nullo, quando si è remoti. (file-remote-p default-directory 'user)ti dà il nome utente remoto, "root"per esempio.
Michael Albinus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.