rootとして開かれたファイルに対してのみ、emacsで自動保存を無効にする方法


8

emacsの自動保存機能をtrampで使用したいのですが、sudoを使用して開かないファイルに対してのみです。私の現在の設定は、trampのドキュメントに基づいており、次のようになります:

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

スーパーユーザーとして編集されたファイルのリモートバックアップを作成することは禁止されていますが、自動保存されたファイルは引き続きローカルマシンに作成されます。自動保存をまったく無効にせずにそれを無効にする方法はありますか?

回答:


2

バックアップと自動保存は、さまざまな変数によって制御されるさまざまな操作です。

ルートとして開かれたファイルの自動保存を破棄したい場合は、バッファローカル変数を変更することができますauto-save-file-name-transforms。このようなもの(試されていない):

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

これをユーザーの.emacsファイルに入れた場合、emacsがsudo正しいのに開かれていると読み込まれませんか?では、このコードはいつ有効になるのでしょうか?
Startec

質問が理解できません。〜/ .emacsのすべては、Emacsを-Qまたは同様のオプションで起動しない限り、Emacsの起動時に評価されます。
Michael Albinus

申し訳ありませんが、で開いemacssudo emacsもユーザーのホームディレクトリにある構成ファイルは読み取られません。これはおそらく、ユーザーとして開かれたemacsのインスタンスから何かがsudoとして開かれたときの良い答えだと思います。
Startec

ファイルがルートとして開かれたかどうかを確認する変数は何ですか?(つまり、/sudo::/trampメソッドで開かれます)?
Startec

default-directoryバッファーローカル変数で、そのバッファーの現在のディレクトリを示します。(file-remote-p default-directory)リモートの場合、nil以外を返します。たとえば(file-remote-p default-directory 'user)、リモートユーザー名を指定"root"します。
Michael Albinus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.