我正在尝试为此语言创建一个名为Sugar Cube 2的语法文件。您可以在此处找到更多相关信息:http://www.motoslave.net/sugarcube/2/docs/macros.html
通常,我不想在宏之间进行拼写检查(例如<<myDescription "This is a string that should be in english">>
)。但是,你可以创建自己的宏,而我碰巧创建了一个这样的宏:
syntax
如你所见,&#34;英语&#34;应该大写,因此在这种情况下进行拼写检查会很有用。
我已经了解了vim的keyword
。它是match
,region
,@NoSpell
,syn-priority
等等。但我真的很难将这些概念放在一起以实现我想要的目标:在特定宏之间进行拼写检查,但不是所有宏。这是我的想法,它利用了syn match macroDelimiter "\v(<<|>>)"
" there's much more keywords than this
syn keyword macroKeywords contained if elseif else myDescription
syn region mostMacros matchgroup=macroKeywords start="<<" end=">>" contains=@NoSpell
syn region myMacro matchgroup=macroKeywords start="<<myDescription" end=">>"
中描述的概念:
myDescription
我的意思是......我尝试过它并且有效。我不喜欢的一件事是myDescription
如何突出显示就像斜角括号一样。我也不喜欢单词set spell spelllang=en_us
syn match macroDelimiter "\v(<<|>>)"
" there's much more keywords than this
syn keyword macroKeywords contained if elseif else myDescription
syn region macroString start=+"+ end=+"+ skip=+\\"+
syn region mostMacros matchgroup=macroDelimiter start="<<" end=">>" contains=@NoSpell,macroString
"Notice how this is commented out
"syn region myMacro matchgroup=macroDelimiter start="<<myDescription" end=">>"
hi link macroKeywords Keyword
hi link macroDelimiter Constant
本身是如何拼写检查的,但我可以忍受这个单词。有没有办法解决这些问题?
这将解决上述问题:
<<link>>
但它增加了一个主要问题:还有其他带字符串的宏。 <<goto>>
和logging.path
宏也有字符串。但是我不想拼写那里的字符串。
答案 0 :(得分:1)
要摆脱matchgroup
的{{1}}突出显示,但仍然强制执行匹配,请通过myDescription
结束群组的开头:
\ze
这将为syn region myMacro matchgroup=macroKeywords start="<<\zemyDescription" end=">>" contains=@Spell
本身启用拼写。为避免这种情况,您必须将其语法从myDescription
变为keyword
,以便向其添加match
:
contains=@NoSpell