2010-10-06 8 views
5

मैं निम्नलिखित न्यूनतम स्रोत फ़ाइल हैईटैग एक दूषित TAGS फ़ाइल क्यों उत्पन्न कर रहा है?

$ cat path/xx/yy/fooBar.c 
void this_is_a_test(void) 
{ 
} 

अगर मैं इस तरह etags चलाने यह ठीक काम करता

$ etags path/xx/yy/fooBar.c 
$ cat TAGS 


path/xx/yy/fooBar.c,25 
void this_is_a_test(1,0 

लेकिन अगर मैं खोजने के द्वारा etags चलाने/xargs टैग फ़ाइल दूषित है:

$ find . -name fooBar.c 
./path/xx/yy/fooBar.c 
$ find . -name fooBar.c | xargs etags 
$ cat TAGS 


path/xx/yy/fBoBar.c,25 
void this_is_a_test(^?1,0 

नोट करें कि फ़ाइल नाम fBoBar.c - bogus के रूप में ऊपर दिखाया गया है!

मैं find . -name '*.[ch]' | xargs etags की तरह कुछ कर रही द्वारा टैग उत्पन्न करने में सक्षम होना चाहते हैं। लेकिन जब मैं ऐसा करता हूं तो अधिकांश फाइलनामों को भ्रष्ट कर रहा है।

किसी भी विचार क्यों यह इस तरह विफल हो रहा है और/या क्या मैं इसे काम करने के लिए कर सकते हैं?

उबंटू ल्यूसिड। Etags emacs23-bin-common 23.1 + 1-4ubuntu7 से है।

संपादित:

fschmitt के प्रश्न के उत्तर में:

$ etags $(find . -name fooBar.c) 
$ cat TAGS 


path/xx/yy/fBoBar.c,25 
void this_is_a_test(1,0 

नई जानकारी:

मैं सिर्फ देखा है कि अपने मूल प्रश्न में दो का उपयोग करता है के बीच अंतर से ऊपर है पथ पर अग्रणी .। और अगर मैं etags ./path/xx/yy/fooBar.c जैसे ईटैग को कॉल करता हूं, तो यह फ़ाइल को दूषित करता है। तो यह सुनिश्चित करना है कि ईटैग के तर्कों में प्रमुख टैग नहीं हैं। (शायद यह etags में एक बग, क्योंकि प्रलेखन लगभग बिल्कुल मेरी उपयोग पैटर्न का वर्णन है।)

उत्तर

1

मैंने अभी देखा है कि उपरोक्त मेरे मूल प्रश्न में दो उपयोगों के बीच का अंतर अग्रणी है। पथ पर। और अगर मैं etags ./path/xx/yy/fooBar.c जैसे etags को कॉल करता हूं, तो यह फ़ाइल को दूषित करता है। तो एक कामकाज यह सुनिश्चित करना है कि ईट्स के तर्कों में प्रमुख टैग नहीं हैं। (शायद यह etags में एक बग, क्योंकि प्रलेखन लगभग बिल्कुल मेरी उपयोग पैटर्न का वर्णन है।)

+1

आप picky नहीं हैं, तो आप ऊपर --recurse विकल्प के साथ सभी फ़ाइलों (न केवल ग और ज) चुन सकते हैं: 'etags --recurse .', कम से कम http में: //ctags.sourceforge। नेट/सीटीएजी -5.8। –

+0

@fearless_fool: धन्यवाद! वह विकल्प 'ईटैग' में उपलब्ध नहीं है जो एमएक्स के साथ आता है, लेकिन यह जानना अस्तित्व में है कि मैं अत्यधिक सीटीएजी पर स्विच करना चाहता हूं। – bstpierre

+0

मुझे नहीं पता कि इसका कोई नुकसान है, लेकिन '$ PWD -name' * .c '-o -name' * .h 'के बारे में क्या है। xargs etags'? इस तरह पूर्ण पथ ईटैग को सौंप दिए जाते हैं। –

0

आप etags के बाद एक - जरूरत है इसे पाने के लिए stdin से पढ़ने के लिए:

find . -name fooBar.c | xargs etags - 

संपादित करें:

ओह, मुझे वास्तव में पूरा प्रश्न पढ़ना चाहिए था। मुझे नहीं पता कि यह फाइलनामों को दूषित क्यों कर रहा है। लेकिन आप अभी भी - :)

+0

'xargs' stdin से पढ़ता है और तर्कों के रूप etags करने के लिए फ़ाइलों प्रदान करता है। अगर मैं xargs का उपयोग नहीं कर रहा था, तो मुझे '-' की आवश्यकता होगी - और मैंने कोशिश की है, और यह अभी भी फ़ाइल को दूषित करता है। – bstpierre

0

का उपयोग करना चाहिए यह अजीब है। क्या होता है यदि आप

etags `find . -name '*.c'` `find . -name '*.h'` 

इसके बजाय क्या होता है?

0

यह कि मुझे क्या करना है:

etags --members `find ./ | grep [ch]$` 

HTH।

5

मुझे यहां एक ही समस्या का सामना करना पड़ रहा है।हालांकि यह देखते हुए कि आपने अपने ईटैग/एमएक्स संस्करण का उपयोग नहीं किया है, मैं 100% प्रतिशत नहीं हूं, हम एक ही समस्या के बारे में बात कर रहे हैं।

मेरे etags/Emacs संस्करण 23.1 और मुझे लगता है कि etags कि फ़ाइल नाम को भ्रष्ट कर रहा है, जब वे एक "./" लगी होती हैं में एक बग है। उदाहरण के लिए मैंने एक विशिष्ट फ़ाइल उठाई है जिसका नाम दूषित हो रहा है और "./" उपसर्ग के साथ और उसके बिना TAGS फ़ाइल जेनरेट की गई है। भ्रष्टाचार केवल "./" उपसर्ग के साथ हुआ।

मेरे - समस्या को हल मिल - समाधान फ़ाइल नाम खिला करने के लिए "etags" से पहले "./" उपसर्ग कटौती करने के लिए है। यहां बताया गया है कि मैं इसे कैसे करता हूं:

find . -name '*.[hc]' -print | cut -c3- | xargs etags - 

यह मेरे लिए काम करता है उम्मीद है कि यह आपके लिए करता है!

+0

संस्करण प्रश्न में है: 'Etags emacs23-bin-common 23.1 + 1-4ubuntu7' से है। – bstpierre

+1

मुझे लगता है कि इस बग https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/582347 में वर्णित के रूप में ही है। फिक्स - अभी तक - उबंटू को पोर्ट नहीं किया गया है। – mshamma

+0

किसी भी तरह, आपके लिए कामकाज का काम किया? – mshamma

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