Question

Je suis en train de modifier légèrement SLIME pour pouvoir obtenir tous les symboles actuellement chargés de Lisp, les analyser et les rendre police de caractères à police verrouillée.

J'ai réussi à faire toutes ces étapes, mais j'ai un petit problème: quand la liste des mots-clés change dans font-lock, la mémoire tampon n'est pas mise à jour à moins que vous ne redémarriez le mode lisp principal. Je ne souhaite pas redémarrer le mode lisp à chaque fois que je mets à jour des mots-clés, car plusieurs points d'accrochage en mode lisp que je souhaite exécuter uniquement lorsque je charge le fichier pour la première fois.

Existe-t-il un autre moyen de mettre à jour font-lock afin de lire tous les nouveaux mots-clés, puis de définir le tampon en conséquence? Désactiver font-lock et utiliser font-lock-fontify-buffer ne fait pas l'affaire.

UPD: Bounty: la question est toujours d'actualité. J'ai besoin d'un moyen de recharger le mot clé Font-Lock sans recharger le mode majeur.

Était-ce utile?

La solution

Ok, que diriez-vous de cela plutôt:

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

Autres conseils

Déclencher le mode majeur n’est pas ce qui fait que font-lock fait son travail. Je ne connais pas très bien les éléments internes de SLIME ou de lisp-mode, mais il suffit de définir la variable pour que cela fonctionne. Si vous activez le mode font-lock, Font-lock se remodellisera avec les nouveaux mots-clés, tout comme font-lock-fontify-buffer .

Je pirate en mode cperl, principalement, et c’est une simple question de cperl-init-faces (qui définit les variables internes de police-lock) et un redémarrage de police-lock. Le mode lisp ne devrait pas être très différent, sauf qu'il n'est pas nécessaire d'appeler cperl-init-faces ;)

Modifier: certaines expériences avec le mode lisp-interaction-révèlent que même le redémarrage du mode font-lock-mode n’est pas strictement nécessaire. Il suffit de changer les mots-clés font-lock-aussi longtemps que vous relancez la fontification. (Édition de texte, font-lock-fontify-buffer, etc.)

Vous pouvez effacer temporairement la variable de hook de mode et la redémarrer:

(defun my-restart-lisp-mode ()
  (interactive)
  (let ((lisp-mode-hook nil))
    (normal-mode)))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top