Answers:
不幸的是,这种精确的行为在Emacs <= 24.3中是不可能的,但是您可以使用来保存窗口/缓冲区的更改defadvice
(如bbatsov的博客中所述):
(defadvice switch-to-buffer (before save-buffer-now activate)
(when (and buffer-file-name (buffer-modified-p)) (save-buffer)))
(defadvice other-window (before other-window-now activate)
(when (and buffer-file-name (buffer-modified-p)) (save-buffer)))
在Emacs 24.4中,由于有了新的聚焦钩子,您还可以节省帧聚焦损失:((add-hook 'focus-out-hook 'save-buffer)
保存活动缓冲区)或(add-hook 'focus-out-hook (lambda () (save-some-buffers t)))
(保存所有打开的缓冲区)。
(add-hook 'focus-out-hook (lambda () (flet ((message (format &rest args) nil)) (save-some-buffers t))))
还有focus-autosave-mode
现在。可通过MELPA获得。为什么不给它一个为您做黑客的机会‽
(add-to-list 'focus-out-hook (lambda () (save-some-buffers t nil)))
这将在emacs 24.4上保存所有未保存的缓冲区访问文件
add-to-list
在挂钩上使用,请使用add-hook
。shosti的答案已经包含此片段的正确形式。
defadvice
如果博客文章出现问题,您可以在版本上进行扩展吗?谢谢!