2009-08-05 8 views
6

Auto-wcięcie emacsa dla CSS doprowadza mnie do szału. Oto, co lubię CSS wyglądał:Wcięcie CSS w emacs

#foo ul.bar { 
    .... 
} 

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

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

to co emacs daje mi jego auto wcięcia:

#foo ul.bar { 
    .... 
} 

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

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

chciałbym, aby moje style stopniowo wcięcie jeśli używają kaskadę. Jednak emacs automatycznie zaindeksuje wszystko na tym samym poziomie.

Wszystko, co mogę zrobić?

+0

Znalazłeś rozwiązanie? Mam ten sam problem. – vise

+0

Nie, na tyle, na ile mogę to stwierdzić, brak karty wiążącej do wstawienia wyraźnego poziomu wcięcia, nie ma prawdziwego rozwiązania. – thedz

+2

Możesz sprawdzić SCSS/SASS na http://sass-lang.com/ lub podobne rozwiązanie, aby zamiast tego rozwiązać ten problem na bardziej podstawowym poziomie. –

Odpowiedz

3

Nie sądzę, że którykolwiek z trybów CSS, z których korzystałem z Emacsem, będzie obsługiwał ten styl wcięcia po wyjęciu z pudełka - nie patrzą na zawartość selektorów, tylko czy nie coś jest selektorem (nie wcięcia) lub jest regułą wewnątrz selektora (wcięcie jeden krok).

Jeśli chcesz to zmienić, musisz zastąpić funkcję wcięcia dla twojego trybu CSS.

+0

Czy istnieje sposób na ręczne wcięcie? Jeśli nie mogę użyć autoindenta do wcięcia w sposób, który mi się podoba, to mógłbym żyć, gdybym mógł ręcznie wciskać. – thedz

+0

Wygląda to - przynajmniej z użyciem css-mode, którego używam - jeśli ręcznie wcinasz początkową linię selektora tam, gdzie chcesz, po prostu naciśnij "TAB", aby poprawnie dopasować następujące reguły i zakończenie '}' - i wtedy będziesz musiał ręcznie oddzielić następny selektor, itp. (Wersja trybu css wydaje się być w Emacs od jakiegoś czasu w ramce czasowej Emacs 22, więc prawdopodobnie to właśnie Ty używając, jeśli masz ostatnio Emacsa i nie załadowałeś specjalnie czegoś innego.) – genehack

3

Proponuję rozpocząć kompilację CSS przy użyciu "Sass" - pliki .scss wyglądają tak jak CSS, ale pozwalają na zagnieżdżanie reguł dokładnie w taki sposób, w jaki wygląda na przykład w twoim przykładzie, i produkuje naprawdę ładne wyjście, które wygląda jak CSS, który został stworzony ręcznie - więc, po pierwsze, twój CSS będzie nadal zrozumiały; i, po drugie, jeśli kiedykolwiek chcesz zrezygnować z Sass, możesz po prostu usunąć swoje pliki .scss i edytować pliki .css od tego miejsca.

I Emacs już wcina Sassa doskonale, ponieważ Emacs przestrzega normalnych reguł liczenia liczby nawiasów klamrowych i odpowiednio wcięć. Kod źródłowy powyższego, jeżeli przekształca się Sass, wyglądałby następująco:

#foo ul.bar { 
    ... 

    li { 
     ... 

     a { 
      ... 
     } 
    } 
} 

Oczywiście, to usuwa powtórzenia i sprawia, że ​​łatwiej odczytać i zachować swój CSS. Projekt Sass znajduje się tutaj: http://sass-lang.com/

+1

Jeśli dodasz [kompas] (http://compass-style.org/), dostaniesz więcej gratisy, w tym dodatkowe recepty css i compass watch, które będą kompilować za każdym razem, gdy plik się zmienia. –

1

Wiem, że to hack, ale widziałem tryb java działa bardziej lub mniej dobrze z css.

0

Możesz użyć wbudowanej tożsamości emacs. Pracuję w dowolnym trybie i wykonuję przyzwoitą pracę z plikami css.

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