2012-07-09 7 views
7

Ispirato dalla modalità di messa a fuoco di ia Writer, sono interessato all'utilizzo di colori di sfondo + font in emacs per accentuare la funzione del cursore e visualmente citare il resto del codice come sfondo (io uso C++, ma sarebbe bello se questo ha funzionato indipendentemente dal linguaggio di programmazione).Emacs - come usare i colori per accentuare visivamente la funzione in cui si trova il cursore?

Idealmente il colore del carattere del codice esterno alla funzione sarebbe attenuato (questa è la modalità di messa a fuoco). Una soluzione più semplice probabilmente è quella di cambiare leggermente il colore di sfondo per la funzione in cui si trova attualmente il cursore. Come può essere fatto?

+2

davvero una risposta alla tua domanda, ma si poteva fare 'Mx stretta-to-defun' (o 'Cx n d ') che mostrerà solo la funzione corrente. Quindi 'M-x widen' (o 'C-x n w') per mostrare di nuovo l'intero file. – scottfrazer

+0

1. Gli Emac devono tenere traccia della funzione in cui ti trovi. – aartist

+0

Un suggerimento più semplice: potresti usare la modalità 'quale-funzione' o usare qualche funzione per scrivere la tua funzione di colorazione. 'which-func' visualizzerà il nome della funzione sulla riga della modalità se il cursore è in uno. Oppure mostra qualcos'altro per suggerire che il cursore non è in una funzione. – vpit3833

risposta

2

Nulla di simile esiste AFAIK. Se vuoi scriverlo da solo, ecco uno schizzo:

  1. Scrivere una routine che determina i limiti della funzione corrente. Il modo più semplice per farlo è con (bounds-of-thing-at-point 'defun).

  2. Scrivere una routine che, quando viene assegnato il limite di una regione, gets the background face property of the region della regione, si scurisce e applica la nuova faccia alla regione.

  3. Override font-lock-fontify-region-function (vedi here) con una routine che chiama il valore originale di questa variabile, differenze data regione con la regione del defun corrente (utilizzando # 1), e quindi applica procedura # 2 alla regione rimanente .

Io preferirei blocco carattere prioritario, per esempio, utilizzando jit-lock-register perché è necessario per controllare l'ordine di fontification.

HTH!