2

バッファがファイルと等しいが変更済みとしてマークされている場合に、バッファ変更フラグをリセットする方法はありますか? この場合、emacs に保存を求められないようにしたいと思います。

4

3 に答える 3

2

diffインストール済みであれば、次のようになります。

(defun my-update-modified-flag ()
  "Update the buffer modified flag."
  (interactive)
  (let* ((buffer (current-buffer))
         (basefile
          (or (buffer-file-name buffer)
              (error "Buffer %s has no associated file" buffer)))
         (tempfile (make-temp-file "buffer-content-")))
    (with-current-buffer buffer
      (save-restriction
        (widen)
        (write-region (point-min) (point-max) tempfile nil 'silent)))
    (if (= (call-process "diff" nil nil nil basefile tempfile) 0)
        (progn
          (set-buffer-modified-p nil)
          (message "Buffer matches file"))
      (message "Buffer doesn't match file"))
    (delete-file tempfile)))
于 2012-07-12T13:28:15.450 に答える
1

次の式を使用できます。

(set-buffer-modified-p nil)

注意してください!バッファが実際に変更された場合でもフラグをクリアします。

于 2012-07-12T07:22:21.817 に答える