2010-03-07 15 views
9

मैं क्लोजर आरईपीएल में अपने क्लासपाथ में पथ जोड़ने की कोशिश कर रहा हूं जिसे मैंने ईएलपीए का उपयोग करके एमैक्स में स्थापित किया है। जाहिर है, यह $ क्लासस्पैट पर्यावरण चर नहीं है, बल्कि स्वैंक-क्लोजर-क्लासपाथ वेरिएबल है जो स्वैंक सेट अप करता है। क्योंकि मैंने स्वैंक, क्लोजर इत्यादि स्थापित करने के लिए ईएलपीए का उपयोग किया था, इसलिए .el फाइलों का एक टन है जो मेरी .emacs फ़ाइल के बजाय सबकुछ का ख्याल रखता है। दुर्भाग्य से, मैं यह नहीं समझ सकता कि क्लासपाथ को कैसे बदला जाए।ईएलपीए के साथ स्थापित करने के बाद मैं Emacs में क्लोजर क्लासपाथ कैसे स्थापित करूं?

मैंने अपने .emacs में ईएलपीए सामान से पहले और बाद में दोनों (सेटक 'swank-clojure-extra-classpaths (list ...)) का उपयोग करने का प्रयास किया है, और मैंने सीधे swank-clojure पर पथ जोड़ने का प्रयास किया है .emacs, .emacs.d/init.el, और .emacs.d/user/user.el में -classpath, लेकिन कुछ भी काम नहीं करता है।

जो मैं अंततः करने की कोशिश कर रहा हूं वह वर्तमान निर्देशिका दोनों को जोड़ना है। " और वह निर्देशिका जिसमें मैं अपने क्लोजर प्रोग्राम रखता हूं। मुझे लगता है कि स्वैंक-क्लोजर-क्लासपाथ वह चीज है जिसे मुझे यहां सेट करने की आवश्यकता है। आपकी सहायता के लिए धन्यवाद.

उत्तर

10

मैक कहते हैं, आप

M-x swank-clojure-project 

उपयोग कर सकते हैं एक clojure परियोजना के लिए एक कीचड़ आरईपीएल स्थापित करने के लिए के रूप में, आदेश आप अपनी परियोजनाओं को रूट निर्देशिका के लिए पूछेंगे, और एक classpath कि src/lib/और संसाधनों/अगर वे मौजूद हैं सहित निर्देशिका की एक किस्म भी शामिल है स्थापित करेगा।

वैकल्पिक रूप से, अगर आप leiningen उपयोग कर रहे हैं, तो आप एक टर्मिनल में आदेश

$ lein swank 
अपनी परियोजना रूट निर्देशिका के अंदर से

के साथ शुरू कर सकते हैं। यह एक मानक परियोजना classpath स्थापित करेगा (ऊपर के रूप में)।यहाँ से आप एक प्रक्रिया अपने स्वयं के खोल स्क्रिप्ट के द्वारा शुरू करने के लिए आदेश

M-x slime-connect 

अंत में एक तीसरा विकल्प है जो मुझे सलाह देते हैं Emacs के माध्यम से कनेक्ट करने के लिए है/कीचड़ (M-x slime-connect के साथ) के साथ Emacs के माध्यम से इस प्रक्रिया चल से जुड़ सकते हैं जो JVM कमांड लाइन तर्कों का एक कस्टम सेट निर्दिष्ट करता है उदाहरण के लिए

#!/bin/bash 

java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))" 

यह आप कैसे वीएम शुरू कर दिया है पर स्पष्ट नियंत्रण की अनुमति देता है, और संभावना आप की संभावना वैसे भी उत्पादन में करना होगा क्या के समान है।

3

आप चाहते हैं:

M-x swank-clojure-project 

यह आपके/lib dir में सभी जार कहते हैं।

आप करना चाहते हैं: तुम क्या एक clojure फ़ाइल (bar.clj) का उपयोग, उदाहरण/foo के लिए में होगा:

(ns foo 
    (:use foo.bar)) 
2

खेद है कि मैं एक जवाब के साथ मदद नहीं कर सकता, लेकिन शायद अपने प्रश्न गलत है :

मैं अपने आप को उम्र के लिए Emacs के भीतर से एक clojure सत्र शुरू नहीं किया है। मुझे लगता है कि बेहतर तरीका एक ही स्थान (जैसे Maven pom.xml या leiningen के project.clj) और फिर उन निर्भरता के साथ एक स्वांक सत्र शुरू में अपने सभी निर्भरता का वर्णन करने के लिए है। अर्थात। अपने (dev-) निर्भरता को swank-clojure lib जोड़ने और फिर lein swank या maven swank का उपयोग करें (यकीन है कि के बारे में नहीं पिछले एक - एक समय में इतना और नहीं इस्तेमाल नहीं किया है) कमांड लाइन से एक स्वांक सत्र शुरू और M-x slime-connect उपयोग करने के लिए उस सत्र से जुड़ने के लिए।

लाभ यह है कि आपको अपने क्लासपाथ में सभी चीज़ें मिलती हैं जो आपको चाहिए - और अधिक नहीं, इसलिए आप गलती से उस प्रतिलिपि से कुछ उपयोग नहीं कर सकते जिसे आपकी अंतिम परियोजना के बारे में पता नहीं है।

This blog post gives a good summary how to do this right.

संबंधित मुद्दे