سؤال

أنا أستخدم emacs مع clojure-swank و Slime وأحاول ضبط بيئة التطوير الخاصة بي. واجهت مشكلة. عندما أبدأ عملية استبدال ، أنا عالق في دليل غير معروف يمنعني من تحميل مساحة الاسمي. لأن Clojure REPL لا يمكن العثور على الملف الصحيح.

هل يعرف أحد كيفية تغيير الدليل الحالي؟

ملاحظة: لقد بدأت للتو في استخدام emacs والوحل لذلك أنا noob.

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في تغيير فكرة الوحل للدليل الحالي ، اضغط ,cd<CR> (<CR> = أدخل) واكتب في المسار.

ومع ذلك ، هذا ليس حقا الحل المناسب للمشكلة. يتضمن الحل الصحيح إعداد ClassPath بحيث يمكنك (استخدام "Name.NamePace). تحقيقا لهذه الغاية ، أتساءل عما إذا هذه الإجابة الطويلة جدا لقد قدمت سؤالًا حول إعداد ClassPath بشكل صحيح قد يكون مفيدًا ... :-)

بالمناسبة ، أعترض إلى حد ما على الحلول التي تنطوي على add-classpath, ، نظرًا لأن هذا يتم تمييزه حاليًا على أنه تم إهماله ولم يكن من المفترض أن يعتمد عليه في المقام الأول ... على الرغم من أنه من ناحية أخرى ، فمن المؤكد أنه بالتأكيد مايو اعمل بشكل جيد تمامًا ويستحق المعرفة فقط في حالة أنه قد يكون مفيدًا باعتباره وسيلة للتحايل على حقن Classpath السريعة.

الآن إذا كنت تريد بيئة تطوير حقيقية تعتمد على الوحل ، أود أن أوجهك إلى لطيف للغاية clojure-project وظيفة ELISP بواسطة Phil Hagelberg التي تقوم بإعداد جميع المتغيرات ذات الصلة وتطلق الوحل في الدليل الرئيسي للمشروع (ليتم توفيره بشكل تفاعلي). تم نشره في مجموعة Clojure ، في الواقع هذا رابط إلى نسخة أرشيف البريد من تلك الرسالة. لاحظ أن هناك شيء واحد يحتاج إلى تصحيح هناك - swank-clojure-jar-path يجب ضبطها على الطريق الكامل clojure.jar. وإلا فهي أداة رائعة.

في الواقع لقد ذكرت هذه الوظيفة في هذا الرد إلى سؤال حول إدارة classpath عند استخدام clojure و emacs. قد تكون الإجابات الأخرى مثيرة للاهتمام أيضًا.

وإذا كنت قد بدأت للتو في استخدام الوحل ، فقم بمشاهدة فيديو الوحل ، مرتبط من صفحة الوحل الرئيسية وهو متاح الآن تحت رابط نشره ميشيل في التعليقات. إنها مقدمة جيدة جدًا. :-)

نصائح أخرى

لينينينين هي أداة بناء clojure جديدة تقلق بشأن classpathing لك. قمت بإعداد ملف مشروع بسيط في الدليل الجذر للمشروع لتحديد الفئة الرئيسية لمشروعك ، واكتشف بشكل تلقائي جميع الجرار في دليل LIB الخاص بك ويحملها لك.

أنا الآن فقط اكتب "Lein Swank" في سطر أوامر ثم MX Slime-Connect في EMACs ، وكل شيء يعمل فقط. (يمكن بسهولة أن يكون هذا تلقائيًا مع القليل من Elisp.)

مزيد من المعلومات في منشور المدونة هذا.

اجابة قصيرة:
(load-file "full-path-to-definition")

الإجابة الطويلة: إليك ما تبدو عليه عملية التمهيد الخاصة بي:

في ~/.clojure/user.clj (هذا الملف يدير تلقائيًا عند تشغيل الوحل/clojure):
(add-classpath "file://path/to/foo.jar") ; Include these jars in the classpath
(add-classpath "file://path/to/foo2.jar")
(load-file "file://workspace/bootstrap.clj")

في bootstrap.clj:
(compile 'my.package)

ملفات (ملفات) الحزمة at /Workspace/my/package.clj

في package.clj:
(ns my.package)
(defn foo [] (+ 2 2))

أفضل طريقة وجدتها عند استخدام Emacs و Slime و Swank-Clojure هي استخدام وظيفة Swank-Clojure. من وثائقها:

(مسار مسار الكومبور Swank-Clojure)

إعداد ClassPath لمشروع Clojure ويبدأ جلسة الوحل الجديدة. يقتل جلسة الوحل الحالية ، إن وجدت.

إذا قمت بعمل "MX Swank-Clojure-Project" ، فسيطلب منك ذلك بشكل تفاعلي دليل مشروعك ؛ بمجرد تحديدها ، ستتم إضافة جميع الجرار في دليل LIB الفرعي ، وكذلك مجلد SRC و Classes إلى ClassPath الخاص بك. كما سيحترم هيكل دليل Maven/Lein ، وبعبارة أخرى: عادة ما ينجح.

إذا قمت بتغيير شيء ما ، على سبيل المثال ، أضف ملف JAR جديدًا ، ما عليك سوى القيام بمسكّر Swank-Clojure مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top