如何为Haskell项目生成TAGS?

fqs*_*sxr 14 haskell ctags

我正在寻找相当于Haskell的ctags.我试过hasktags,但它有一些问题:

枚举器的源文件夹中,run hasktags .给出:

hasktags: tags: openFile: resource busy (file is locked)
Run Code Online (Sandbox Code Playgroud)

当我跑步时vim -t enumFile,会发生错误:

E431: Format error in tags file "tags"
Before byte 4085
E426: tag not found: enumFile
Run Code Online (Sandbox Code Playgroud)

我也试过气囊,但它不能在ghc-7.0.4上编译.

Bla*_*ade 13

您使用的是Mac OS X(或Windows,见下文),不是吗?在这种情况下,hasktags -c(只创建Vi格式标签)将解决您的问题.

这不是唯一的解释,但这是在OS X系统上发生的事情:

  • 默认情况下,hasktags假设您需要vi和Emacs的两个标记.
  • 因此,它尝试创建tags(对于Vi)和TAGS(对于Emacs)
  • 但是,OS X与Unix不同,默认情况下不区分大小写.因此,你不能在那里有两个文件.
  • 而不是用另一个文件覆盖一个文件,由于某种原因,hasktags遇到冲突,可能是因为它在关闭"其他"之前打开了一个文件.我希望这是由于懒惰的I/O,正如Evan Laforge所解释的那样.

更新:正如评论所指出的,Windows也不区分大小写,因此可能会出现类似的问题.


Eva*_*rge 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标签,那么快速标签还没有做到,尽管如果有人关心它会很容易添加.