您尚未登录。

#1 2014-07-10 17:38:34

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 414
个人网站

[vim] syn match contained 为什么会无缘无故被高亮?

syn match mySuck "MATCH_NOTHING" contains=myFuck

syn match myFuck "_NOT" contained containedin=mySuck
hi link myFuck ErrorMsg

在 filetype=lua 时,明明没有匹配 mySuck,myFuck 为什么会被高亮(而且还不是全部都高亮了……)?
00e44ad0465e64b5a8a93cf13b03516db67fd1.png

该如何避免这种情况的发生?

最近编辑记录 cjxgm (2014-07-10 17:39:30)

离线

#2 2014-07-10 18:48:05

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,492
个人网站

Re: [vim] syn match contained 为什么会无缘无故被高亮?

因为 syntax/lua.vim 里有这个:

syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn

离线

#3 2014-07-10 19:55:46

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 414
个人网站

Re: [vim] syn match contained 为什么会无缘无故被高亮?

百合仙子 说:

因为 syntax/lua.vim 里有这个:

syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn

那,如果不修改 syntax/lua.vim,要怎么把自己定义的 match 排除出去呢?

离线

#4 2014-07-10 20:18:04

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,492
个人网站

Re: [vim] syn match contained 为什么会无缘无故被高亮?

cjxgm 说:
百合仙子 说:

因为 syntax/lua.vim 里有这个:

syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn

那,如果不修改 syntax/lua.vim,要怎么把自己定义的 match 排除出去呢?

覆盖之?

离线

#5 2014-07-10 21:45:28

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 414
个人网站

Re: [vim] syn match contained 为什么会无缘无故被高亮?

百合仙子 说:
cjxgm 说:
百合仙子 说:

因为 syntax/lua.vim 里有这个:

syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn

那,如果不修改 syntax/lua.vim,要怎么把自己定义的 match 排除出去呢?

覆盖之?

lua.vim 里有大量的 ALLBUT 啊……难道要我一个一个覆盖么…………

离线

#6 2014-07-11 11:43:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,492
个人网站

Re: [vim] syn match contained 为什么会无缘无故被高亮?

cjxgm 说:

lua.vim 里有大量的 ALLBUT 啊……难道要我一个一个覆盖么…………

用脚本生成呗。

离线

页脚