如何在Aquamacs Emacs中创建“静默保存所有缓冲区”的命令?
我发现命令save-some-buffers
很好,但问题是它分别提示我确认我要保存的每个缓冲区。
通过谷歌搜索我找到了一个名为save-silently-p
的变量的文档但似乎不存在(在Aquamacs 2.4版中,即Emacs 23.3.50.1)。
那么如何让它在没有提示的情况下以静默方式保存所有缓冲区呢?
答案 0 :(得分:18)
您无需设置任何自定义变量,只需:
C-u C-x s
或者长篇:
Ctrl + u Ctrl + x s
此外,您可以执行C-x s
并在提示符处按!
,对所有可保存文件缓冲区均为“是”。这不是严格保密的,但它仍然非常快/不显眼。 (信用:@phils)
答案 1 :(得分:11)
如果您将非零传递给save-some-buffers
,它会在没有提示的情况下保存所有文件,因此您可以执行类似
(defun save-all () (interactive) (save-some-buffers t))
(global-set-key (kbd "C-S") 'save-all)
答案 2 :(得分:3)
来自save-some-buffers
的信息页面:
(保存一些缓冲区和可选的ARG PRED)
保存一些修改过的文件访问缓冲区。向用户询问每一个。 在决定或
y' to save,
diff-buffer-with-file'之前,您可以回答C-r' to look at the buffer in question with
n'不保存d' to view the differences using
view-buffer'。此命令首先保存所有缓冲区,其中“buffer-save-without-query” 是非零的,没有问。
因此,您应该为所有文件将变量buffer-save-without-query
设置为t
(例如)。 (add-hook 'find-file-hook (lambda () (setq buffer-save-without-query t)))
应该做到这一点。
答案 3 :(得分:3)
在此示例中,第一个参数设置为non-nil
值 - “ [o] ptional参数(前缀)non-nil
表示全部保存没有问题。“虽然它可能只是简单的t
,但我选择构成一个更有意义的符号来提醒自己它代表什么 - 即'no-confirm
。如果我想收到确认对话框,那么我会使用nil
作为第一个参数。有关第一个参数是M-x describe-function RET save-some-buffers RET
还是nil
1>}的详细信p>
以下示例使用non-nil
和第二个参数的自定义零参数函数 - 即 PRED - 选择应保存哪些缓冲区。 save-some-buffers
的文档字符串声明第二个参数 - 即 PRED - 可能是三种可能性之一 - (1) 如果 PRED 为save-some-buffers
,则会考虑所有文件访问缓冲区; (2)如果 PRED 为nil
,则还会考虑某些非文件缓冲区;或(3)如果PRED 是一个零参数函数,它表示每个缓冲区在使用该缓冲区当前调用时是否考虑它。
该示例使用t
的键盘快捷键,但用户可以自由地以交互方式调用此自定义函数 - f5
- 或完全指定其他键盘快捷键。有一些可能的匹配已经硬编码,用户可以自由添加/删除/修改条件:
•file-visiting-buffer + 文件名与变量M-x my-save-some-buffers
的值匹配。
•文件访问缓冲区 + 来自内置abbrev-file-name
- 而非 AUCTeX的主要模式为latex-mode
。< / p>
•文件访问缓冲区 + 主要模式为tex-mode.el
。
•文件访问缓冲区 + 主要模式为markdown-mode
。
•文件访问缓冲区 + 派生模式为emacs-lisp-mode
。
org-mode