Wohin gehören benutzerdefinierte Hervorhebungsregeln?

11

Gelegentlich möchte ich die Standardsyntax überschreiben, die Farben und Stile mit meinen eigenen Einstellungen hervorhebt.

Ich stelle mir vor, dass der beste Weg, dies zu tun, darin besteht, mein eigenes Farbschema zu erstellen. Ich habe jedoch ein paar Fragen.

  1. Wenn ich eine Hervorhebung für eine bestimmte Syntaxgruppe in einer bestimmten Sprache festlegen möchte, gehört diese in mein Farbschema, oder ist es besser, sie zu platzieren after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Es scheint etwas seltsam, obskure sprachspezifische Regeln in das Farbschema einzufügen, da sie in jeder Sprache geladen werden, an der ich arbeite, aber es scheint noch schlimmer, Hervorhebungsregeln in die Syntaxdatei einzufügen.

  2. Manchmal erstelle ich neue Syntaxregeln für eine bestimmte Sprache in after/syntax/[filetype].vim. Wenn andere Benutzer diese Erweiterungen verwenden möchten, wäre es für mich angemessen, dort Standard-Hervorhebungsregeln anzugeben, die auf allgemeine Standard-Hervorhebungsgruppen verweisen? Wenn ein anderer Benutzer diese Hervorhebungsfarbe überschreiben möchte, wie sollte er das tun?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    
joeytwiddle
quelle

Antworten:

9

Erste Frage

Markierungsdefinitionen gehören zu Ihrem Farbschema. Die Tatsache, dass sie für jeden Puffer geladen werden, unabhängig von ihrer Sprache, sollte überhaupt kein Problem sein.

Wenn Sie Ihr Farbschema nicht bearbeiten möchten, können Sie diese Hervorhebungsdefinitionen wie folgt einfügen plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

Zweite Frage

Ihr Beispiel ist genau, wie Sie es tun sollten und wie jedes Syntax-Skript funktioniert. Mit dieser Methode kann der Plugin-Entwickler einen vernünftigen Standard definieren, ohne bestimmte Farben in den Hals des Benutzers zu zwingen.

romainl
quelle
Danke für die Bestätigung. Ich highlight link ...mache mir jedoch Sorgen, wenn ich Befehle in eine Syntaxdatei einfüge, die diese Einstellungen aus dem Farbschema jedes Mal überschreiben, wenn eine Datei mit diesem Dateityp geladen wird. Sollte ich das vielleicht erst tun, highlight link ...nachdem ich überprüft habe, dass für diesen Namen keine Hervorhebungsregel vorhanden ist?
Joeytwiddle
Ah, ich brauche mir keine Sorgen zu machen. Vim-Dokumente sagen: Wenn es bereits Hervorhebungseinstellungen für die {from-group} gibt, wird der Link nicht hergestellt, es sei denn, das '!' gegeben ist. Bei einem Befehl ": Highlight Link" in einer Quelldatei wird keine Fehlermeldung angezeigt. Dies kann verwendet werden, um Links für Gruppen zu überspringen, die bereits Einstellungen haben.
Joeytwiddle
Aber für Leute, die ihre Farbschemata optimieren, könnte ein highlight linkim Farbschema später durch ein highlight linkin einer Syntaxdatei überschrieben werden. Um dies zu vermeiden, können anstelle eines Links tatsächliche Argumente (ctermbg, guifg, ...) verwendet werden.
Joeytwiddle
Der Benutzer sollte das letzte Wort darüber haben, welche Farben für eine bestimmte Hervorhebungsgruppe verwendet werden. Zu diesem Zweck ist es nicht ungewöhnlich, sprachspezifische Hervorhebungsdefinitionen in Farbschemata zu sehen. Sie sollten es nur highlight link ...in Ihrem Syntax-Skript verwenden und Ihre Benutzer es überschreiben lassen, wenn sie dies möchten.
Romainl
Ich highlight link ...befürchtete, dass Benutzer, die sie in ihrem Farbschema verwenden, die Syntaxdatei möglicherweise später mit ihrer eigenen zurücksetzen highlight link .... Ich sehe jetzt, dass gute Syntaxdateien dies vermeiden, indem sie verwenden highlight default link .... Das sollte wahrscheinlich eine Korrektur der asmHexNumberRegel in meiner Frage sein.
Joeytwiddle