2

特定の「保護された」ディレクトリ内のファイルに対してのみ、ファイルを保存するかどうかをユーザーに尋ねる追加のプロンプトを追加したいと思います。file-needs-protection-pファイル名を受け取り、そのファイルを保存する前にユーザーに問い合わせる必要がある場合は t を返す関数があるとします。ユーザーがそのようなファイルを保存しようとしたときにEmacsに何かを尋ね"This file is protected. Are you sure you want to modify it?"させ、ユーザーがノーと答えた場合にEmacsに保存を中止させるにはどうすればよいですか?

を使用する関数を追加できる特別なフックがどこかにあるといいyes-or-no-pのですが、関数が false を返した場合、Emacs は保存を中止しますか?

4

2 に答える 2

5

before-save-hookテストされていませんが、テストを実行して質問をするために使用できるはずであり、ノーと答えた場合は単にエラーを発生させる必要があると思います:

(error "Save aborted by user")
于 2012-06-21T01:34:39.900 に答える
0

すでにお持ちの場合file-needs-protection-p、残りは簡単だと思います。

(defun save-buffer-check 
  "If the current buffer is a protected file, query the user before saving."
  (if (file-needs-protection-p (buffer-file-name))
      (if (y-or-n-p 
           "This file is protected. Are you sure you want to modify it?")
          (save-buffer))
    (save-buffer)))

それをに再バインドしてC-x C-s、必要な動作をするかどうかを確認します。特別なフックやアドバイスは必要ないと思います。呼び出す前に、save-bufferまたは何もせずに戻る前に、述語への呼び出しを挿入する関数だけです。

于 2012-06-21T01:18:35.650 に答える