font-lock – Vamos a vincular una variable mientras se bloquea la fuente

Pregunta:

Estoy escribiendo una regla de bloqueo de fuente que llama a una función para decidir qué cara aplicar a un símbolo. Aquí hay una versión simplificada:

("\\(?1:\\s_+\\)"
 (1 (the-function 1)))

El problema es que esta función necesita generar algunos datos que son un poco lentos de calcular. Entonces, cuando jit-font-lock comienza a llamar a esta función para cada símbolo en el búfer visible, el retraso es notable.

Podría setq estos datos "ligeramente costosos" en una variable,

(setq data-cache (generate-data))

y luego the-function podría usar data-cache lugar de llamar a generate-data cada vez. Pero luego tendría que pasar por algunos aros no triviales para asegurarme de que este caché siempre se invalide correctamente.

P: ¿El motor de bloqueo de fuentes ofrece ayuda en este sentido? ¿Cómo puedo asegurarme de que solo se ejecute (generate-data) una vez por nueva visualización?

Idealmente, me gustaría especificar algo como “dejar-enlazar data-cache al valor de retorno de (generate-data) . De esta manera sabría que este caché nunca estuvo desactualizado.

Respuesta:

Quizás podría usar el mecanismo de indirección de font-lock, configurando font-lock-fontify-region-function en una función que permita-enlazar data-cache alrededor de la llamada al valor anterior de font-lock-fontify-region-function . Algo así como un consejo, excepto que el mecanismo de indirección le permite hacerlo de una manera más limpia.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım