Emacs 对文件集的函数

Emacs 对文件集的函数

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.eldired-map-over-marks-check函数 from dired-aux.el

(dired-map-over-marks-check indent-buffer nil 'indent)

相关内容