外部lisp代码压缩器

vyo*_*yom 5 lisp indentation

我有一些类似lisp/scheme的代码,我想缩进.我搜索了像GNU这样的工具indent,但我找不到任何命令行实用程序/脚本.有很多可用于C/C++/Java,但不知何故我无法找到任何lisp/scheme,任何人都可以告诉我任何这样的缩进工具(如果可用).

谢谢.

ffe*_*tte 3

您可以emacs在批处理模式下使用。例如,您可以创建一个文件indent.el

(defun my/indent-file (fPath)
  (let ((buffer (find-file fPath)))
    (message (concat "indenting file " fPath))
    (indent-region (point-min) (point-max))
    (save-buffer)
    (kill-buffer buffer)))

(mapcar 'my/indent-file argv)
Run Code Online (Sandbox Code Playgroud)

然后像这样调用 emacs 来缩进一堆文件(请注意,它适用于 emacs 可以识别并知道如何缩进的任何语言):

(defun my/indent-file (fPath)
  (let ((buffer (find-file fPath)))
    (message (concat "indenting file " fPath))
    (indent-region (point-min) (point-max))
    (save-buffer)
    (kill-buffer buffer)))

(mapcar 'my/indent-file argv)
Run Code Online (Sandbox Code Playgroud)

例如,请参阅此页面以获取有关用于emacs批处理的惯用方法的更多信息。

编辑

这是一个单行代码,仅适用于一个文件,但不使用argv变量(注意:参数顺序很重要):

emacs --batch MY_FILE --eval '(indent-region (point-min) (point-max))' -f 'save-buffer' 
Run Code Online (Sandbox Code Playgroud)