هل يمكنني توصيل اثنين من emacs/slimes بنفس مثيل Swank؟
سؤال
عندما أبدأ Swank عبر Lininingen ، يقبل اتصال الوحل التالي ويذهب. أرغب حقًا في الاتصال بعدة حالات EMACs بنفس مثيل Swank. هل يمكنني فعل هذا؟ هل يمكنني القيام بذلك من خلال لينينينج؟
المحلول
حسنًا ، يمكنك بدء الوحل الأول بشكل طبيعي ، ثم (require 'swank.swank)
(أو ربما يكون ذلك مطلوبًا افتراضيًا ... لست متأكدًا) ، افعل (swank.swank/start-repl port)
مع port
تم استبداله ببعض أرقام المنفذ ويمكنك توصيل مثيل ثانٍ من الوحل إلى هذا الاستبدال الذي تم إنشاؤه حديثًا.
لقد فعلت ذلك الآن ، مع تواصل واحد من emacs بإصدار REPL lein swank
, (swank.swank/start-repl 4006)
في أول emacs ، MX Slime-Connect في EMACs الثانية (توفير 4006 كرقم المنفذ) ، ثم يمكنني القيام بذلك:
; first Emacs
(def x 5)
; second Emacs
x ; evaluates to 5
(def y 1234)
; first Emacs
y ; evaluates to 1234
رائع ، لا؟ :-)
تحديث: أوه ، راجع للشغل - (swank.swank/start-repl)
يبدأ الاسترداد الجديد في الخلفية و لا قم بحظر Reply الذي تستخدمه لتنفيذه. قيمة الإرجاع nil
, ، لذلك لست متأكدًا من كيفية قتل الاستبدال الجديد ...
(تحديث 2: إزالة شيء لم أعد متأكدًا منه.)
تحديث 3: على الرغم من أن الطريقة أعلاه عامة تمامًا من حيث أنها تجعل من الممكن توصيل عميل إضافي بغض النظر عن كيفية بدء مثيل Swank الأصلي ، فقد يكون من المفيد بدء Swank مع الأمر
lein swank 4005 "localhost" :dont-close true
يجب ذكر وسيطات اسم المنفذ والاستضافة بشكل صريح إذا :dont-close true
هو أن يتم تمريرها. 4005
و "localhost"
هي القيم الافتراضية.
سيتيح ذلك الانفصال عن Swank وإعادة الاتصال لاحقًا ، ولكن أيضًا لتوصيل عدد من العملاء في وقت واحد.
(لاحظت للتو أن هذا ممكن أثناء الرد هذا السؤال الجديد حول كيفية تمكين إعادة التوصيل من Lininingen STARTED SWANK ؛ لقد حدث لي فجأة للتحقق إذا :dont-close
من شأنه أن يتسبب أيضًا في قبول روابط متزامنة - وهي كذلك.)