2013-02-15 19 views
24

Penso che l'evidenziazione standard sia utile - in una certa misura. Quando si programma con callback e strutture nidificate, questo non aiuta. Parole chiave e archi, compaiono ovunque, e aiuta quando sono mostrati in un colore distinto, ma questi colori non danno la minima idea di quale portata sono, dove sono in una prospettiva lessicale.Vim evidenziazione del contesto

Ho sentito parlare di evidenziazione del contesto, in un discorso di Douglas Crockford, che non riesco a ricordare un url a. L'idea è di evidenziare i livelli lessicali di scopo. Le definizioni di livello superiore sono colorate in color0, le istruzioni di livello interno sono colorate in color1 e questo si ripete ricorsivamente ogni volta che viene introdotto un nuovo livello di ambito. Di seguito è riportato un esempio per questo, utilizzando alcune librerie di nodi immaginari. (Ora aggiunto un (ish (o schema lisp)) esempio)

Example. Pseudo Scheme Multi-Paren Example

Questo non è necessariamente per il nodo o JavaScript. Mi chiedo se ci sia un plugin per editor/vim che implementa questo tipo di funzionalità. Non so se il contesto evidenziato è la parola per questo, ma non riesco a trovarne uno. Googling per l'evidenziazione del contesto mostra i risultati per l'evidenziazione dei token generici e ConTeXt (di cui non ho la minima idea).

Esiste? C'è un editore che implementa questo? E ancora più importante, posso avere questo in vim?

Un'altra questione che è identico al mio, con nessuna vera risposta: Is Crockford style Context Coloring implemented in any code editor?

+0

Mi piace questo.Non sarebbe se & else fosse lo stesso livello e il loro rispettivo {} fosse un altro livello? – gooddadmike

+0

Il problema con i colori in generale e i colori in particolare è che in realtà non hanno un ordine naturale che potrebbe essere utilizzato per indicare il contesto. I colori dell'arcobaleno possono essere un'approssimazione di un tale ordine ma non funzionano con le idee di nidificazione o gradualità, IMO. La luminanza potrebbe essere utilizzata, forse: più chiara attorno al cursore e progressivamente più scura man mano che andiamo via. Questa è un'idea interessante, comunque. – romainl

+8

Ecco un link a [Talk di Douglas Cockroft su YouTube] (https://www.youtube.com/watch?v=dkZFtimgAcM). Parla di "colorazione del contesto" alle 17:30 circa. Una differenza importante è che le sue variabili sono colorate in base all'ambito in cui sono state dichiarate, non all'ambito in cui appaiono. –

risposta

1

Non esattamente quello che si richiede, ma raggruppamento del codice è una funzione potente che consente di concentrarsi su livelli specifici di codice. Vim supporta pieghevoli http://vim.wikia.com/wiki/Folding

guide rientro sono molto utili anche per mettere a fuoco specifiche parti del codice. L'editor di testo sublime ha questo (http://sublimetext.userecho.com/topic/98136-indent-guide-highlighting-changed/)

Ho visto questo plugin per vim (https://github.com/nathanaelkane/vim-indent-guides) che sembra fare la stessa cosa.

È possibile creare un evidenziatore di sintassi che utilizza la logica di indentazione di questo plug-in per modificare lo schema dei colori. Quello che descrivi è più coinvolto dove ha bisogno di lavorare non solo fuori dall'indention, ma come un parser di linguaggio.

+0

Grazie a @hwatkins, ma questo non risponde alla mia domanda. Ma concordo con l'ultimo paragrafo. –

0

C'è ora un plugin per questo in VIM chiamato vim-js-context-coloring. Ho solo giocato un po 'e non sono ancora molto colpito, ma sembra promettente!

Nota: è necessario installare npm e quindi eseguire npm install nella directory in cui è installato il plug-in. Purtroppo, ho dimenticato di leggere le istruzioni quando l'ho installato.

2

anche io non riuscivo a trovare qualcosa di simile, così ho scritto uno:

rainbow_levels.vim: Un approccio diverso al codice di evidenziazione.

Naturalmente si tratta di un'implementazione molto semplicistico, solo considerando i livelli di rientro al posto di contesto reale, ma ottiene il lavoro fatto; D

Problemi correlati