2012-08-08 16 views
6

Las buenas terminaciones de pestañas se generan dinámicamente mediante la reflexión o lo que sea (que no requiere una lista predefinida de terminaciones en algún lugar) y que sabe qué puede y qué no puede seguir en un lugar determinado.¿Es posible completar _good_ tab en Clojure REPL?

Al igual que en (.<TAB> x) voy a conseguir lista de métodos de x, en (println <TAB>) consigo lista de definiciones locales y globales, en (Math/<TAB> consigo la lista de funciones matemáticas ...

Por ejemplo, me gusta cómo La pestaña funciona en ghci (Haskell) o ipython.

Respuesta

0

Parece IClojure hace la cosa más o menos bien. Está inspirado y se parece a IPython y ofrece la finalización de pestañas (no completo, se mencionan 2 de 3 casos) y ayuda a desarrollar Clojure en la consola. No muy estable aunque.

4

Es ciertamente posible y varias de las herramientas están evolucionando en esa dirección. La última versión de clojure incluye una opción de "modo de desarrollo" que facilita la construcción de este tipo de herramienta; por ejemplo, desactiva el clearing local para ayudar en la depuración y la intención es que eventualmente pueda exportar mucha más información sobre el proceso de compilación para ser utilizado por IDEs y herramientas relacionadas. Esto es ampliamente reconocido como un área para mejorar el ecosistema Clojure y de mis observaciones varias personas muy inteligentes están trabajando en ello.

+0

Entonces, para tener esto en la consola REPL, ¿básicamente tengo que esperar más? –

7

Eche un vistazo a reply para una mejor REPL que la predeterminada. Cubre dos de los tres casos de uso que menciona, dejando el método de la instancia de Java fuera.

Si usa leiningen v2 + es la REPL predeterminada invocada por el comando lein repl.

1

La versión beta actual de Eclipse CounterClockwise REPL ha mejorado mucho la finalización del código y cubre todos sus casos, incluida la finalización de Java. Excepto por supuesto que no es una línea de comando independiente REPL. Clojure es un lenguaje dinámico, sin embargo, tiene sus limitaciones en las terminaciones en el tipo, algo que es mucho más fácil en lenguajes fuertemente tipados como Haskell.

+0

"... ha mejorado en gran medida la finalización del código" -> Así que también debería esperar que estuviera en línea de comandos; "algo que es mucho más fácil en lenguajes fuertemente tipados como Haskell". -> mencioné ipython debido a esto. –

+0

CCW REPL es un cliente NREPL, pero NREPL se utiliza para ejecutar código y devolver su salida, no la entrada de código. El código de finalización que utiliza CCW está estrechamente vinculado a Eclipse y a otro código de CCW, por lo que no creo que se incorpore pronto a otros clientes de NREPL. – NielsK

1

Estoy usando Emacs como editor con Slime y Emacs auto-complete, y obtuve todas esas características que funcionan para Repl dentro de Emacs: autocompletado para clases y campos Java, autocompletado más documentación para las funciones de Clojure. Lamentablemente, eso no funcionará si no está utilizando Emacs como editor/IDE.

+0

La misma pregunta se ha hecho antes: [Cómo hacer la expansión automática o autocompletar las funciones y variables en un Clojure repl] (http://stackoverflow.com/questions/4289480/how-to-do-automatic-expansion-or -autocomplete-of-functions-and-variables-in-a-cl) –

Cuestiones relacionadas