有没有人使用 Scala 的 vim taglist 插件?

Posted

技术标签:

【中文标题】有没有人使用 Scala 的 vim taglist 插件?【英文标题】:Has anyone got the vim taglist plugin working with Scala? 【发布时间】:2010-06-11 01:45:11 【问题描述】:

我无法让 taglist 插件与 Scala 一起正常工作。我已经安装了插件和 ctags 并验证了它可以与 Java 和 C++ 一起正常工作。然后我按照page 上的说明进行操作(减去 Lift 特定的说明),但是当我在编辑 Scala 文件时打开它时,taglist 窗口中没有显示任何内容。有没有人得到这个工作,什么是正确的步骤?谢谢。

【问题讨论】:

【参考方案1】:

首先检查您的标签文件中是否包含某些内容。如果您按照您提到的页面上的说明进行操作,它应该正确识别类、方法等。如果这有效,那么您可以进入下一步。

taglist plugin 有一个支持语言设置的硬编码列表,Scala 不在其中。所以即使 CTags 生成了正确的标签,插件也不会为这个文件类型读入它们。

应该可以将定义添加为全局变量g:tlist_def_<lang>_settings,但我无法让它工作。所以你必须修改 ~/.vim/plugin 目录中的 taglist.vim 文件来添加 Scala 支持。别担心,这很容易做到!

搜索定义s:tlist_def_yacc_settings 的行并在其后添加以下几行:

let s:tlist_def_scala_settings = 'scala;t:trait;c:class;T:type;' .
                      \ 'm:method;C:constant;l:local;p:package;o:object'

现在,当您按下 Ctrl-T 时,您应该会在“标签列表”窗口中看到生成的 Scala 标签。

【讨论】:

我想你让我更接近了。我现在可以使用 :tag LiftSession(来自示例)跳转到该文件和项目中的其他文件。但是 Ctrl-T 总是返回 'E73: Tag list empty'。 :TlistToggle 也始终为空。我赞成你的答案,因为它很有帮助。 很奇怪 - 也许标签文件格式以某种方式关闭?我已经尝试过使用最新的(尽管是从 2007 年开始的)taglist 插件和 ctags 2.7 和 2.8,这些都可以与 TlistToggle 一起使用。唯一的区别是我没有使用 Lift 的 Scala 文件。 刚刚用 ctags 2.7 和最新的 lift RC 2.0 试了一下,效果很好。也许另一个 ctags 选项已潜入您的 .ctags 文件? 大多数情况都是如此。我清理了我的 .ctags 文件,只使用了 Scala 设置,现在使用 TlistToggle 可以正常工作。 Ctrl-T 返回 'tag stack empty' 但没关系。谢谢! 很高兴听到你把它整理好了!【参考方案2】:

我最近遇到了同样的麻烦,我已经为 scala 采用并扩展了一个 ctags 提取器,它与 tagbar 插件配合得很好。这是代码:

https://github.com/luben/sctags

它比 exuberant-ctags 慢,因为它使用 scalac 解析器,并且 JVM 有明显的启动时间,但它提供了相当完整的信息。

【讨论】:

以上是关于有没有人使用 Scala 的 vim taglist 插件?的主要内容,如果未能解决你的问题,请参考以下文章

scala linux终端高亮显示

scala中的孤立对象实现原理

Linux环境下的Scala环境搭建

在 Vim 中使用 graphviz.vim 画图

8. Scala面向对象编程(高级部分)

Scala - 隐式转换