2009-10-19 12 views
34

Sto provando a passare a Emacs come al mio editor di codice sorgente principale. Mi manca davvero una cosa (comune in editor anche molto più semplici) - guide di indentazione (linee verticali non invadenti che mostrano il livello di indentazione). Emacs è in grado di visualizzarli?Come visualizzare le guide di indentazione in Emacs?

+4

È utile durante la lettura del codice. – Thotep

+2

In questo caso, le guide di indentazione sarebbero davvero utili quando si modifica il codice Lisp. –

+0

@ user181548 più informazioni equivalgono a meno errori. su vim io uso 'set listchars = scheda: ░ \' (char prima di "\" è un blocco char che non verrà mostrato qui penso, può essere sostituito da "|" e sembra ancora buono. dopo "\" è un carattere spaziale) – gcb

risposta

69

che ho fatto una funzione highlight-indentation per questo scopo, code is on github.

Quando si richiama highlight-indentation senza un argomento prefisso il livello di indentazione corrente è ingenuamente indovinato dalla modalità principale (python, ruby ​​e lingue basate su cc-mode). Funziona solo per le rientranze spaziali. Personalizza highlight-indent-face per modificare l'aspetto delle linee di indentazione.

Esempi (rubino, pitone): Ruby, Python example

Inoltre uso spesso questo frammento che si ripiega tutto il codice su un livello di rientro maggiore della riga corrente. È un ottimo modo per ottenere una rapida panoramica della struttura.

(defun aj-toggle-fold() 
    "Toggle fold all lines larger than indentation on current line" 
    (interactive) 
    (let ((col 1)) 
    (save-excursion 
     (back-to-indentation) 
     (setq col (+ 1 (current-column))) 
     (set-selective-display 
     (if selective-display nil (or col 1)))))) 
(global-set-key [(M C i)] 'aj-toggle-fold) 
+7

Per caricare automaticamente questo file per JavaScript e Python, ho aggiunto quanto segue al mio .emacs:' (richiede 'indentazione highlight') (punto di aggancio per evidenziare "hook-mode-hook" add-hook -mode) (aggancio-aggancio 'js2-mode-hook' highlight-indentation-mode) ' – Tom

+2

Ciao, l'ho aggiunto al mio .emacs, ma non sembra che i miei file python abbiano lo stesso aspetto sullo schermo. Non vedo linee di indentazione come nel tuo esempio. potresti consigliarti? –

+2

+1 per la piegatura. Nota agli altri, se abiliti 'highlight-indentation-mode' e non vedi nulla, è probabilmente perché stai usando * tab *. – harpo

5

a mia conoscenza nessuno ha implementato le guide all'indentazione per Emacs finora. La cosa più vicina che puoi ottenere sono la visualizzazione dei TAB con il pacchetto spazi bianchi, vedi Show tabs with a different character (Emacs).

+0

Nota puoi anche visualizzare gli spazi: 'M-x personalizzare-variabile RET spazio-spazio' poi' M-x personalizzare-variabile RET spazio-stile 'e aggiungere questi due token all'espressione Lisp: 'spazi spazi-mark'. Ad esempio, il mio 'whitespace-style' al momento assomiglia a questo:' '(tabulazioni trailing lines-tail space-before-tab rientro di nuova riga spazio vuoto-dopo-scheda tab-mark spazi spazio-mark) ' –

+0

@NoahSussman' personalizzabile 'Non ho una tale variabile oo –

0

Supponiamo di poter piegare ColumnMarker alle proprie esigenze ma si evidenzierà una colonna non concedendo un singolo pixel.

mi trattino con 8 posti così ho mai pensato; P

Problemi correlati