簡體   English   中英

如何結合多個類似ctags的標簽工具?

[英]How to combine multiple ctags-like tags tools?

Ctags是最著名的標簽工具。 但是,ctags有一些缺點,並且從目標語言到語言都有一些更好的選擇。

例如,對於Ruby,我更喜歡使用ripper-tags 對於JavaScript,人們經常使用jsctags 也有類似CoffeeTags的東西。

因此,我的問題是,如何集成或組合這些工具? 是否可以編寫一個shell腳本(或其他),例如: omni-tags ,這樣我就可以對所有類型的文件使用omni-tags 並且它會自動調用不同標簽工具取決於文件類型嗎?

有時一個項目中有多個文件類型,所以如果我們可以使用統一的工具來生成標簽,它將更加方便。

謝謝。

假設您只處理帶有一種特定類型源代碼的項目,那么您可以使用Shell或任何腳本語言(Perl,Python,Ruby等)輕松實現假設的omni-tags命令。 只需遞歸掃描項目目錄,查找其中的主要文件類型(通過匹配文件擴展名或使用Unix file程序),然后運行與該特定種類的源文件關聯的標簽生成程序。

如果您的項目中包含多種語言的代碼,這將變得更加困難,但並非沒有可能。 一個示例是一個Ruby gem,其中包含Ruby .rb源文件以及一些實現本機C擴展的.c.h文件。 在這種情況下,通常將Ruby和C文件完全分開-即,gem根目錄下的一個目錄樹全是Ruby,而另一個omni-tags是C。因此,可以編寫omni-tags來識別這種情況,並且在.c.h文件上運行ctags ,在.rb文件上運行ripper-tags 由於大多數編輯器可以在每個項目中集成多個標簽文件(至少,我知道Emacs可以這樣做),因此您將能夠在C源代碼中定義的符號和Ruby源代碼中使用的符號之間進行導航。

最棘手的部分是如何處理您要標記的多種語言混合在一起的代碼庫。 對於您的JavaScript示例,例如,您是否有可能同時包含JavaScript和CoffeeScript文件的目錄? 在這種情況下,需要使用omni-tags在每個源文件上運行適合每種語言的工具。 如果編寫了標簽生成工具來忽略任何類型不正確的文件,則可以從項目的根目錄運行每個文件,然后再次使用集成多個標簽文件的編輯器。 如果僅需要向工具提供正確類型的文件,則omni-tags需要為所討論的文件建立索引,然后僅將正確文件的名稱提供給每個工具。 這不是不可能的,但是需要做更多的工作(與第一段中描述的最簡單的情況相反,這可能在大約10行Python或Ruby中是可行的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM