Como desativar o salvamento automático no emacs apenas para arquivos abertos como raiz

8

Eu quero usar o recurso de salvamento automático do emacs com o tramp, mas apenas para arquivos que não abro usando o sudo. Minha configuração atual, com base na documentação do tramp , fica assim:

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

É proibido criar backups remotos de arquivos editados como superusuário, mas os arquivos salvos automaticamente ainda são criados na minha máquina local. Existe alguma maneira de desativar isso sem desativar o salvamento automático?

radiante
fonte

Respostas:

2

O backup e o salvamento automático são operações diferentes, controladas por diferentes variáveis.

Se você deseja descartar o salvamento automático de arquivos abertos como raiz, você pode alterar a variável buffer-local auto-save-file-name-transforms. Algo assim (não testado):

(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
fonte
Se você colocar isso no .emacsarquivo dos usuários , ele não será lido se o emacs for aberto com a sudocorreção? Então, quando esse código estaria em vigor?
Startec
Eu não entendo sua pergunta. Tudo no ~ / .emacs é avaliado no início do Emacs, a menos que você inicie o Emacs com a opção -Q ou similar.
22816 Michael Albinus
Desculpe, eu quis dizer que a abertura emacscom sudo emacsnão leria o arquivo de configuração no diretório inicial dos usuários. Sei que agora essa provavelmente é uma boa resposta para quando algo é aberto como sudo a partir de uma instância do emacs aberta como usuário.
Startec
Qual variável verificaria se o arquivo foi aberto como raiz? (ou seja, aberto com o /sudo::/método tramp)?
Startec
default-directoryé uma variável local do buffer, que informa o diretório atual desse buffer. (file-remote-p default-directory)retorna não nulo, quando você é remoto. (file-remote-p default-directory 'user)fornece o nome de usuário remoto, "root"por exemplo.
Michael Albinus