Clojure 如何美化lisp源代码?
我的代码乱七八糟,这种语言中有许多长行,如下所示Clojure 如何美化lisp源代码?,clojure,scheme,common-lisp,Clojure,Scheme,Common Lisp,我的代码乱七八糟,这种语言中有许多长行,如下所示 (defn check-if-installed[x] (:exit(sh "sh" "-c" (str "command -v " x " >/dev/null 2>&1 || { echo >&2 \"\"; exit 1; }")))) 或 这太可怕了。我想这样格式化它 (if (= a something) (if (= b otherthing) (foo))) 如何更好地美
(defn check-if-installed[x] (:exit(sh "sh" "-c" (str "command -v " x " >/dev/null 2>&1 || { echo >&2 \"\"; exit 1; }"))))
或
这太可怕了。我想这样格式化它
(if (= a something)
(if (= b otherthing)
(foo)))
如何更好地美化源代码 我经常使用Clojure.pprint使生成的代码更容易让人接受。
虽然它的目标是生成文本,但它在报告方面效果很好。clojure模式emacs包中内置的格式设置,如果您将换行符放在自己的文件中,会生成格式非常好的clojure。真正的答案取决于您是否愿意自己插入换行符。许多系统 一旦你把行分解成行,你就可以用惯用的方式把行缩进 如果您不想手动插入它们,Racket会提供一个“漂亮的打印”,它可以实现您想要的一些功能:
#lang racket
(require racket/pretty)
(parameterize ([pretty-print-columns 20])
(pretty-print '(b aosentuh onethunoteh (nte huna) oehnatoe unathoe)))
==>
。。。但我会第一个承认在正确的位置插入新行是困难的,因为
换行符的选择与您希望人们如何阅读您的代码有很大关系。现在您可以使用
一些演示:
- 在Emacs Lisp中(也适用于Common Lisp)
:格式化整个缓冲区srefactor lisp格式缓冲区
:当前defun光标所在的格式srefactor lisp format defun
:设置当前sexp光标所在的格式srefactor lisp format sexp
:将当前同一级别的sexp转换为一行;使用prefix参数,递归地将所有内部sexps转换为一行srefactor lisp one line
Scheme变体还没有Emacs Lisp和Common Lisp那么精巧,但可以用于简单和小型的sexp。如果有任何问题,请提交一份问题报告,我很乐意解决。+1对于“在正确的位置插入换行符很难,因为换行符的选择与您希望人们如何阅读您的代码有很大关系”Emacs可以为您做到这一点。将此文档视为一个良好的起点:La Clojure(用于Clojure的IntelliJ Idea插件)具有代码格式化功能。
#lang racket
(require racket/pretty)
(parameterize ([pretty-print-columns 20])
(pretty-print '(b aosentuh onethunoteh (nte huna) oehnatoe unathoe)))
'(b
aosentuh
onethunoteh
(nte huna)
oehnatoe
unathoe)