एमएसीएस रूबी स्वत: पूर्ण काम कर रही है


132

मैं अपने इमैक कॉन्फिग को अपडेट कर रहा हूं कि स्वदेशी ड्रॉप डाउन बॉक्स के लिए टाइपिंग कोड दिखाई देने के लिए रुपये के उपयोग के साथ कॉन्फिग। अधिकांश फ़ाइलों में यह अच्छी तरह से काम करता है सिवाय इसके कि मैंने पाया है कि यह मुझे टेबल से एक उत्तर का चयन करने की अनुमति नहीं देता है जब मैं रेल परियोजना पर अपने रूबी में कुछ कोड संपादित कर रहा हूं।

यहाँ मेरा सेटअप है: https://github.com/map7/simple_emacs

मैं Ubuntu 10.04 के तहत इसका उपयोग कर रहा हूं।

सरल रूबी स्क्रिप्ट फ़ाइलों के लिए यह बहुत अच्छा काम करता है। मैं एक नई फ़ाइल खोल सकता हूं और टाइप कर सकता हूं।

"test".up...

जैसे मैं विकल्पों की एक सूची में 'पी' वर्ण को प्रदर्शित करता हूं और मैं तीर कुंजी के साथ सूची में ऊपर और नीचे जा सकता हूं और प्रवेश कुंजी के साथ एक (जैसे: ऊपर की ओर) का चयन कर सकता हूं।

क्या काम नहीं करता है जब मैं एक ही परीक्षण करता हूं, लेकिन एक रेल परियोजना के आधार निर्देशिका के भीतर।

अपडेट करें:

पाया कि समस्या (रेल की आवश्यकता है) के साथ है, इसलिए यह एमएसीएस-रेल्स प्लगइन में कुछ है जो ऑटोकॉम को पसंद नहीं है।

अपडेट करें:

यह emacs- रेल के भीतर है -> रेल- project.el। अगर मैं इस मैक्रो को टिप्पणी करता हूं तो स्वतः पूर्ण काम करता है, अन्यथा यह नहीं है:

(defmacro* rails-project:with-root ((root) &body body)
  "If you use `rails-project:root' or functions related on it
several times in a block of code, you can optimize your code by
using this macro. Also, blocks of code will be executed only if
rails-root exist.
 (rails-project:with-root (root)
    (foo root)
    (bar (rails-core:file \"some/path\")))
 "
 `(let ((,root (rails-project:root)))
    (when ,root
      (flet ((rails-project:root () ,root))
        ,@body))))

क्या कोई समझा सकता है कि यह स्वत: पूर्ण क्यों टूटता है?


1
स्वत: पूर्ण फ़ंक्शन का उपयोग रूबी, C ++, लिस्प और सब कुछ में किया जाता है
Map7

1
मेरा मतलब है, यहाँ मैक्रो का उपयोग कहाँ किया जाता है?
मिल्कपोस्टमैन

1
मैं मुख्य रूप से एमवीसी में विभिन्न फाइलों के बीच कूदने के लिए रेल मैक्रो का उपयोग करता हूं और डीबी / सर्वर / कंसोल / आदि शुरू करता हूं।
map7

1
क्या आप जवाब देने के लिए अपना समाधान निकाल सकते हैं, और इसे "कार्य" टिकट दे सकते हैं?
przemo_li

2
przemo_li, मुझे लगता है कि अगर मेरे पास इसका जवाब होता, लेकिन स्वत: पूर्ण तब भी काम नहीं करता जब आपके पास rails.el प्लगइन स्थापित हो और आप रेल मामूली मोड स्रोत कोड फ़ाइल के भीतर स्वत: पूर्ण होने का प्रयास कर रहे हों।
Map7

जवाबों:


7

यहाँ एक विचार है: मैक्रोज़ एक बार उस fletफ़ंक्शन (rails-project:root)को उस मान से बांधता है (rails-project:root)जो bodyनिष्पादित होने से ठीक पहले है । (यही कारण है कि यह एक प्रदर्शन वृद्धि का दावा करता है: जाहिरा तौर पर बाहरी (rails-project:root)महंगा है, इसलिए एक बार कॉल करना और मूल्य को कैच करना एक अच्छा विचार है।)

दुर्भाग्यवश, यदि कोड के अंदर bodyकोई साइड इफेक्ट है, जिसका अर्थ जानबूझकर उस मूल्य को बदलना है जो (rails-project:root)वापस आता है, तो इसका कोई प्रभाव नहीं होगा। यह परिवर्तन अन्य कोड के लिए भी अदृश्य होगा bodyक्योंकि Emacs लिस्प में fletनामों का गतिशील बंधन है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.