2014-02-13 50 views
1

由於某些原因,我在ctags生成的標籤文件中出現錯誤。 試圖通過更改ctags選項來解決錯誤,沒有好處。 現在我想嘗試另一種方法 - 讓vim忽略標記文件中的錯誤。 這可能嗎? 標籤文件包含的行不是標籤,我猜,只是從代碼中的某處取得的句子。 標記文件是相當大的:如何忽略vim中的標籤文件錯誤

$ wc tags 
591708 3711802 65594557 tags 

例如爲:

$grep -vn -C 1 "\/" tags 
510630-packet ISS/code/opensource/ssl/ssl.h /^ unsigned char *packet;$/;" m struct:ssl_st 
510631:packet that is present on the network wire. Even if an inbound packet is denied 
510632-packetSrcAdr ISS/code/future/ospf/inc/osfssnmp.h /^ tIPADDR packetSrcAdr;$/;" m struct:_IfConfErrTrapInfo 

發現,有一個faq.tex文件,許多「句子」從何而來呢。我試圖從ctags中排除它(--exclude)

+0

怎麼樣向我們展示那些「句子」? – romainl

+0

是不是標籤文件中引起「句子」的源文件不完全是ctags支持的語言?我已經看到用C宏完成的可怕事情,任何非C預處理器在解析時都會遇到困難。 – Jens

+0

行510631有錯誤。 –

回答

0

如果標記文件中的損壞的行匹配某種模式(正則表達式),則可以修復標記文件。例如把這個在您的Makefile

tags: 
    ctags -f [email protected] ... 
    grep -v 'pattern of bogus tag lines' [email protected] > [email protected] 
    rm [email protected] 
+0

也嘗試了這種方法。無法正則表達所有錯誤。 :-( –

+1

@RanRegev你可以請一個輸入的小樣本,在標籤文件中產生一個損壞的行嗎?除了「ctags does not grok something」之外,我們沒有太多的工作 – Jens

+0

然後grep for *用'grep'/\^.*/;''''來表示正確的* ctags行,如果這些行不出現在「句子」中,你就有一個贏家。 – Jens

0

最好的解決辦法是尋找有錯誤的線的起源,並試圖消除這些線/文件,導致代碼文件中的錯誤。