微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Vim中是否有用于浏览/导航XSLT代码的Ctags工具?

需要一种使用Vim轻松导航/浏览XSLT文件方法.
类似于ctags可以与C/C++源代码一起使用的方式.
一个好的解决方案是允许只为自己安装脚本等或直接从Vim内部运行它们.仇恨不得不走出 vim只是为了搜索功能定义或“文本”搜索.

搜索了几个小时,想出了一些像’ack’这样的优秀线索.
显然,这可以使用ack.vim与vim集成.然而要正确地测试它.

基本上我应该能够浏览包含其他.xsl文件的.xsl文件的迷宫,并使用函数,模板.有什么建议?

我发现kipelovets’和GuruM的答案很有用,并找出了结合他们建议的解决方案:

.ctags文件

--langdef=xslt
--langmap=xslt:.xsl
--regex-xslt=/<xsl:template[^>]+name=\"([-a-zA-Z0-9_:]+)\"( +mode="([^"]+)")?/\1 \2/n,namedtemplate/i
--regex-xslt=/<xsl:template[^>]+match=\"([^"]+)\"( +mode="([^"]+)")?/\1     \2/m,matchedtemplate/i
--regex-xslt=/<xsl:apply-templates +select="([^"]{2,})"( +mode="([^"]+)")?/\1 \2/a,applytemplate/i
--regex-xslt=/<xsl:call-template +select="([^"]+)"( +mode="([^"]+)")?/\1 \2/c,calltemplate/i
--regex-xslt=/<xsl:variable[^>]+name=\"([-a-zA-Z0-9_]+)\"/\1/v,variable/i
--regex-xslt=/<xsl:function[^>]+name=\"([-a-zA-Z0-9_:]+)\"/\1/f,function/i
--regex-xslt=/<xsl:param[^>]+name=\"([-a-zA-Z0-9_:]+)\"/\1/p,parameter/i

vim标签栏设置(有些人可能觉得有用):

let g:tagbar_type_xslt = {
      \ 'ctagstype' : 'xslt',\ 'kinds'     : [
      \ 'n:templates (named)',\ 'm:templates (matched)',\ 'a:applied templates',\ 'c:called templates',\ 'f:functions',\ 'p:parameters',\ 'v:variables'
      \ ]
      \ }

它更好,但我仍然遇到的一些问题包括

>按模式分组模板
>空格,例如模板/变量等属性间的新行…
>确定变量和参数的范围,并应用模板和调用模板

>因此,如果您有多个具有相同名称但在不同模板中的变量,
不捕获它们所在模板的范围.

>评论模板,函数,变量和参数

未来尝试的更好方法

>用于解析来自xslt的信息的正则表达式可以正确地执行此操作
>最好的解决方案可能是使用xslt本身编写自定义xslt标记生成器.

>这是jsctags对javascript的作用
>标签文件的格式看起来很简单……所以我接下来会尝试这个.

>见Tag File Format

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐