2009-08-05 68 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) )