Aktualisieren von Font-Lock-Schlüsselwörtern in Emacs ohne Neuladen des Hauptmodus

8

Ich mache eine kleine Änderung an SLIME, damit ich alle aktuell geladenen Symbole von Lisp bekommen kann, sie analysiere und sie mit font-lock verifiziere.

Ich habe alle diese Schritte ausgeführt, aber ich habe ein kleines Problem: Wenn die Schlüsselwortliste in der Schriftartverriegelung geändert wird, wird der Puffer nicht aktualisiert, es sei denn, Sie starten den Major Lisp-Modus neu. Ich möchte den Lisp-Modus nicht jedes Mal neu starten, wenn ich Schlüsselwörter aktualisiere, weil ich mehrere Haken im Lisp-Modus habe, die ich nur ausführen möchte, wenn ich die Datei zum ersten Mal lade.

Gibt es eine andere Möglichkeit, die Font-Lock-Funktion zu aktualisieren, damit alle neuen Schlüsselwörter gelesen werden und der Puffer entsprechend gekennzeichnet wird? Das Ausschalten von font-lock und die Verwendung von font-lock-fontify-buffer macht den Trick nicht.

UPD: Zusätzliche Bounty - die Frage ist noch offen. Ich brauche eine Möglichkeit, Font-Lock-Schlüsselwort neu zu laden, ohne Major-Modus neu zu laden.

    
freiksenet 16.09.2009, 09:07
quelle

3 Antworten

5

Ok, wie wäre es stattdessen:

%Vor%     
scottfrazer 18.09.2009, 15:18
quelle
1

Das Auslösen des Hauptmodus ist nicht das, was Font-Lock dazu bringt, sein Ding zu machen. Ich bin nicht vertraut mit den Interna von SLIME oder Lisp-Modus, aber nur die Variable setzen sollte es funktionieren. Wenn Sie den Font-Lock-Modus aktivieren, wird die Font-Lock-Funktion mit der Neudefinition der neuen Keywords beginnen, ebenso wie font-lock-fontify-buffer .

Ich hack 'im cperl-Modus, meistens, und es ist eine einfache Sache von cperl-init-faces (was die internen Font-Lock-Variablen setzt) ​​und einen Neustart von font-lock. Lisp-Modus sollte nicht viel anders sein, außer dass kein Aufruf von cperl-init-faces ;)

benötigt wird

Edit: einige Experimente mit dem lisp-interaction-mode zeigen, dass ein Neustart des Font-Lock-Modus nicht unbedingt notwendig ist. Das Ändern von Font-Lock-Keywords ist ausreichend, solange Sie die Fontification irgendwie erneut auslösen. (Bearbeiten von Text, font-lock-fontify-buffer, etc.)

    
jrockway 16.09.2009 09:12
quelle
1

Sie können die Modus-Hook-Variable vorübergehend löschen und neu starten:

%Vor%     
scottfrazer 16.09.2009 17:31
quelle