1

我最近开始使用球拍,我做的第一件事就是尝试让 vim TagList 插件与它一起工作。但是,它根本不起作用。我可以打开球拍文件,并且 TagList 窗口将像打开文本文件一样空白。

根据扩展页面* 我已将以下内容添加到我的 ~/.vimrc 文件中:

let Tlist_Ctags_Cmd = 'ctags --langdef=racket --langmap=racket:.rkt --regex-racket=/^\(def[a-zA-Z0-9\-_\?\/\\]+[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\1/d,definition/'
let Tlist_racket_settings = 'racket;d:Definition'

额外的 ctags 内容也在我的 ~/.ctags 文件中,但 TList 吐出了关于我的设置行没有任何好处的错误。我最初尝试使用 ctags 现有的方案功能,但我没有得到相同的结果。要使用现有的方案功能,我在 ~/.vimrc 中尝试了以下操作

let Tlist_Ctags_Cmd = 'ctags --langmap=scheme:.rkt'
let Tlist_racket_settings = 'racket;f:Functions'

如果其他人对如何使其工作有任何想法,那么我将非常感激。

谢谢,

  • 我也会在一个页面上发布一个指向 ctags 的链接,但它不会让我(新用户)。可以在扩展的 taglist 页面上找到指向它的链接。

编辑

来自命令行的 ctags

我可以从命令行使用 ctags。使用 TagList FAQ 页面上的 ctags 行进行测试,我得到以下信息:

 $ cat ~/.ctags
--langdef=racket
--langmap=racket:.rkt
--regex-racket=/^\(def[a-zA-Z0-9\-_\?\/\\]+[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\1/d,definition/
--regex-racket=/^\(define\-syntax(\-rule)?[ \t]+([a-zA-Z0-9\-_\/\\\?]+)/\2/m,macro/
--regex-racket=/^\(define?[ \t]+(([a-zA-Z0-9\-_\/\\\?]+)[ \t]+\(lambda|\(([a-zA-Z0-9\-_\/\\\?]+))/\2\3/f,function/
$ ctags  -f - --format=2 --excmd=pattern --fields=nks XMMSClient.rkt 
defenum XMMSClient.rkt  /^(define-syntax defenum$/;"    m   line:11
defxmmsc    XMMSClient.rkt  /^(define-syntax defxmmsc$/;"   m   line:20
libxmmsclient   XMMSClient.rkt  /^(define libxmmsclient (ffi-lib "libxmmsclient"))$/;"  d   line:5

如果我使用开关强制语言定义,或者如果我将语言更改为方案,则输出是相同的。

关于标签栏

在人们建议之前,我没有见过 TagBar。有趣的是,它只适用于对我的 .ctags 文件的更改。不幸的是,我没有找到像 TagList 那样显示所有加载缓冲区中的标签的设置,所以我更喜欢使用 TagList。

我会发布比较图像,但我认为它不会让我作为新成员。根据 romainl 的建议,我可以将 vim 文件类型设置为方案,它确实有效。然而,这似乎只是一个 80% 的解决方案,当根据扩展页面的文档似乎表明我所拥有的应该工作时。也许我应该考虑提交错误报告。

再次感谢,

4

2 回答 2

1

我一直在努力解决同样的问题,但对于 xslt 文件......我的解决方案是通过在 taglist.vim 中四处寻找找到的,我在其中添加了一行

let s:tlist_def_xslt_settings = 'xslt;f:function:v:variable'

尝试搜索 Vim 代码的 s:tlist_def_ 部分并输入一些看起来合理的内容。Tagbar 中也有类似的机制。我没有详细阅读代码,所以我不知道为什么它需要这个并且不使用 cta 的输出

于 2012-04-26T16:05:36.580 回答
1

这是我从官方文档中提取并保存为的一个小球拍片段tt.rkt

(define (checker p1 p2)
  (let ([p12 (hc-append p1 p2)]
        [p21 (hc-append p2 p1)])
    (vc-append p12 p21)))

如果没有特定于球拍的语法/缩进文件,无论ft设置为racket(当然)还是什么都不显示(默认),都不会显示任何内容。如果 I :set ft=scheme, TagList 和TagBar都列为checker“函数”。

从左到右:文件、TagBar、TagList。

TagList 和 TagBar 针对球拍文件

据我了解,“Racket”是一些 Scheme 衍生产品的品牌重塑。如果它没有偏离规范太多,在您的中添加这一行~/.vimrc可能会有所帮助:

autocmd BufRead,BufNewFile *.rkt set filetype=scheme
于 2012-01-26T08:22:51.617 回答