2012-08-29 27 views
8

Lisp言語のソースコードの美化器、特にClojureはありますか?ソースコードlisp(Common Lisp、Scheme、Clojure)の美人

私は多くの人が(などのastyle、Uncrustify、)C/C++のような言語のためにそこにいることを知っている

私は、Lispの言語のいずれかを見つけるために、縫い目ができません。

私のコードは次のように、この言語での混乱の多くの長い行で、次の

(defn check-if-installed[x] (:exit(sh "sh" "-c" (str "command -v " x " >/dev/null 2>&1 || { echo >&2 \"\"; exit 1; }")))) 

か恐ろしいです

(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")) 

ビューティがあると便利だろうというそのようにフォーマットできます

(if (= a something) 
    (if (= b otherthing) 
     (foo))) 

答えて

3

私はClojure.pprintを使用して、生成されたコードを人間にとってより美味しくする。 レポートを作成するのに適しています。 clojure-mode emacsパッケージに組み込まれている書式設定は、改行を自分のものに置くときれいに整形されたClojureを生成します。

5

あなたの質問はすべて括弧で囲まれた言語を扱うように見えるので、おそらく私はラケットのために、あなたの質問に答えることができますか?

本物の答えは、自分で改行を挿入するかどうかにかかっています。多くのシステム は、行を分割して慣用的に行をインデントすることができます。

あなたはラケットは何をしたいの一部を行う "プリティ・プリント" を提供し、それらを手動で挿入したくない場合:

#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) 

... 改行の選択は、人々があなたのコードをどのように読んでもらいたいかと大いに関係しているので、正しい場所に改行を挿入するのは難しいことを最初に認めます。

+1

+1 '改行を適切に選択するのは難しいです。改行の選択は、人々があなたのコードをどのように読んでもらいたいのか、 –

2

La Clojure(ClojureのIntelliJ Ideaプラグイン)には、コード書式設定機能があります。

1

Srefactor packageでこれを行うことができます。

いくつかのデモ:(同様のCommon Lispで適用)Emacs Lispの

使用可能なコマンド:

  • srefactor-lisp-format-buffer:フォーマットバッファ全体
  • srefactor-lisp-format-defun:フォーマットが現在の関数定義カーソルが
  • srefactor-lisp-format-sexpである:カーソルが入っている現在のS式をフォーマット
  • srefactor-lisp-one-line:同じレベルの現在のsexpを回すelを1行にする。接頭引数を使用して、すべての内部セックスを再帰的に1つの行に変換します。

Schemeの亜種はEmacs LispとCommon Lispと同じように洗練されていませんが、シンプルで小さなエスペクトで動作します。何か問題があれば、問題報告書を提出してください。私はそれを修正して喜んでします。

関連する問題