我正在寻找相当于Haskell的ctags。我试过了hasktags,但它有一些问题:
在enumerator的源文件夹中,运行hasktags .
给出:
hasktags: tags: openFile: resource busy (file is locked)
当我运行vim -t enumFile
时,会发生错误:
E431: Format error in tags file "tags"
Before byte 4085
E426: tag not found: enumFile
我也尝试了gasbag,但它不能在ghc-7.0.4上编译。
答案 0 :(得分:13)
您使用的是Mac OS X(或Windows,见下文),不是吗?
在这种情况下,hasktags -c
(仅创建Vi格式标签)可以解决您的问题。
这不是唯一的解释,但这是在OS X系统上发生的事情:
tags
(对于Vi)和TAGS
(对于Emacs)更新:正如评论所指出的,Windows也不区分大小写,因此可能会出现类似的问题。
答案 1 :(得分:9)
hasktags有一些错误,其中一个是它使用惰性IO,这往往会给那些资源带来繁忙的错误。
碰巧,我刚刚在http://hackage.haskell.org/package/fast-tags
写了一个标签程序其他选项是hothasktags,它生成合格的Module.function标签和lushtags,旨在与花哨的类似IDE的vim标签栏集成。根据我的经验,hothasktags一旦无法解析文件就会生成巨大的标签文件和lushtags崩溃。两者都使用haskell-src-exts,这意味着它们是准确的,但如果它们无法解析您的文件就会崩溃,并且无法处理.hsc文件。 fast-tags有自己的解析器,这意味着它没有这些问题,但也更容易解析错过标签或伪造标签的错误。
正如您所注意到的那样,gasbag(和htags)使用haskell-src,这意味着它们只适用于Haskell 98.
免责声明:如果TAGS指的是emacs标签,那么快速标签还没有这样做,但如果有人关心它会很容易添加。