]> git.eshelyaron.com Git - emacs.git/commitdiff
Support indentation of detached Less CSS rulesets
authorSimen Heggestøyl <simenheg@gmail.com>
Tue, 15 Aug 2017 10:39:42 +0000 (12:39 +0200)
committerSimen Heggestøyl <simenheg@gmail.com>
Tue, 15 Aug 2017 12:38:15 +0000 (14:38 +0200)
* 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.

lisp/textmodes/css-mode.el
test/manual/indent/less-css-mode.less [new file with mode: 0644]

index 19cb7b4fea83ccabe6da23f6024299e37cbd0eb5..1e49ca81fcc5d79fb8e4d1bd0c30dbeafbd64c99 100644 (file)
@@ -1205,9 +1205,12 @@ for determining whether point is within a selector."
     (`(:before . "{")
      (when (or (smie-rule-hanging-p) (smie-rule-bolp))
        (smie-backward-sexp ";")
-       (smie-indent-virtual)))
-    (`(:before . ,(or "{" "("))
-     (if (smie-rule-hanging-p) (smie-rule-parent 0)))
+       (unless (eq (char-after) ?\{)
+         (smie-indent-virtual))))
+    (`(:before . "(")
+     (cond
+      ((smie-rule-hanging-p) (smie-rule-parent 0))
+      ((not (smie-rule-bolp)) 0)))
     (`(:after . ":-property")
      (when (smie-rule-hanging-p)
        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 (file)
index 0000000..36c0374
--- /dev/null
@@ -0,0 +1,29 @@
+.desktop-and-old-ie(@rules) {
+    @media screen and (min-width: 1200) { @rules(); }
+    html.lt-ie9 &                       { @rules(); }
+}
+
+header {
+    background-color: blue;
+
+    .desktop-and-old-ie({
+        background-color: red;
+    });
+}
+
+.e(@name, @rules) {
+    &__@{name} { @rules(); }
+}
+
+.m(@name, @rules) {
+    &--@{name} { @rules(); }
+}
+
+.btn {
+    .e(span, {  // .btn__span
+        display: inline-block;
+    });
+    .m(primary, { // .btn--primary
+        background: blue;
+    });
+}