在 Lisp 的世界里有没有类似 JS-beautifer 的工具呢?
虽然 Emacs 开了自动缩进代码格式还不错,但是有时候手写的代码可能还有样式不整齐的情况。有没有这样的工具可以进行格式规整呢?
这个工具是之前同学给推荐的
还有,就是 Google Lisp Style 有没有自动美化器呀?
https://google.github.io/styleguide/lispguide.xml
推荐列表
@tumashu 推荐使用 aggressive-indent-mode 可以在下面找到
1 个赞
之前我的视频当中有提到用 indent-region-or-buffer
来处理缩进呀,快捷键是 C-M-\
1 个赞
但是这样的美化并不是符合开发规则的呀,我想最好是能美化成一样的,或者可以批量做的工具,继续寻找中。
搜到了一些自动格式化 Emacs Lisp 的工具,这里的格式化涉及到断行,Emacs 本身已经能够正确的缩进,semantic-refactor、lispy 和 elisp-format.el,三个都没用过,不清楚能聪明到什么程度。
写代码的时候,只要注意什么时候应该换行(RET)了,Emacs 会自动缩进(因为 electric-indent-mode
默认是开启的),只做到这一点,我觉得 Emacs Lisp 代码就不会出现不整齐的问题。另外这两个命令也很有用:移动至缩进处用 M-m、取消缩进用 M-^,。
2 个赞
自带的 C-M-q 就有一定的“美化”的功能:(粗体是我加的)
C-M-q runs the command indent-pp-sexp (found in lisp-interaction-mode-map),
which is an interactive compiled Lisp function in `lisp-mode.el’.
It is bound to C-M-q, .
(indent-pp-sexp &optional ARG)
Indent each line of the list starting just after point, or prettyprint it.
A prefix argument specifies pretty-printing.
比如:C-u C-M-q 会把
(defun foo (a b) (let ((a b) (b a)) (list a b)))
转化成:
(defun foo
(a b)
(let
((a b)
(b a))
(list a b)))
6 个赞