我有一些类似于Lisp/Scheme的代码需要缩进。我搜索了像GNU
谢谢。
indent
这样的工具,但是我找不到任何命令行实用程序/脚本。虽然有很多可用于C/C++/Java的工具,但我无法找到任何用于Lisp/Scheme的工具。如果有这样的缩进工具,请问有人能告诉我吗?谢谢。
indent
这样的工具,但是我找不到任何命令行实用程序/脚本。虽然有很多可用于C/C++/Java的工具,但我无法找到任何用于Lisp/Scheme的工具。如果有这样的缩进工具,请问有人能告诉我吗?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)
然后以这种方式调用emacs来对一堆文件进行缩进(注意,对于任何语言emacs都能识别并知道如何缩进):
emacs --load indent.el --batch MY_LISP_FILES
emacs
进行批处理的惯用方式的更多信息。
编辑
以下是一个一行命令,仅适用于一个文件,但不使用argv
变量(请注意:参数顺序很重要):emacs --batch MY_FILE --eval '(indent-region (point-min) (point-max))' -f 'save-buffer'
lispindent2.lisp
,它基本上是Dorai的原始缩进器lispindent.lisp
在此基础上进行了一些调整。 lispindent2.lisp
是一个批处理模式缩进器,与原始缩进器一样精简(增加了约65行代码),但仍然能够美观地进行缩进。lisp
这样的东西了!但是在那个时候,当我在研究它时,我最终自己用C写了一个!:-/ 如果yasi当时可用,我肯定会使用它!现在我知道了,我会收藏它 :) - AniC
版本(任何能够在C
中制作出可行的文本处理程序的人都是我的偶像)。 - Plakhoyvim/emacs
中找到了许多例子,但我特别想要一个外部实用程序 - 可以批量运行。我知道vim
和emacs
有批处理模式 - 但单独的实用程序会更好。 - Ani
Symbol's value as variable is void: argv
。我不是一个emacs
用户,也不确定如何调试它。我看到很多建议,比如使用emacs
,这是唯一的方法吗?难道没有外部工具吗?(有时候我觉得我应该成为一个emacs
用户!)谢谢。 - Aniargv
应该是一个内置变量... 也许你可以尝试用command-line-args-left
替换argv
。另外,你是否使用正确的参数--load script-file
和--batch
调用了 emacs? 对了,你绝对应该成为一个 Emacs 用户,但现在还不晚 ;) - François Févotteargv
更改为command-line-args-left
后,我遇到了其他错误,但缩进没有发生变化。这与emacs
版本有关吗?我在 Redhat 上使用的是21.3.1
版本。 - Aniargv
变量,但仅适用于一个文件。 - François FévotteEnd of file during parsing
。我也可以只用一个文件。 - Ani