2012-07-09 16 views
7

Inspirado por el modo de enfoque de ia Writer, estoy interesado en usar colores de fondo font + en emacs para acentuar la función del cursor y visualmente el resto del código como fondo (uso C++, pero sería bueno si esto funcionó independientemente del lenguaje de programación).Emacs: cómo usar los colores para acentuar visualmente la función en que se encuentra el cursor?

Idealmente, el color de fuente del código fuera de la función se atenuaría (así es como funciona el modo de enfoque). Una solución más simple probablemente sea cambiar el color de fondo ligeramente para la función en la que el cursor se encuentra actualmente. ¿Cómo se puede hacer esto?

+2

realmente una respuesta a su pregunta, pero que podría ser 'Mx estrecha-to-defun' (o 'Cx n d ') que solo mostrará la función actual. Luego 'M-x ampliar' (o 'C-x n w') para mostrar todo el archivo de nuevo. – scottfrazer

+0

1. Emacs necesita mantener un registro de la función en la que se encuentra. – aartist

+0

Una sugerencia más fácil: puede usar el modo 'which-func' o usar alguna función allí para escribir su propia función de color. 'which-func' mostrará el nombre de la función en la línea de modo si el cursor está en uno. O muestra algo más para sugerir que el cursor no está en una función. – vpit3833

Respuesta

2

Nada como esto existe AFAIK. Si desea que lo escriba usted mismo, aquí hay un boceto:

  1. Escriba una rutina que determine los límites de la función actual. La forma más fácil de hacerlo es con (bounds-of-thing-at-point 'defun).

  2. Escriba una rutina que, cuando se le den los límites de una región, gets the background face property of the region de la región, la oscurece y aplica la nueva cara a la región.

  3. Anulación font-lock-fontify-region-function (ver here) con una rutina que llama al valor original de esta variable, las diferencias de la región dada con la región de la definición de función actual (usando # 1), y luego se aplica la rutina # 2 a la zona restante .

yo preferiría bloqueo de la fuente primordial de, por ejemplo, usando jit-lock-register porque es necesario para controlar el orden de resaltado.

HTH!

Cuestiones relacionadas