1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-14 09:39:42 +00:00

Don't let `css--property-values' return duplicates

* lisp/textmodes/css-mode.el (css--property-values): Don't return
duplicate values.

* test/lisp/textmodes/css-mode-tests.el (css-test-property-values):
Take the above into account.
(css-test-property-values-no-duplicates): Test that duplicates aren't
returned by `css--property-values'.
This commit is contained in:
Simen Heggestøyl 2016-04-24 19:57:42 +02:00
parent 12846626bf
commit e6d6a99455
2 changed files with 22 additions and 11 deletions

View File

@ -793,13 +793,14 @@ Completion candidates are looked up in `css-property-alist' by
the string PROPERTY."
(or (gethash property css--property-value-cache)
(let ((values
(seq-mapcat
(lambda (value)
(if (stringp value)
(list value)
(or (css--value-class-lookup value)
(css--property-values (symbol-name value)))))
(cdr (assoc property css-property-alist)))))
(seq-uniq
(seq-mapcat
(lambda (value)
(if (stringp value)
(list value)
(or (css--value-class-lookup value)
(css--property-values (symbol-name value)))))
(cdr (assoc property css-property-alist))))))
(puthash property values css--property-value-cache))))
(defun css--complete-property-value ()

View File

@ -24,8 +24,9 @@
;;; Code:
(require 'ert)
(require 'css-mode)
(require 'ert)
(require 'seq)
(ert-deftest css-test-property-values ()
;; The `float' property has a flat value list.
@ -36,9 +37,10 @@
;; The `list-style' property refers to several other properties.
(should
(equal (sort (css--property-values "list-style") #'string-lessp)
(sort (append (css--property-values "list-style-type")
(css--property-values "list-style-position")
(css--property-values "list-style-image"))
(sort (seq-uniq
(append (css--property-values "list-style-type")
(css--property-values "list-style-position")
(css--property-values "list-style-image")))
#'string-lessp)))
;; The `position' property is tricky because it's also the name of a
@ -64,6 +66,14 @@
(should (equal (gethash "word-wrap" css--property-value-cache)
word-wrap-values))))
(ert-deftest css-test-property-values-no-duplicates ()
"Test that `css--property-values' returns no duplicates."
;; The `flex' property is prone to duplicate values; if they aren't
;; removed, it'll contain at least two instances of `auto'.
(should
(equal (sort (css--property-values "flex") #'string-lessp)
'("auto" "content" "none"))))
(ert-deftest css-test-value-class-lookup ()
(should
(equal (sort (css--value-class-lookup 'position) #'string-lessp)