Cómo deshabilitar el guardado automático en emacs solo para archivos abiertos como root

8

Quiero usar la función de guardado automático de emacs con vagabundo, pero solo para el archivo que no abro usando sudo. Mi configuración actual, basada en la documentación del vagabundo , se ve así:

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

Está prohibido crear copias de seguridad remotas de archivos editados como superusuario, pero los archivos guardados automáticamente todavía se crean en mi máquina local. ¿Hay alguna forma de desactivar eso sin desactivar el guardado automático?

radiante
fuente

Respuestas:

2

La copia de seguridad y el guardado automático son operaciones diferentes, controladas por diferentes variables.

Si desea descartar el guardado automático de los archivos abiertos como root, puede cambiar la variable local del búfer auto-save-file-name-transforms. Algo como esto (no probado):

(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
fuente
Si coloca esto en el .emacsarchivo de los usuarios , ¿no se leerá si se abre emacs sudoaunque es correcto? Entonces, ¿cuándo estaría vigente este código?
Startec
No entiendo tu pregunta. Todo en ~ / .emacs se evalúa al inicio de Emacs, a menos que inicie Emacs con la opción -Q o similar.
Michael Albinus
Lo siento, quise decir que abrir emacscon sudo emacsno leería el archivo de configuración en el directorio de inicio de los usuarios. Ahora me doy cuenta de que esta es probablemente una buena respuesta para cuando algo se abre como sudo desde una instancia de emacs abierta como usuario.
Startec
¿Qué variable verificaría si el archivo se abrió como root? (es decir, abierto con el /sudo::/método de vagabundo)?
Startec
default-directoryes una variable local de búfer, que le indica el directorio actual de ese búfer. (file-remote-p default-directory)devuelve no nulo, cuando está alejado. (file-remote-p default-directory 'user)le da el nombre de usuario remoto, "root"por ejemplo.
Michael Albinus