2016-04-01 10 views
2

Da ich oft this vor dem Überschreiben in Schließungen bewahren muss, mache ich gerne: var self = this; an der Spitze meiner Konstruktoren. Ich möchte nachfolgend self genau hervorheben, wie und wann this gerade hervorgehoben ist. Nach dem Studium der Emacs-Dokumentation, der Webseiten und Beispiele hier und der Anpassung der Beispiele funktioniert das nicht. Ich Auswertung dieses Ausdrucks:emacs font-lock-mode für JavaScript: möchte 'self' genau wie 'this' hervorheben

(font-lock-add-keywords 'javascript-mode 
     '(("self" . 'font-lock-keyword-face))) 

sowohl in meiner .emacs-Datei und in der JavaScript-Puffer, und auch font-lock-mode Makeln eine Aktualisierung zu erzwingen. Ich habe Varianten mit der verwirrenden "\\<self\\>" Syntax versucht, aber ich werfe deutlich Darts, weil das auch fehlschlägt. Ich sehe viele Variationen von font-lock-add-keywords, aber nur ein Emacs Power User und kein Entwickler, scheint es byzantinisch.

Als Kontext ist dies GNU Emacs 24.5.1 läuft als native Mac OS X 10.11.5 App, nicht im Terminal.

+0

emacs.stackexchange.com kann zu einem besseren Ort für Fragen wie diese, obwohl da Ihre Frage ist spezifisch für Verwendung als eine IDE, SO kann auch OK sein. – Barmar

+0

Selbst zu benutzen ist heutzutage fast nie notwendig. Arrow-Funktionen erledigen den Job in der Regel. Vielleicht möchten Sie diese Gelegenheit nutzen, um mit einem nicht selbst programmierenden Stil zu experimentieren. –

+0

Sehr selbstlos von Ihnen, darauf hinzuweisen. – BaseZen

Antwort

3

Interessant, wie das Posten hier meine eigene Fehlersuche verbessert. :-)

JavaScript-Modus ist eigentlich js-mode, nicht javascript-mode. Ich habe nicht die Geduld herauszufinden, warum es zwei gibt, wahrscheinlich historisch. Also diese arbeitete, zwei Nettigkeiten (Wortgrenze und richtiges Gesicht) Fixierung auf dem Weg:

(add-hook 'js-mode-hook (lambda() 
      (font-lock-add-keywords 'js-mode '(("\\<self\\>" . 'font-lock-constant-face))))) 
+0

'javascript-mode' ist ein Alias ​​für' js-mode', aber andere Namen müssen korrekt sein ('js-mode-hook', etc), so dass es von Zeit zu Zeit zu Verwirrung kommt ... – phils