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.
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
;)
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.)
Sie können die Modus-Hook-Variable vorübergehend löschen und neu starten:
%Vor%Tags und Links emacs elisp common-lisp slime font-lock