在emacs中缩进CSS

时间:2009-08-05 10:54:53

标签: css emacs indentation sass

因此,emacs对CSS的自动缩进让我感到沮丧。这就是我喜欢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会将所有内容自动提交到同一级别。

我能做什么?

4 个答案:

答案 0 :(得分:3)

我认为我在Emacs中使用的任何CSS模式都不会支持开箱即用的缩进样式 - 他们不会看选择器的内容,只是看看是否有东西是选择器(不要缩进)或是选择器内的规则(缩进一步)。

如果您想更改此设置,则需要覆盖为CSS模式执行缩进的功能。

答案 1 :(得分:3)

我建议您使用“Sass”开始编译CSS - .scss文件看起来就像CSS,但允许您完全按照您在示例中的向往方式嵌套规则,它产生非常漂亮的输出,看起来像手工制作的CSS - 所以,首先,你的CSS仍然是可以理解的;第二,如果你想放弃Sass,你可以删除你的.scss文件并从那时起编辑.css个文件。

而且Emacs已经完美地缩进了Sass,因为Emacs只是遵守了计算花括号数量和相应缩进的正常规则。如果转换为Sass,上面的源代码将如下所示:

#foo ul.bar {
    ...

    li {
        ...

        a {
            ...
        }
    }
}

显然,这会消除重复并使您更容易阅读和维护CSS。 Sass项目位于:http://sass-lang.com/

答案 2 :(得分:1)

我知道这是一个黑客,但我已经看到java模式或多或少与css一起工作。

答案 3 :(得分:0)

您可以使用emacs内置标识。我在任何模式下工作,并使用css文件做得不错。

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