wenn ich durch leiningen swank anfange akzeptiert es die nächste schleimverbindung und los gehts. Ich würde wirklich gerne mehrere Emacs-Instanzen mit der gleichen Swank-Instanz verbinden lassen. Darf ich das machen? Kann ich das durch Leiningen machen?Kann ich zwei Emacs/Slimes mit derselben Swank-Instanz verbinden?
Antwort
Nun, können Sie Ihre erste SLIME normal starten, dann (require 'swank.swank)
(oder vielleicht ist es standardmäßig erforderlich ... nicht sicher), nicht (swank.swank/start-repl port)
mit port
durch eine Portnummer ersetzt und Sie können eine zweite Instanz von SLIME verbinden, dass neu erstellte REPL.
Ich habe es getan gerade jetzt, mit einem Emacs zu einem REPL Anschluss begann mit lein swank
, (swank.swank/start-repl 4006)
im ersten Emacs, Mx schleim Verbindung in der zweiten Emacs (4006 als Portnummer bereitstellt), dann könnte ich tun dies:
; first Emacs
(def x 5)
; second Emacs
x ; evaluates to 5
(def y 1234)
; first Emacs
y ; evaluates to 1234
Cool, nein? :-)
Update: Oh, BTW - (swank.swank/start-repl)
startet die neue REPL im Hintergrund und nicht blockieren die REPL, die Sie verwenden, um es auszuführen. Der Rückgabewert ist nil
, also bin ich nicht sicher, wie die neue REPL ...
(Update 2.: Entfernte etwas, was ich bin nicht mehr sicher) zu töten
Update 3: Während der oben Methode ist vollkommen allgemein, dass es macht es möglich, einen zusätzlichen Client unabhängig davon, wie die ursprüngliche Swank Instanz gestartet wurde zu verbinden, könnte es bequemer sein Swank zu beginnen mit dem Befehl
lein swank 4005 "localhost" :dont-close true
die Port und Hostnamen Argumente Muss explizit erwähnt werden, wenn :dont-close true
zu übergeben ist. 4005
und "localhost"
sind die Standardwerte.
Dies ermöglicht es, die Verbindung zu Swank zu trennen und später erneut zu verbinden, aber auch mehrere Clients gleichzeitig zu verbinden.
(Ich habe gerade bemerkt, dass dies möglich ist, während this new question auf der Beantwortung wie reconnections zu Leiningen gestartet Swank ermöglichen; es mir plötzlich aufgetreten zu überprüfen, ob :dont-close
auch gleichzeitige Verbindungen zu akzeptieren verursachen würde - und es funktioniert.)
Das ist genial. Genau das, was ich gesucht habe! –
'Super' ist genau das richtige Wort. :-) Übrigens, du kannst 'swank.swank/start-repl' verwenden, um Swank in jede Clojure App einzubetten - ich habe gelesen, dass Leute es sehr gut benutzen. Der Hauptkritikpunkt ist, dass Swank sich nicht um Sicherheit kümmert, daher müssen Sie darauf achten, den Zugriff auf den REPL-Port selbst einzuschränken. –
Offenbar erfordert die oben in Update 3 beschriebene Funktionalität einen ziemlich neuen Lein-Swank; Siehe die andere Frage, auf die ich verlinkte (und insbesondere die Kommentare zu meiner Antwort dort), für Details. –