我最近开始使用球拍,我做过的第一件事就是尝试让vim TagList plugin使用它。但是,它丝毫不起作用。我可以打开racket文件,TagList窗口就像我打开文本文件一样空白。
根据extending page *我已将以下内容添加到〜/ .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
我可以在命令行中使用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
如果我使用开关强制语言定义,或者我将语言更改为scheme,则输出相同。
关于TagBar
在人们提出建议之前,我没有见过TagBar。有趣的是,它只是改变了我的.ctags文件。不幸的是,我没有找到一个设置来按照TagList的方式显示所有加载缓冲区中的标记,所以我更喜欢使用TagList。
我会发布比较图片,但我认为它不会让我成为新成员。根据romainl的建议,我可以将vim文件类型设置为scheme,它确实有效。然而,这似乎只是一个80%的解决方案,当根据扩展页面的文档似乎表明我所拥有的应该工作。也许我应该看一下提交错误报告。
再次感谢,
答案 0 :(得分:1)
以下是我从official documentation解除并保存为tt.rkt
的小型球拍片段:
(define (checker p1 p2)
(let ([p12 (hc-append p1 p2)]
[p21 (hc-append p2 p1)])
(vc-append p12 p21)))
如果没有特定于球拍的语法/缩进文件,则无法显示ft
是否设置为racket
(当然)还是没有(默认设置)。如果我:set ft=scheme
,则TagList和TagBar将checker
列为“函数”。
从左到右:文件TagBar,TagList。
据我了解,“球拍”是一些Scheme衍生品的品牌重塑。如果它与标准没有太大差异,那么在~/.vimrc
中添加此行可能会有所帮助:
autocmd BufRead,BufNewFile *.rkt set filetype=scheme
答案 1 :(得分:1)
我一直在努力解决同样的问题,不过对于xslt文件......我的解决方案是通过在taglist.vim中进行搜索找到的,我为此添加了一行
let s:tlist_def_xslt_settings = 'xslt;f:function:v:variable'
尝试搜索Vim代码的s:tlist_def_部分并添加一些看起来合理的内容。 Tagbar中有类似的机制。我没有详细阅读代码,所以我不知道为什么它需要这个而不使用cta的输出