Ich benutze Emacs Live , weil es nett zu sein scheint und mir eine Menge Konfigurationsarbeit erspart. Jetzt hat es für ein paar Tage gut funktioniert, aber heute ist anscheinend etwas kaputt gegangen. Insbesondere brach die automatische Vervollständigung ab (ich glaube, es könnte ein Problem mit ac-nrepl sein). Im Grunde zeigt mein Minipuffer jetzt nur "Namespace not found.", Ich bekomme keine echte Autovervollständigung mehr (nur Vervollständigung bei Wörtern, die bereits in der Datei sind). Und wenn ich C-c M-n
starte, bekomme ich immer einen leeren * nREPL error * -Puffer, wenn die Autovervollständigung normalerweise einsetzt.
EDIT: Diese only passiert, wenn ich einen nrepl-Server mit nrepl-jack-in starte. Es genügt, eine Verbindung zu einem vorhandenen (z. B. mit lein repl) herzustellen.
Das Problem mit Namespace not found
ist, dass der nrepl den Namespace des aktuellen Puffers nicht kennt. Das Problem mit nrepl-set-ns ( C-c M-n
) besteht darin, dass in-ns
ausgeführt wird, wodurch die Clojure-Kernabhängigkeiten nicht berücksichtigt werden.
In beiden Fällen besteht die Umgehung darin, entweder nur den ns
s-Ausdruck des Puffers auszuwerten oder den gesamten Puffer mit nrepl-load-current-buffer
zu laden.
Natürlich können Sie die nrepl-set-ns ändern, um ns
zu machen oder ein weiteres fn hinzuzufügen.
Sieht so aus, als würde man dem Puffer eine möglicherweise leere ns-Deklaration hinzufügen:
%Vor% und das Ausführen von nrepl-set-ns
ist die beabsichtigte Verwendung von nrepl. Es erlaubt das Arbeiten mit mehreren Clojure-Puffern, jede mit ihren eigenen Importen, Aliasen usw.
Ich habe beschlossen, einen Hook zu .clj
file creation / opening hinzuzufügen, der diese Arbeit automatisiert. Einer ist jedoch immer noch dafür verantwortlich, das ns
-Form bei Änderung zu aktualisieren!