emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 07d7291: Add completion of `calc()' in CSS mode


From: Simen Heggestøyl
Subject: [Emacs-diffs] master 07d7291: Add completion of `calc()' in CSS mode
Date: Tue, 26 Apr 2016 18:48:22 +0000

branch: master
commit 07d729130e5774fc484ba324d9149d4c6f008260
Author: Simen Heggestøyl <address@hidden>
Commit: Simen Heggestøyl <address@hidden>

    Add completion of `calc()' in CSS mode
    
    * lisp/textmodes/css-mode.el (css-value-class-alist): Add `calc()' as
    a completion candidate for several value classes.
    (css--value-class-lookup): Return only unique results.
    
    * test/lisp/textmodes/css-mode-tests.el
    (css-test-property-values-no-duplicates)
    (css-test-value-class-lookup): Update to reflect the above changes.
---
 lisp/textmodes/css-mode.el            |   25 +++++++++++++++----------
 test/lisp/textmodes/css-mode-tests.el |    4 ++--
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 608462b..e30fb3e 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -454,6 +454,7 @@ further value candidates, since that list would be 
infinite.")
      "xx-small" "x-small" "small" "medium" "large" "x-large"
      "xx-large")
     (alphavalue number)
+    (angle "calc()")
     (attachment "scroll" "fixed" "local")
     (bg-image image "none")
     (bg-layer bg-image position repeat-style attachment box)
@@ -481,6 +482,7 @@ further value candidates, since that list would be 
infinite.")
     (final-bg-layer
      bg-image position repeat-style attachment box color)
     (font-variant-css21 "normal" "small-caps")
+    (frequency "calc()")
     (generic-family
      "serif" "sans-serif" "cursive" "fantasy" "monospace")
     (generic-voice "male" "female" "child")
@@ -491,7 +493,8 @@ further value candidates, since that list would be 
infinite.")
      "historical-ligatures" "no-historical-ligatures")
     (image uri image-list element-reference gradient)
     (image-list "image()")
-    (length number)
+    (integer "calc()")
+    (length "calc()" number)
     (line-height "normal" number length percentage)
     (line-style
      "none" "hidden" "dotted" "dashed" "solid" "double" "groove"
@@ -499,6 +502,7 @@ further value candidates, since that list would be 
infinite.")
     (line-width length "thin" "medium" "thick")
     (linear-gradient "linear-gradient()")
     (margin-width "auto" length percentage)
+    (number "calc()")
     (numeric-figure-values "lining-nums" "oldstyle-nums")
     (numeric-fraction-values "diagonal-fractions" "stacked-fractions")
     (numeric-spacing-values "proportional-nums" "tabular-nums")
@@ -529,6 +533,7 @@ further value candidates, since that list would be 
infinite.")
      "step-end" "steps()" "cubic-bezier()")
     (specific-voice identifier)
     (target-name string)
+    (time "calc()")
     (transform-list
      "matrix()" "translate()" "translateX()" "translateY()" "scale()"
      "scaleX()" "scaleY()" "rotate()" "skew()" "skewX()" "skewY()"
@@ -546,9 +551,8 @@ a class of values, and that symbols in the CDRs always 
refer to
 other entries in this list, not to properties.
 
 The following classes have been left out above because they
-cannot be completed sensibly: `angle', `element-reference',
-`frequency', `id', `identifier', `integer', `number',
-`percentage', `string', and `time'.")
+cannot be completed sensibly: `element-reference', `id',
+`identifier', `percentage', and `string'.")
 
 (defcustom css-electric-keys '(?\} ?\;) ;; '()
   "Self inserting keys which should trigger re-indentation."
@@ -780,12 +784,13 @@ cannot be completed sensibly: `angle', 
`element-reference',
   "Return a list of value completion candidates for VALUE-CLASS.
 Completion candidates are looked up in `css-value-class-alist' by
 the symbol VALUE-CLASS."
-  (seq-mapcat
-   (lambda (value)
-     (if (stringp value)
-         (list value)
-       (css--value-class-lookup value)))
-   (cdr (assq value-class css-value-class-alist))))
+  (seq-uniq
+   (seq-mapcat
+    (lambda (value)
+      (if (stringp value)
+          (list value)
+        (css--value-class-lookup value)))
+    (cdr (assq value-class css-value-class-alist)))))
 
 (defun css--property-values (property)
   "Return a list of value completion candidates for PROPERTY.
diff --git a/test/lisp/textmodes/css-mode-tests.el 
b/test/lisp/textmodes/css-mode-tests.el
index 5d5873b..4c0a357 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -72,12 +72,12 @@
   ;; removed, it'll contain at least two instances of `auto'.
   (should
    (equal (sort (css--property-values "flex") #'string-lessp)
-          '("auto" "content" "none"))))
+          '("auto" "calc()" "content" "none"))))
 
 (ert-deftest css-test-value-class-lookup ()
   (should
    (equal (sort (css--value-class-lookup 'position) #'string-lessp)
-          '("bottom" "center" "left" "right" "top"))))
+          '("bottom" "calc()" "center" "left" "right" "top"))))
 
 (provide 'css-mode-tests)
 ;;; css-mode-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]