2012-08-29 15 views
8

¿Hay algún embellecedor de código fuente para los lenguajes Lisp, especialmente Clojure.embellecedor de código fuente para lisp (Common Lisp, Scheme, Clojure)

Sé que hay muchos para lenguajes como C/C++ (Astyle, Uncrustify, etc)

No puedo encontrar ninguna costura para los idiomas Lisp.

mi código es un desastre muchas líneas largas en esta lengua como la siguiente

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

o

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

lo cual es terrible

que sería bueno tener un embellecedor que podría formatearlo como

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

Respuesta

3

Uso Clojure.pprint a menudo para hacer que el código generado sea más aceptable para los humanos. funciona bien para informar que está destinado a producir texto. El formato integrado en el paquete eChoure-modo emacs produce Clojure muy bien formateado si pones las nuevas líneas en ti mismo.

5

Su pregunta parece dirigirse a todos los idiomas entre paréntesis, por lo que tal vez pueda responder a su pregunta de la raqueta?

La verdadera respuesta depende de si está dispuesto a insertar las nuevas líneas usted mismo. Muchos sistemas pueden sangrar las líneas de una manera idiomática, una vez que se ha dividido en líneas.

Si no lo hace desee insertar manualmente, raqueta proporciona un "agradable para la impresión" que hace algo de lo que quiere:

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

... pero sería el primero en admitir que insertar líneas nuevas en los lugares correctos es difícil, porque la elección de los saltos de línea tiene mucho que ver con la forma en que desea que las personas lean su código.

+1

+1 para 'insertar líneas nuevas en los lugares correctos es difícil, porque la elección de los saltos de línea tiene mucho que ver con la forma en que desea que la gente lea su código' –

2

La Clojure (complemento IntelliJ Idea para Clojure) tiene una función de formato de código.

1

Ahora puede hacerlo con Srefactor package.

Algunas demostraciones:

Comandos disponibles: tampón toda formato

  • srefactor-lisp-format-defun::

    • srefactor-lisp-format-buffer formato de cursor defun actual está en
    • srefactor-lisp-format-sexp:. Formatear el cursor sexp actual está en
    • srefactor-lisp-one-line: gire el sexp actual del mismo nivel el en una línea; con el argumento prefijo, gire recursivamente todos los sexps internos en una línea.

    Las variantes de esquema no son tan perfectas como Emacs Lisp y Common Lisp pero funcionan para sexp simple y pequeño. Si hay algún problema, envíe un informe de problema y lo arreglaré con gusto.