2009-10-19 12 views
34

Estoy intentando cambiar a Emacs como mi principal editor de código fuente. Realmente echo de menos una cosa (común incluso en editores mucho más simples) - guías de sangría (líneas verticales discretas que muestran el nivel de sangría). ¿Emacs puede mostrarlos?¿Cómo mostrar las guías de sangría en Emacs?

+4

Es útil al leer algunos códigos. – Thotep

+2

Como sucede, las guías de sangría serían realmente útiles al editar código Lisp. –

+0

@ user181548 más información es igual a menos errores. en vim utilizo 'set listchars = tab: ░ \' (char antes de que "\" sea un bloque de caracteres que no aparezca aquí, creo, puede ser reemplazado por "|" y aún se ve bien. después de la "\" es un personaje de espacio) – gcb

Respuesta

69

que he hecho una función highlight-indentation para este propósito, code is on github.

Cuando se invoca highlight-indentation sin un argumento prefijo nivel de sangría actual se supuso ingenuamente de modo mayor (Python, Ruby y lenguajes basados ​​en cc-mode). Solo funciona para indentaciones espaciales. Personalice highlight-indent-face para cambiar la apariencia de las líneas de sangría.

Ejemplos (Ruby, Python): Ruby, Python example

También uso con frecuencia este fragmento que se dobla todo el código en un nivel de sangría mayor que la línea actual. Es una gran manera de obtener una visión general rápida del esquema.

(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

Para cargar esto automáticamente para archivos JavaScript y Python, agregué lo siguiente a mis .emacs:' (requiere 'highlight-indentation) (add-hook' python-mode-hook 'highlight-indentation -mode) (add-hook 'js2-mode-hook' highlight-indentation-mode) ' – Tom

+2

Hola, he agregado esto a mis .emacs, pero no parece que mis archivos python tengan el mismo aspecto que en la pantalla. No veo ninguna línea de sangría como en tu ejemplo. ¿podrías aconsejar? –

+2

+1 para alternar. Tenga en cuenta que, si habilita 'highlight-indentation-mode' y no ve nada, es probable que sea porque está usando * pestañas *. – harpo

5

que yo sepa, nadie ha implementado guías de sangrado para Emacs hasta el momento. Lo más parecido que puede obtener es la visualización de TAB con el paquete de espacio en blanco, consulte Show tabs with a different character (Emacs).

+0

Tenga en cuenta que también puede visualizar espacios: 'M-x customize-variable RET whitespace-space' luego' M-x customize-variable RET whitespace-style' y agregue estos dos tokens a la expresión Lisp: 'spaces spaces-mark'. Por ejemplo, mi 'whitespace-style' se ve así:' '(pestañas líneas de cola-cola espacio-antes-pestaña nueva línea hueca espacio-después-pestaña de tab-marca espacios marca-espacio) ' –

+0

@NoahSussman the' customize-variable 'no tiene esa variable oo –

0

Supongamos que puede doblar ColumnMarker según sus necesidades pero resaltará una columna que no le da un solo píxel.

me guión con 8 espacios así que nunca he pensado en ello; P

Cuestiones relacionadas