Syntax-Hervorhebung für einen Kommentarbereich in Emacs hinzufügen

558
Sean Allred

Ich habe folgendes

(defun add-c-syntax-highlighting () (font-lock-add-keywords nil '( ("\\<\\(\\-+\\)" 1 font-lock-warning-face prepend) ("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)))) 

mit

(add-hook 'c-mode-common-hook 'add-c-syntax-highlighting) 

Das Testen dieses einfachen Puffers führt zu scheinbar widersprüchlichen Ergebnissen:

//FIXME: //------------- 

mit nur FIXMEfontified. Was mache ich falsch?

1

1 Antwort auf die Frage

2
Stefan

Meine Kristallkugel sagt mir, was Sie falsch machen, ist Code kopieren und einfügen, den Sie nicht verstehen. Sieht aus, als würde es heute sarkastisch sein, sorry, ich verspreche, dass ich bald einen neuen bekomme.

Ihr Problem ist der \\<in Ihrem Regex-Ausdruck. Dies ist ein spezieller Konstruktor, der mit dem Anfang eines Wortes übereinstimmt. Daher kann er niemals vor einem Wort passen, -da Wörter nur mit den richtigen Buchstaben oder Ziffern beginnen können.

Ich war mir sicher, dass es der Kommentarstart in der Syntax-Tabelle war. Ich versuche es so schnell wie möglich, danke Sean Allred vor 10 Jahren 0
Danke noch einmal. Ich habe versucht, hier einen Verweis auf die Syntax des regulären Ausdrucks zu finden; da `\\ <` kein Standard ist, muss * eine Dokumentation darüber enthalten sein. Ich konnte es jedoch nirgendwo im Handbuch finden - wissen Sie, wo ich suchen muss? Sean Allred vor 10 Jahren 0
@SeanAllred: Ja, siehe [Elisp-Handbuch, Knoten `Regexp Backslash`] (https://www.gnu.org/software/emacs/manual/html_mono/elisp.html#Regexp-Backslash) und sucht nach \ <`. Informationen zum Verdoppeln der Informationen finden Sie im Knoten [`Syntax for Strings`] (https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-for-Strings.html#Syntax-for-Strings) Backslash Drew vor 10 Jahren 0
Im Handbuch. Dies ist der Spezialoperator "\", bei dem der String in Strings verdoppelt werden muss, da es sich um ein spezielles Escape-Zeichen in Strings handelt. Stefan vor 10 Jahren 0
Bevor ich ein anderes Q frage (falls es ein anderer dummer Fehler wie dieser ist ...), gibt es einen Grund, warum es für dieses Gesicht funktionieren sollte? https://gist.github.com/vermiculus/6b2e6aad3c2ec14dc20d @Drew Ah, ich denke, es gibt keinen (einfachen) Weg, um nur Kommentar-Syntax zu markieren. Sean Allred vor 10 Jahren 0
@SeanAllred: Ich bin nicht sicher, was Sie fragen, und ich bin kein Experte für die syntaktische Zeichensperre (* Stefan ist *), aber siehe [(elisp) `Syntactic Font Lock`] (https: // www. gnu.org/software/emacs/manual/html_node/elisp/Syntactic-Font-Lock.html#Syntactic-Font-Lock), um Informationen darüber zu erhalten. Eine Alternative besteht darin, Ad-hoc-Hervorhebung zu verwenden, und zwar "über" der Hervorhebung von Schriften durch Schriftmarkierung. Dazu können Sie beispielsweise die Bibliothek ["highlight.el"] (http://www.emacswiki.org/HighlightLibrary) verwenden. Drew vor 10 Jahren 0