next up previous contents
Next: 2.4.5 Sincronización de la Up: 2.4 Asociación indirecta por Previous: 2.4.3 Las funciones de

2.4.4 Puntos de sincronización

Mantener actualizada la TTLT en todo momento, esto es, cada vez que se inserta o borra un carácter, supone una carga computacional excesiva. Una solución consiste en establecer puntos de sincronización en los que realizar la actualización. De este modo, si tex2html_wrap_inline12843 ha sido el último punto de sincronización alcanzado, se debe garantizar que la información contenido en la tabla es consistente con el texto almacenado en el editor cuando se alcanzó tex2html_wrap_inline12843. Sin embargo, entre tex2html_wrap_inline12843 y tex2html_wrap_inline12849 la TTLT no reflejará la situación actual del texto editado. La información de la tabla será actualizada en cuanto se alcance tex2html_wrap_inline12849 utilizando para ello los datos viejos de la TTLT (los correspondientes a tex2html_wrap_inline12843) y cierta información recopilada durante el intervalo transcurrido entre los dos puntos de sincronismo consecutivos de forma que tan sólo se actualice aquella parte de la tabla que realmente se haya visto afectada por las modificaiones introducidas en el texto durante ese periodo.

Elección de los puntos de sincronización

La opción más viable con respecto a los puntos de sincronización consiste en utilizar para tal fin la terminación de cada operación de edición, puesto que una de las acciones a realizar al comienzo de la siguiente operacion consiste en encontrar el componente léxico al que pertenece el carácter señalado por el usuario. Para ello, es necesario que dispongamos de información actualizada sobre las asociaciones entre los propios componentes léxicos y el texto correspondiente.

Por consiguiente, se debe establecer un punto de sincronismo en los siguientes casos:

La información de operación

Para lograr una actualización consistente es necesario disponer de la siguiente información de operación referida a las modificaciones introducidas en el texto desde el último punto de sincronismogif:

Los tres últimos datos se pueden derivar de los dos primeros, pero se facilitan las cosas si se mantinene actualizados conforme se va modificando el texto. Para mantener actualizada la información de operación conforme se van insertando o borrando caracteres, es necesario capturar los eventos generados por el teclado.

Se deben definir dos funciones, insert-character y delete-character, que serán llamadas cuando se produzcan modificaciones interactivas en el editor. Cada vez que se produce una modificación interactiva en el texto almacenado en el editor se llama a la función insert-character. Es importante reseñar que dicha función es invocada una vez que el texto ya ha sido modificado. Por modificación interactiva se entiende aquella que ha sido realizada por el usuario haciendo uso del teclado o del ratóngif. Por tanto, no se consideran interactivas aquellas modificaciones realizadas mediante funciones definidas por el programador.

Mediante set-local-binding se atrapan los eventos de teclado provocados por la pulsación de las teclas DELETE y BACKSPACEgif sobre el texto del editor. La pulsación de dichas teclas ya no provocará el borrado de un carácter, sino que hará que se invoque a la función delete-character.

La función insert-charactergif recibirá como argumentos la instancia del editor involucrada y el comando correspondiente a la acción realizada sobre el texto. La misión de esta función será:

Por su parte, la función delete-charactergif tan sólo recibirá como argumento la instancia del editor involucrada. La misión de está función será:


next up previous contents
Next: 2.4.5 Sincronización de la Up: 2.4 Asociación indirecta por Previous: 2.4.3 Las funciones de

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997