2014-06-13 25 views
3

我想將.volt擴展爲ctags語言地圖,但它始終忽略.volt文件。這是我.ctags文件的內容:向ctags添加新的lang不起作用

--recurse=yes 
--tag-relative=yes 
--exclude=*.git* 
--exclude=.DS_Store 

--langmap=html:+.volt 

當我做CTAGS --list-地圖我會看到.volt文件被包含在HTML:

HTML  *.htm *.html *.volt 

但仍然當我運行ctags時,它完全忽略了.volt文件。我在這裏做錯了什麼?

回答

2

的意外行爲的原因很可能是:

  1. 您沒有使用目前最新的5.8版本旺盛Ctags的,但5.6之前的一個版本。
  2. .ctags文件在沒有線路終端文件的末尾有--langmap=html:+.volt

閱讀下面的完整的故事,爲什麼我認爲這些理由2導致的C標籤您的計算機上的意外行爲。


我枕着你的問題在Windows上首先使用與文本編輯器UltraEdit後來還直接從Exuberant Ctags項目頁面下載5.8版本的安裝旺盛C標籤的舊版本5.5.4。

我在測試項目的父目錄中創建了一個僅包含1 * .html文件的HTML項目副本,在子目錄中包含3 * .html文件,還在包含文件的子目錄中創建了兩個* .html文件擴展從html改爲volt上只是在這個子目錄中的3個* .html文件2份,這兩個文件。

接下來,我在項目中ctags.conf文件的上級目錄中創建和複製您發佈到這個文件中的幾行。此外,我在頂部插入一行--verbose,因爲這對於尋找這樣的問題很有用。

而且最後我複製ctags.exe(第一v5.5.4,後來V5.8)也進入測試項目目錄只是爲了使其更容易從命令行運行它。

我在測試項目目錄中打開命令提示符窗口,並執行

ctags.exe -f test.tag --options=ctags.conf 

我可以在這兩個* .volt文件被打開,處理和創建test.tag也是所有的標籤包含在從2詳細輸出看到* .volt文件,與以前從其中複製* .volt文件的2 * .html文件相同的標記。

那麼可能是什麼問題呢?

我不僅要熟悉HTML。我的主要工作是用C/C++編程。因此,我知道在讀取文本文件時C源代碼文件中經常出現的錯誤:在文件的最後一行沒有行終止的文本文件的錯誤處理。

而且我知道一些文本編輯器,如Linux上的gedit,即使文件的最後一行沒有行終止,也會在文件的最後一行下面的行的開始處將Ctrl設置爲Ctrl + End。在這種情況下,插入符號應該由文本編輯器在最後一行字符串末尾處定位,而不是從文件實際末尾開始。這在我看來錯誤的行爲讓文本編輯器的用戶認爲文本文件的最後一行也有一個行終止,即使這不是真的。

所以我認爲你可能在文件末尾追加了--langmap=html:+.volt而沒有行終止,並且ctags.exe在這種情況下沒有評估行,因爲在源代碼中沒有很好地完成文本文件解析。所以我刪除了行終止在ctags.conf從現在包含最後一行只--langmap=html:+.volt

我執行相同的命令行AHA之前和,既有* .volt文件,因爲unknown language忽略。

這是我下載Windows版本5.8的Ctags的時間,並將其複製到測試項目目錄中,替換了版本5.5.4的可執行文件。

我再次執行命令行,沒有修改ctags.conf。兩個* .volt文件均由處理,Ctagstest.tag再次包含來自兩個* .volt文件的標記。

在文件ctags.conf的最後一行上再次添加行終止,並再次執行命令行不會導致不同的輸出。因此,如果文件末尾沒有行終止,則忽略最後一行選項文件的bug在Ctags版本5.8中得到修復。

我搜索在旺盛Ctags的lastChange Notes和變化發現CTAGS-5.6筆記塊(週一2006年5月29日)

  • 固定的問題,閱讀列表文件的最後一行(-L )沒有最終換行符。

這是我認爲和可以看到的確認。當然不僅存在於閱讀列表文件,而且對閱讀其他的文本文件,如選項文件,或在變化音符下一行C和Java文件問題通知

  • 固定無限循環可能發生在沒有最終換行符的文件上[C,Java]。
相關問題