有没有办法在缓冲区等于文件但被标记为已修改时重置缓冲区修改标记? 在这种情况下,我希望Emacs不要询问我是否保存。
unmodified-buffer.el
combine-after-change-calls
以便Emacs可以更高效地处理'after-change-functions
钩子。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)))
kill-buffer-query-functions
上怎么样? - event_jr(set-buffer-modified-p nil)
not-modified
,绑定在M-~
上。详见http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#index-M_002d_007e-995。 - tripleee
M-x package-install RET unmodified-buffer
通过 MELPA 安装了 Arthur 的 unmodified-buffer.el 包,然后在我的初始化文件中添加了(require 'unmodified-buffer)
和(add-hook 'after-init-hook 'unmodified-buffer-global-mode)
这两行代码以启用它,它工作得很好! - mareoraft