Emacs 中是否有一种方法可以将函数应用于一组文件? (或者,如果没有,您知道这样的扩展吗?)
例如,如果目录中有一个项目(例如,要编译和运行的脚本、源代码和 XML 数据库)。您想要对所有这些文件一一运行此函数:
(defun indent-buffer ()
"Indent the whole buffer according to indent-region-function."
(interactive)
(indent-region (point-min) (point-max)) )
至少在某种程度上使情况变得复杂的是,Emacs 必须处于正确的模式才能明智地执行这样的功能,尽管这肯定不是不可能的。
最酷的界面是使用 Emacs 作为服务器,然后发送命令和文件列表作为参数。
如果可以在 Dired 中完成的话,这是第二好的。
答案1
在批处理模式下,循环遍历参数。
emacs --batch -l cl --eval '
(dolist (filename command-line-args-left)
(find-file filename)
(indent-region (point-min) (point-max))
(save-buffer)
(kill-buffer))'
从 dired 中,使用dired-map-over-marks
宏 fromdired.el
或dired-map-over-marks-check
函数 from dired-aux.el
。
(dired-map-over-marks-check indent-buffer nil 'indent)