From: Simen Heggestøyl Date: Sun, 24 Apr 2016 17:57:42 +0000 (+0200) Subject: Don't let `css--property-values' return duplicates X-Git-Tag: emacs-26.0.90~2164 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e6d6a99455183bca5074b7601ad11d424da6442e;p=emacs.git 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'. --- diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 8a4daac353a..608462b36a6 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -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 () diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el index 805364c9f42..5d5873b301b 100644 --- a/test/lisp/textmodes/css-mode-tests.el +++ b/test/lisp/textmodes/css-mode-tests.el @@ -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)