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.