Frage

Ich mache kleine Änderung SLIME, so dass ich alle aktuell geladene Symbole von Lisp bekommen, analysieren und font-lock fontify sie machen.

ich es geschaffen, all diese Schritte zu tun, aber ich habe ein kleines Problem - wenn Keyword-Liste Änderungen in font-Sperre wird der Puffer nicht aktualisiert, wenn Sie den großen Lisp-Modus neu starten. Ich will nicht Lisp-Modus ich Keywords aktualisieren jedes Mal neu zu starten, weil ich mehrere Haken an Lisp-Modus haben, die ich will nur laufen, wenn ich die Datei zum ersten Mal laden.

Gibt es eine andere Art und Weise font-lock zu aktualisieren, so dass es alle dann neue Keywords liest und fontifies die Puffer entsprechend? Ausschalten font-lock und mit font-lock-fontify-buffer den Trick nicht tun.

UPD: hinzugefügt Bounty - die Frage ist nach wie vor hoch. Ich muß einen Weg font-lock Schlüsselwort laden ohne großen Modus neu zu laden.

War es hilfreich?

Lösung

Ok, wie wäre es damit statt:

(defun my-font-lock-restart ()
  (interactive)
  (setq font-lock-mode-major-mode nil)
  (font-lock-fontify-buffer))

Andere Tipps

den Haupt-Modus Auslösung ist nicht das, was macht font-Sperre nicht sein Ding. Ich bin nicht vertraut mit den Interna von SLIME oder Lisp-Modus, sondern nur die variable Einstellung sollte es funktioniert. Makel font-Lock-Modus wird font-lock machen beginnt mit den neuen Keywords im Auge refontifying, wie sollte font-lock-fontify-buffer.

I hack auf cperl-Modus, vor allem, und es ist einfach eine Frage der cperl-init-faces und einen Neustart von font-lock (die die internen font-lock-Variablen setzen). Lisp-Modus sollte nicht viel anders sein, mit Ausnahme nicht um einen Anruf cperl-init-faces benötigen;)

Edit: einige Experimente mit Lisp-Interaktion-Modus zeigen, dass auch font-Lock-Modus Neustart nicht unbedingt erforderlich ist. Nur font-lock-Keywords zu ändern ist genug, so lange wie Sie fontification-Trigger wieder irgendwie. (Bearbeiten von Text, Schriftart-Lock-fontify-Puffer, etc.)

Sie können vorübergehend den Modus Haken Variable löschen und neu starten:

(defun my-restart-lisp-mode ()
  (interactive)
  (let ((lisp-mode-hook nil))
    (normal-mode)))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top