似乎是个新的 Emacs Mode 可以自动调整括号而且非常强大
http://shaunlebron.github.io/parinfer/
…我只是想吐槽一下直接全部用缩进不就都解决了…
似乎是个新的 Emacs Mode 可以自动调整括号而且非常强大
http://shaunlebron.github.io/parinfer/
…我只是想吐槽一下直接全部用缩进不就都解决了…
我只在VS Code上面体验过几分钟的Parinfer,编辑性能有比较严重的问题
其实lisp的缩进分为三种情况,一种是平缩进,数据本身没有次序上的特殊关系
[1
2
3]
一种是函数调用缩进,第二行起都缩进两个字符
(defn hello [name]
(println "hello " name)
这里defn尽管是一个宏,为了区别下面要讲的缩进,还是把它归类于函数调用缩进
还有一种是宏调用缩进,缩进量与宏名持平
(macro-name arg1
arg2
...)
这个在commonlisp的缩进中比较常见,clojure较少见
当然缩进与否完全是给人看的,一个好的编辑模式,应该自动补全括号,缩进本身除了3选1,也不应该再依赖人的参与。
lisp提倡代码即数据,具体采用哪一种缩进,依赖于对数据的解释,我们可能会在vector中书写函数(就像reagent里的组件一样),也可能像在宏里那样将list当作数据。
我觉得Parinfer还是复杂了,lisp代码就是一棵树,基于树进行pretty-print就很容易,基于文本就很繁琐