2010-11-27 12 views
11

Gibt es eine Möglichkeit, den aktuellen Befehl in der Clojure Repl erweitern, wie ich in Common Lisp tun könnte?Wie automatische Erweiterung oder automatische Vervollständigung von Funktionen und Variablen in einem Clojure repl

Zum Beispiel sagt, dass ich eingegeben habe:

Math/ 

ich die Tabulatortaste möchte alle verfügbaren Variablen und Funktionen in diesem Namensraum zu erweitern.

Ich benutze Clojure als inferior-lisp würde gerne wissen, wie man dies von der plain vanilla repl in Clojure, und durch Swank Schleim.

Antwort

19

Eine weitere Abstimmung zugunsten von Clojure-Mode und Schleim unter Emacs. Insbesondere wenn Sie auto-complete einrichten, können Sie mein ac-slime-Paket verwenden, um in einer Dropdown-Liste eine kontextbezogene Registerkarte abzuschließen. Hier ist ein screencast showing it in action.

Und weiter zu Technomancys Kommentar über Hippie-erweitern, here's how to tie slime completion into hippie-expand.

Update: ab 2012, nrepl, nrepl.el und ac-nrepl ersetzen Schleim und AC-Schleim; gleiche Funktionalität, kleinere und sauberere Codebasis.

Update2: ab Oktober 2013 nrepl.el zu cider umbenannt und es und ac-nrepl haben zur clojure-emacs Organisation auf Github bewegt. nrepl bleibt als Server-Komponente

+0

Noch die effizienteste Art der Verwendung der Replik Mitte 2012, jetzt mit Emacs24. –

3

Haben Sie versucht Clojure-Modus für Emacs? Es hat Autovervollständigung (Vorschläge werden in einem neuen Fenster angezeigt, und wenn es nur eine mögliche Option gibt, wird es verwendet, um Namen zu erweitern), Hervorhebung und viele andere nette Funktionen (nicht mehr als für CL, aber nicht weniger).

Es ist verfügbar über ELPA. Nach installing ELPA geben Sie M-x package-list-packages ein, setzen Sie den Cursor in die Nähe des benötigten Pakets und drücken Sie i (bereits installierte Pakete sind rot). Sie benötigen die Pakete clojure-mode, slime, slime-repl und swank-clojure. Wenn Sie mit i -marks fertig sind, drücken Sie x, um die Installation abzuschließen. Schließlich drücken Sie M-x slime - Emacs wird sagen, dass Clojure nicht installiert ist und vorschlagen, die neueste Version herunterzuladen und zu verwenden. Stimme einfach zu.

Sie können auch integrate Emacs mit Leiningen.

2

Die Vanille repl in Clojure ist ziemlich verkrüppelt; Es hat nicht einmal Geschichte. Vermeide es für etwas anderes als die primitivsten Aufgaben. Ich glaube nicht, dass du das in schlechteren Lisp erreichen kannst, aber in dem Schleimrepl kannst du einfach TAB benutzen, um solche Dinge zu erledigen. In Clojure-Modus-Puffern mit aktiviertem Schleim ist es M-TAB, oder du kannst es in deine Hippie-Expand-Funktionen einbinden.

Verwandte Themen