Ich versuche, eine Syntax-Datei für diese Sprache Zuckerwürfel genannt zu erstellen 2. Sie können weitere Informationen finden Sie hier: http://www.motoslave.net/sugarcube/2/docs/macros.htmlVim Syntax: Vorlesen zwischen bestimmten Regionen überprüft
Im Allgemeinen, ich will nicht buchstabieren Überprüfen Sie zwischen den Makros (z. B. <<if $myVariable>>
). Aber können Sie Ihre eigenen Makros zu machen, und ich zufällig eine gemacht zu haben, die wie folgt funktioniert:
<<myDescription "This is a string that should be in english">>
Wie Sie sehen können, „Englisch“ groß geschrieben werden sollte, so wäre es nützlich, Zauber zu haben Einchecken dieser Fall.
Ich weiß bereits über vim syntax
. Es ist keyword
, match
, region
, @NoSpell
usw. Aber ich habe wirklich Mühe, diese Konzepte zusammen zu bringen, um zu erreichen, was ich will: Rechtschreibprüfung zwischen einem bestimmten Makro, aber nicht alle Makros. Hier ist meine Idee, und es nutzt die beschriebenen Konzepte in 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=">>" [email protected]
syn region myMacro matchgroup=macroKeywords start="<<myDescription" end=">>"
ich meine ... ich versucht, und es funktioniert. Eine Sache, die ich nicht mag, ist, wie myDescription
genau wie die abgewinkelten Klammern hervorgehoben wird. Ich mag auch nicht, wie das Wort myDescription
selbst Rechtschreibprüfung ist, aber ich kann damit leben. Gibt es eine Möglichkeit, diese Probleme zu beheben?
Dadurch werden die oben genannten Probleme beheben:
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=">>" [email protected],macroString
"Notice how this is commented out
"syn region myMacro matchgroup=macroDelimiter start="<<myDescription" end=">>"
hi link macroKeywords Keyword
hi link macroDelimiter Constant
Aber es fügt ein großes Problem: Es gibt auch andere Makros mit Strings. Die <<link>>
und <<goto>>
Makros haben auch Strings. Aber ich möchte die Strings dort nicht buchstabieren.
syn region myMacro matchgroup=macroKeywords start="<<\zemyDescription" end=">>" [email protected]
Dies ermöglicht Schreibweise für myDescription
selbst:
Wo haben Sie erfahren, '\ ze'? Wo ist das in den Dokumenten? –
': help/\ ze'. Alle Schlüsselwörter für reguläre Ausdrücke beginnen mit '/'. Interessant für Syntax-Highlighting ist auch die (hässlichere) Alternative '\ @ =' (positive Lookahead, wie Perl '(? = ...).) Im Gegensatz zu '\ ze' verhindert dies nicht weitere Syntax-Matches an diesen Positionen –
Dies funktionierte perfekt.Danke! –