gpt4 book ai didi

ctags - 向ctags添加新的lang不起作用

转载 作者:行者123 更新时间:2023-12-02 02:24:40 26 4
gpt4 key购买 nike

我正在尝试将.volt扩展名添加到ctags语言地图中,但它始终忽略.volt文件。这是我的.ctags文件的内容:

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

--langmap=html:+.volt


当我做ctags --list-maps时,我会看到.volt文件包含在HTML中:

HTML     *.htm *.html *.volt


但是当我运行ctags时,它仍然完全忽略.volt文件。我在这里做错了什么?

最佳答案

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


您当前使用的不是Exuberant Ctags的最新版本5.8,而是5.6之前的版本。
您的.ctags文件在文件末尾有--langmap=html:+.volt,没有行终止。


阅读以下完整故事,了解为什么我认为这两个原因导致计算机上Ctags的意外行为。



我首先在Windows上使用Windows 5.5.4版的Exuberant Ctags安装了文本编辑器UltraEdit,后来又从5.8版直接从Exuberant Ctags项目页面下载了5.8版,以查找您的问题。

我创建了一个HTML项目的副本,其中只有1个* .html文件位于测试项目的父目录中,3个* .html文件位于子目录中,另外两个* .html文件也位于子目录中,文件扩展名从< cc>到html在这两个文件中,它们只是该子目录中3 * .html文件中的2个的副本。

接下来,我在项目的父目录中创建一个volt文件,并将您发布的几行内容复制到该文件中。另外,我在顶部用ctags.conf插入了一行,因为这对于查找类似问题很有用。

最后,我也将--verbose(第一个v5.5.4,后来的v5.8)也复制到了测试项目目录中,只是为了使其更容易从命令行运行。

我在测试项目目录中打开了命令提示符窗口并执行

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


我可以在详细的输出中看到,两个* .volt文件都已打开以进行处理并创建了 ctags.exe,其中也包含了2个* .volt文件中的所有标签,与2个* .html文件中的* .volt文件具有相同的标签文件之前已复制。

那么可能是什么问题呢?

我不仅熟悉HTML。我的主要工作是使用C / C ++进行编程。因此,我知道在读取文本文件时C源代码文件中经常犯的错误:对文本文件的错误处理,在文件的最后一行没有行终止。

而且我知道,Linux上的某些文本编辑器(例如 test.tag)即使在文件的最后一行没有行终止符的情况下,也将插入号位于Ctrl + End的行的最后一行下方。在这种情况下,插入符应由文本编辑器定位在字符串的最后一行的末尾,而不是在文件实际末尾的下一行开始。在我看来,这是错误的行为,使文本编辑器的用户认为文本文件在文件的最后一行也具有行终止符,即使这不是真的。

因此,我认为您可能在文件的末尾附加了 gedit而没有行终止,并且在这种情况下 --langmap=html:+.volt不会对行进行评估,因为在源代码中文本文件解析做得不好。因此,我从仅包含 ctags.exe的最后一行删除了 ctags.conf中的行终止

我执行了与以前相同的命令行和AHA,由于* cc,两个* .volt文件都被忽略了。

这是我下载Windows版Ctags 5.8版并将其复制到测试项目目录中的时间,以替换5.5.4版的可执行文件。

我再次使用未修改的 --langmap=html:+.volt执行了命令行。两个* .volt文件都由Ctags处理,并且 unknown language再次包含了两个* .volt文件中的标签。

再次在文件 ctags.conf的最后一行附加行终止并再次执行命令行不会导致不同的输出。因此,如果在Ctags 5.8版中没有解决文件末尾的行终止的情况,则会忽略选项文件的最后一行。

我在旺盛的Ctags的 Change Notes中搜索了 test.tag,并在更改注释块中找到了ctags-5.6(2006年5月29日,星期一)


修复了在没有最终换行符的情况下读取列表文件(-L)的最后一行的问题。


这是我的想法和可以看到的证实。当然,这个问题不仅存在于读取列表文件中,而且还存在于读取其他文本文件(如选项文件或C和Java文件)时,更改注释中的下一行告知


修复了在没有最终换行符[C,Java]的文件上可能发生的无限循环。

关于ctags - 向ctags添加新的lang不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com