2009-08-05 90 views
6

所以emacs的CSS自動縮進功能讓我非常興奮。這是我喜歡的CSS看起來像:縮進emacs中的CSS

#foo ul.bar { 
    .... 
} 

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

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

這是Emacs的讓我與它的自動縮進:

#foo ul.bar { 
    .... 
} 

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

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

我喜歡讓我的風格逐漸縮進,如果他們使用的級聯。但是,emacs會將所有內容自動縮進到同一級別。

我能做什麼?

+0

您是否找到了解決方案?我有同樣的問題。 – vise 2010-02-15 08:59:39

+0

不,據我所知,缺少綁定選項卡插入明確的縮進級別,沒有一個真正的解決方案。 – thedz 2010-02-15 11:39:59

+2

您可能想要查看http://sass-lang.com/上的SCSS/SASS或類似的解決方案,以更基本的級別解決此問題。 – 2011-04-13 12:17:19

回答

3

我不認爲我用Emacs使用的任何CSS模式都會支持這種開箱即用的縮進方式 - 它們沒有查看選擇器的內容,只是是否東西是選擇器(不縮進)或是選擇器內的規則(縮進一步)。

如果你想改變這個,你需要重寫爲你的CSS模式進行縮進的函數。

3

我建議您使用「Sass」開始編譯您的CSS - .scss文件看起來就像CSS一樣,但允許您按照您在示例中想要的方式完全嵌套規則,並且它會生成非常漂亮的輸出看起來像手工製作的CSS--所以,首先,你的CSS仍然是可以理解的;第二,如果你想放棄Sass,你可以從這一點刪除你的.scss文件並編輯.css文件。

而且Emacs已經完美地縮進了Sass,因爲Emacs只是遵循了相應地計算大括號和縮進數量的正常規則。你的源代碼之上,如果轉換爲無禮的話,應該是這樣的:

#foo ul.bar { 
    ... 

    li { 
     ... 

     a { 
      ... 
     } 
    } 
} 

顯然,這消除重複並使其更容易閱讀和維護你的CSS。 Sass項目位於:http://sass-lang.com/

1

我知道這是一個黑客攻擊,但我已經看到java模式或多或少地與CSS一起工作得很好。

0

您可以使用emacs內置標識。我工作在任何模式,並與CSS文件做一個體面的工作。

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