aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimen Heggestøyl2017-08-15 12:39:42 +0200
committerSimen Heggestøyl2017-08-15 14:38:15 +0200
commit141cc78aa4552e99bf14c13d9e64357ccafe171b (patch)
treea2fcad61285d000fbf5ab0e70c45ef42d20f3ded
parent85a9f42b6ca7711c64cbd3e4e261fae308eab9d3 (diff)
downloademacs-141cc78aa4552e99bf14c13d9e64357ccafe171b.tar.gz
emacs-141cc78aa4552e99bf14c13d9e64357ccafe171b.zip
Support indentation of detached Less CSS rulesets
* lisp/textmodes/css-mode.el (css-smie-rules): Provide better support for indentation of detached rulesets passed to Less mixins. * test/manual/indent/less-css-mode.less: New file.
-rw-r--r--lisp/textmodes/css-mode.el9
-rw-r--r--test/manual/indent/less-css-mode.less29
2 files changed, 35 insertions, 3 deletions
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 19cb7b4fea8..1e49ca81fcc 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1205,9 +1205,12 @@ for determining whether point is within a selector."
1205 (`(:before . "{") 1205 (`(:before . "{")
1206 (when (or (smie-rule-hanging-p) (smie-rule-bolp)) 1206 (when (or (smie-rule-hanging-p) (smie-rule-bolp))
1207 (smie-backward-sexp ";") 1207 (smie-backward-sexp ";")
1208 (smie-indent-virtual))) 1208 (unless (eq (char-after) ?\{)
1209 (`(:before . ,(or "{" "(")) 1209 (smie-indent-virtual))))
1210 (if (smie-rule-hanging-p) (smie-rule-parent 0))) 1210 (`(:before . "(")
1211 (cond
1212 ((smie-rule-hanging-p) (smie-rule-parent 0))
1213 ((not (smie-rule-bolp)) 0)))
1211 (`(:after . ":-property") 1214 (`(:after . ":-property")
1212 (when (smie-rule-hanging-p) 1215 (when (smie-rule-hanging-p)
1213 css-indent-offset)))) 1216 css-indent-offset))))
diff --git a/test/manual/indent/less-css-mode.less b/test/manual/indent/less-css-mode.less
new file mode 100644
index 00000000000..36c037450cc
--- /dev/null
+++ b/test/manual/indent/less-css-mode.less
@@ -0,0 +1,29 @@
1.desktop-and-old-ie(@rules) {
2 @media screen and (min-width: 1200) { @rules(); }
3 html.lt-ie9 & { @rules(); }
4}
5
6header {
7 background-color: blue;
8
9 .desktop-and-old-ie({
10 background-color: red;
11 });
12}
13
14.e(@name, @rules) {
15 &__@{name} { @rules(); }
16}
17
18.m(@name, @rules) {
19 &--@{name} { @rules(); }
20}
21
22.btn {
23 .e(span, { // .btn__span
24 display: inline-block;
25 });
26 .m(primary, { // .btn--primary
27 background: blue;
28 });
29}