2009-08-05 18 views
6

Así que la autodentación de emacs para CSS me está volviendo loco. Aquí es lo que me gusta CSS para que parezca:Sangría CSS en emacs

#foo ul.bar { 
    .... 
} 

    #foo ul.bar li { 
     .... 
    } 

     #foo ul.bar li a { 
      .... 
     } 

Esto es lo que emacs me da con su sangría automática:

#foo ul.bar { 
    .... 
} 

#foo ul.bar li { 
    .... 
} 

#foo ul.bar li a { 
    .... 
} 

me gusta mantener mis estilos sangría progresivamente si utilizan la cascada. Sin embargo, emacs lo autoiniciará todo al mismo nivel.

¿Algo que pueda hacer?

+0

¿Has encontrado una solución? Estoy teniendo el mismo problema. – vise

+0

No, hasta donde puedo decir, sin una pestaña vinculante para insertar un nivel explícito de sangría, no hay una solución real. – thedz

+2

Es posible que desee consultar SCSS/SASS en http://sass-lang.com/ o una solución similar para resolver este problema en un nivel más fundamental. –

Respuesta

3

No creo que ninguno de los modos CSS que he usado con Emacs vaya a admitir ese estilo de sangrado de fábrica: no miran el contenido de los selectores, solo si algo es un selector (no sangrar) o es una regla dentro de un selector (sangra un paso).

Si desea cambiar esto, tendrá que anular la función que realiza la sangría para su modo CSS.

+0

¿Hay alguna manera de hacer una sangría manual? Si no puedo usar autoindent para sangrar de la manera que me gusta, viviría si pudiera sangrar manualmente. – thedz

+0

Parece que, al menos con el modo css que estoy usando, si aplica sangría manual a la línea del selector inicial donde lo desea, simplemente presione 'TAB' después de eso para sangrar correctamente las siguientes reglas y el final '}' - y luego tendrá que espaciar manualmente el siguiente selector, etc. (La versión de css-mode parece venir con Emacs desde algún momento en el marco de tiempo de Emacs 22, por lo que es probable que sea utilizando si tiene un Emacs reciente y no ha cargado específicamente algo más.) – genehack

3

Le sugiero que comience a compilar su CSS con "Sass": los archivos .scss se parecen a CSS pero le permiten anidar las reglas exactamente de la manera en que parece que está anhelando en su ejemplo, y produce una salida realmente bonita que se parece al CSS que se hizo a mano, así que, primero, su CSS seguirá siendo comprensible; y, en segundo lugar, si alguna vez quiere renunciar a Sass puede simplemente eliminar sus archivos .scss y editar los archivos .css a partir de ese momento.

Y Emacs ya sangra Sass perfectamente, ya que Emacs solo obedece las reglas normales para contar el número de llaves y sangría en consecuencia. Su código fuente de arriba, si se convierte a Sass, se vería así:

#foo ul.bar { 
    ... 

    li { 
     ... 

     a { 
      ... 
     } 
    } 
} 

Obviamente, esto elimina la repetición y hace que sea más fácil de leer y mantener el CSS. El proyecto Sass se encuentra aquí: http://sass-lang.com/

+1

Si agrega [brújula] (http://compass-style.org/) obtendrá más regalos, incluidas recetas de CSS adicionales y compass watch que compilar cada vez que un archivo cambia. –

1

Sé que esto es un truco, pero he visto que el modo java funciona más o menos bien con css.

0

Puede usar la idención incorporada de emacs. Trabajo en cualquier modo y hago un trabajo decente con archivos css.

(defun cesco/indent() (interactive) (mark-whole-buffer) (indent-region (point-min) (point-max) nil) (pop-global-mark) )