2012-04-07 5 views
13

मैं हास्केल के समतुल्य ctags की तलाश में हूं। मैं hasktags की कोशिश की है, लेकिन यह कुछ समस्याएं हैं:,हास्केल परियोजनाओं के लिए TAGS कैसे उत्पन्न करें?

enumerator के स्रोत फ़ोल्डर में चलाने hasktags . देता है:

hasktags: tags: openFile: resource busy (file is locked) 

और जब मैं vim -t enumFile चलाने के लिए, एक त्रुटि होती है:

E431: Format error in tags file "tags" 
Before byte 4085 
E426: tag not found: enumFile 

मैं gasbag भी कोशिश की, लेकिन यह ghc-7.0.4 पर संकलित नहीं है।

उत्तर

8

हैकैगैग में कुछ कीड़े हैं, जिनमें से एक यह आलसी आईओ का उपयोग करती है, जो उन संसाधनों को व्यस्त त्रुटियों को देती है।

ऐसा होता है, मैं बस एक टैग कार्यक्रम में लिखा था, http://hackage.haskell.org/package/fast-tags पर

अन्य विकल्प hothasktags, जो योग्य Module.function टैग, और lushtags बनाता है, जो एक फैंसी आईडीई की तरह vim tagbar साथ एकीकृत करने के लिए बनाया गया है कर रहे हैं thingy। मेरे अनुभव में होथस्कटैग विशाल टैग फ़ाइलों और लशटैग क्रैश उत्पन्न करता है जैसे ही यह फ़ाइल को पार्स नहीं कर सकता है। दोनों का उपयोग हैकेल-src-exts जिसका अर्थ है कि वे सटीक हैं, लेकिन अगर वे आपकी फ़ाइल को पार्स नहीं कर सकते हैं तो क्रैश हो जाएंगे, और .hsc फ़ाइलों से निपट नहीं सकते हैं। फास्ट-टैग का अपना पार्सर होता है, जिसका अर्थ है कि इसमें उन समस्याएं नहीं हैं, लेकिन टैग को याद करने या बोगस टैग देने वाली बग को पार्स करने के लिए भी अधिक असुरक्षित है।

आपने देखा के रूप में, gasbag (और htags) का उपयोग Haskell-src जिसका मतलब है कि वे केवल अस्वीकरण हास्केल 98. पर काम

: यदि टैग द्वारा आप Emacs टैग मतलब है, तेजी से टैग उन नहीं करता है अभी तक, हालांकि अगर कोई देखभाल करता है तो इसे जोड़ना आसान होगा।

+0

वाह, फास्ट-टैग वास्तव में तेज़ है, और काम कर रहा है! धन्यवाद – fqsxr

13

आप मैक ओएस एक्स (या विंडोज़, नीचे देखें) का उपयोग कर रहे हैं, है ना? उस स्थिति में, hasktags -c (जो केवल वी-प्रारूप टैग बनाता है) आपकी समस्या को ठीक करेगा। hasktags मानता है कि आपके vi और Emacs के लिए दोनों टैग चाहते

  • डिफ़ॉल्ट रूप से,:

    केवल स्पष्टीकरण नहीं है, लेकिन यहाँ यह एक ओएस एक्स सिस्टम पर क्या होता है।

  • इस प्रकार, यह बनाने के लिए दोनों tags (Vi के लिए) और TAGS (Emacs के लिए)
  • हालांकि, ओएस एक्स, यूनिक्स के विपरीत, डिफ़ॉल्ट केस संवेदी कर रहा है की कोशिश करता है। इसलिए आपके पास दोनों फाइलें नहीं हो सकती हैं।
  • दूसरे फ़ाइल के साथ एक फ़ाइल को ओवरराइट करने के बजाय, किसी कारण से हैक्टगैग एक संघर्ष में चला जाता है, संभवतः क्योंकि यह "अन्य" बंद करने से पहले एक फ़ाइल खोलता है। मैं उम्मीद करता हूं कि यह आलसी I/O के आधार पर है, जैसा कि इवान लैफोर ने समझाया था।

अद्यतन: के रूप में एक टिप्पणी से कहा, विंडोज भी केस संवेदी है, तो इसी तरह की समस्याओं पैदा हो सकता है है।

+1

मेरे अनुभव के अनुसार, एमएस विंडोज़ पर केस असंवेदनशीलता को शामिल करने वाला यह स्पष्टीकरण भी सच है। मैं Emacs का उपयोग कर रहा हूँ, इसलिए मैं -e का उपयोग करता हूं, जो ठीक काम करता है। लेकिन विकल्प को छोड़कर त्रुटि उत्पन्न होती है। यह हैकेटगैग-0.68.2 के रूप में है।यह आलसी आईओ या बग मुद्दे की तरह नहीं दिखता है क्योंकि अन्य उत्तर – tinlyx

+0

@TingL: मुझे लगता है कि आलसी आईओ बताता है कि आपको वह विशिष्ट त्रुटि संदेश क्यों मिलता है ("संसाधन व्यस्त"); अन्यथा आपको कोई त्रुटि नहीं मिलेगी और एक 'टैग' फ़ाइल (जिसे बाद में बनाया गया है) और यह केवल एक संपादक के साथ काम करेगा, न कि दूसरे। – Blaisorblade

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