2011-03-09 10 views
6

Estoy escribiendo un modo menor que dispensa consejos de escritura. Estoy usando superposiciones para resaltar los errores. Cuando el punto entra en la superposición, quiero mostrar con más detalle (con message por ahora, pero tal vez en una memoria intermedia separada.)¿Cómo se muestra un mensaje cuando el cursor ingresa una superposición en emacs?

help-echo es casi lo que quiero, pero yo uso GNU Emacs en el terminal, y help-echo es para el puntero del mouse, no es el punto.

point-entered es también casi lo que yo quiero, sino point-entered no tiene ningún efecto en las capas, propiedades de sólo texto.

Las superposiciones parecían atractivas, en primer lugar, porque es fácil borrarlas cuando vuelvo a escanear el búfer (estoy reproduciendo lo que hace re-builder aquí). ¿Debo continuar utilizando superposiciones pero usar ganchos de movimiento de puntos para encontrar las superposiciones, extraer las indicaciones, y mostrarlas? ¿Debo usar propiedades de texto en lugar de superposiciones?

+2

No soy un experto, pero parece que las superposiciones están destinadas a ser más "solo de escritura", para cambiar la presentación en lugar de cambiar el comportamiento. Parece que puedes hacerlo con superposiciones si usas ganchos de movimiento de puntos y funciones como 'superposiciones-a', pero las propiedades de texto pueden ser más idiomáticas. – dfan

Respuesta

0

Para obtener más ideas, echa un vistazo a auto-complete mode.

Aparece un menú en el punto por el que las personas pueden desplazarse. Puede que esto no sea exactamente lo que quieres, parece que no quieres un menú, pero mirar el código puede ser interesante.

enter image description here

Véase también el método tooltip-show, parte de tooltip.el.

tooltip-show is a compiled Lisp function in `tooltip.el'. 

(tooltip-show TEXT &optional USE-ECHO-AREA) 

Show a tooltip window displaying TEXT. 

Text larger than `x-max-tooltip-size' is clipped. 

If the alist in `tooltip-frame-parameters' includes `left' and `top' 
parameters, they determine the x and y position where the tooltip 
is displayed. Otherwise, the tooltip pops at offsets specified by 
`tooltip-x-offset' and `tooltip-y-offset' from the current mouse 
position. 

Optional second arg USE-ECHO-AREA non-nil means to show tooltip 
in echo area. 
0

En general, no es un buen diseño para reaccionar en los movimientos del ratón, como el ratón es muy probable que pasar por sus áreas por muchas razones.

Le aconsejo que implemente esto en, por ejemplo, el botón de menú derecho.

Cuando se trata de superposiciones frente a propiedades de texto, una diferencia es que las propiedades de texto se conservan al hacer buffer-substring, que probablemente no es lo que desea. Otra es que las propiedades de texto se comparten entre los búferes heredados (aunque esta es una característica que rara vez se usa).

+1

No está tratando de reaccionar a los movimientos del mouse; él quiere reaccionar al punto. – dfan

+0

Mi error. Sin embargo, el mismo argumento se puede hacer para el movimiento de puntos. – Lindydancer

+0

Sí, quiero reaccionar al movimiento del punto, no al movimiento del mouse. No estoy especialmente preocupado por el punto que atraviesa una región por otras razones: el texto repetido es no modal y periférico.Pero tengo curiosidad por saber qué UI crees que es mejor para esto. Algo como correr ispell es * manera * demasiado pesado para mí; Quiero que brinde retroalimentación sutil y continua. –

0

Puede intentar cursor-sensor-mode (que es nuevo en Emacs-25) que le permite realizar acciones en las propiedades de texto cursor-sensor-functions (incluidas las superposiciones).

Se tiene la intención de reemplazar la propiedad point-entered y reacciona a los movimientos del cursor en lugar de a los movimientos de point (los dos están estrechamente relacionados, pero diferentes: una orden dada puede mover el punto muchos veces internamente, pero el cursor solo se moverá una vez, al final cuando se actualice la pantalla).

Cuestiones relacionadas