zei*_*tue 9 scheme clojure common-lisp
我的代码在这种语言中很多很长,如下所示
(defn check-if-installed[x] (:exit(sh "sh" "-c" (str "command -v " x " >/dev/null 2>&1 || { echo >&2 \"\"; exit 1; }"))))
Run Code Online (Sandbox Code Playgroud)
要么
(def Open-Action (action :handler (fn [e] (choose-file :type :open :selection-mode :files-only :dir ListDir :success-fn (fn [fc file](setup-list file)))) :name "Open" :key "menu O" :tip "Open spelling list"))
Run Code Online (Sandbox Code Playgroud)
这太可怕了.我想这样格式化
(if (= a something)
(if (= b otherthing)
(foo)))
Run Code Online (Sandbox Code Playgroud)
如何以更好的方式美化源代码?
真正的答案取决于您是否愿意自己插入新行.一旦你将它分解成线条,许多系统都可以用惯用的方式缩进线条.
如果你不希望手动插入它们,球拍规定,做一些你想要什么"漂亮打印":
#lang racket
(require racket/pretty)
(parameterize ([pretty-print-columns 20])
(pretty-print '(b aosentuh onethunoteh (nte huna) oehnatoe unathoe)))
Run Code Online (Sandbox Code Playgroud)
==>
'(b
aosentuh
onethunoteh
(nte huna)
oehnatoe
unathoe)
Run Code Online (Sandbox Code Playgroud)
...但我是第一个承认在正确位置插入换行符很难的人,因为换行符的选择与你希望人们如何阅读代码有很大关系.
现在你可以使用Srefactor 包来做到这一点。
一些演示:
可用命令:
srefactor-lisp-format-buffer:格式化整个缓冲区srefactor-lisp-format-defun:当前defun光标所在格式srefactor-lisp-format-sexp:当前sexp光标所在的格式。srefactor-lisp-one-line:将当前同级别的sexp变成一行;使用前缀参数,递归地将所有内部 sexp 变成一行。方案变体虽然不像 Emacs Lisp 和 Common Lisp 那样完善,但适用于简单和小型的 sexp。如果有任何问题,请提交问题报告,我很乐意修复。