在Rust语法中高亮显示匹配的尖括号

aepsil0n

试图修复Rust的vim插件中的错误,我认为可能值得对此寻求一些建议。

Rust具有<...>类似于C ++或Java的使用尖括号(表示的泛型但是,->内部可能会出现箭头()。例如,考虑表达式

Box<Fn(A) -> B>

当光标在左括号上时,vim突出显示箭头,>而不是右括号。

现在,我认为发生这种情况是因为语法区域匹配没有将箭头的可能存在特殊化。我试图通过改变来解决这个问题end=/>/,以end=/-\@<!>/在其定义。但是显然,这对括号突出显示没有影响。现在,我开始认为语法区域与此无关。

总而言之,我的问题是:如何更改括号突出显示的方式?

FDinoff

这实际上是由MatchParen插件处理的(所有vim安装都随附)。

MatchParen插件使用固定的语法属性列表在搜索匹配的括号时忽略(从中的第96行开始$VIMRUNTIME/plugin/matchparen.vim

  " When not in a string or comment ignore matches inside them.
  " We match "escape" for special items, such as lispEscapeSpecial.
  let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
    \ '=~?  "string\\|character\\|singlequote\\|escape\\|comment"'
  execute 'if' s_skip '| let s_skip = 0 | endif'

s_skip然后传递给searchpairpos以后。它似乎没有s_skip从插件外部进行任何修改

所以,如果你改变的所有实例rustArrowrustArrowCharacter支架高亮显示将是正确的。(有3个实例,其中2个变为syntax/rust.vim1个ftplugin/rust.vim)。检查只是检查字符串,字符,单引号,转义符或注释是否出现在语法属性的任何位置(不区分大小写)。如果确实没有,则在搜索匹配的括号时跳过它。

我建议在vim-dev上询问是否可以修补matchparen,以便可以将自定义语法属性添加到跳过列表中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Matlab中高亮显示滑动窗口

来自分类Dev

在终端中高亮显示用户@设备

来自分类Dev

包含尖括号<>的奇数属性声明语法

来自分类Dev

使用尖括号的Swift数组语法

来自分类Dev

使用尖括号的Swift数组语法

来自分类Dev

Sublime文字括号高亮显示

来自分类Dev

PHPStorm语法高亮显示错误

来自分类Dev

PHPStorm语法高亮显示错误

来自分类Dev

如何在C ++代码中高亮显示HTML代码块?

来自分类Dev

如何在PHP中高亮显示正确的单元格

来自分类Dev

在Highcharts中高亮显示系列中的一个小节?

来自分类Dev

删除Sublime文本中高亮显示的圆角文本

来自分类Dev

在 PHP 中高亮显示不同顺序的字符串

来自分类Dev

如何显示在尖括号(包括括号)之间写入的数据

来自分类Dev

“类<<类”(尖括号)语法的目的是什么?

来自分类Dev

错误消息显示意外的尖括号,但不应有意外的尖括号

来自分类Dev

如何在VIM语法高亮显示的已匹配区域内将文本标记为粗体?

来自分类Dev

正则表达式以匹配外部尖括号

来自分类Dev

在Facebook上分享时,显示尖括号而不是内容

来自分类Dev

我无法在转换后的epub书中显示乳胶尖括号

来自分类Dev

vim markdown语法高亮显示非常多

来自分类Dev

Vim python语法高亮显示很长的行

来自分类Dev

Sublime Text中Dockerfile的语法高亮显示?

来自分类Dev

HTML / PHP语法高亮显示的错误

来自分类Dev

Vim语法高亮显示Fortran OpenMP注释

来自分类Dev

Lua语法高亮显示arXiv的乳胶

来自分类Dev

字符串中的语法高亮显示

来自分类Dev

* live * vim语法在stdout上高亮显示?

来自分类Dev

Vim python语法高亮显示很长的行

Related 相关文章

热门标签

归档