Hi. The following patch makes `css-mode' discriminate between pseudo-classes and pseudo-ids. While it might not seem immediately useful to do so, it will become useful when completion at point is implemented in a later patch. From b87dadfbbacbd1372ba31e2f591a260e7b4b581f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Sat, 14 Mar 2015 10:54:39 +0100 Subject: [PATCH 1/3] Discriminate between pseudo-classes and -elements * textmodes/css-mode.el (css--font-lock-keywords): Discriminate between pseudo-classes and pseudo-elements. (css-pseudo-ids): Remove. (css-pseudo-class-ids): New variable. (css-pseudo-element-ids): New variable. --- lisp/ChangeLog | 8 ++++++++ lisp/textmodes/css-mode.el | 21 ++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d393190..70122c7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2015-03-14 Simen Heggestøyl + + * textmodes/css-mode.el (css--font-lock-keywords): Discriminate + between pseudo-classes and pseudo-elements. + (css-pseudo-ids): Remove. + (css-pseudo-class-ids): New variable. + (css-pseudo-element-ids): New variable. + 2015-03-13 Kevin Ryde info-look fixes for Texinfo 5 diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 44dc4df..dc11d44 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -120,10 +120,17 @@ ;; (media . "^ +\\* '\\([^ '\n]+\\)' media group") ;; (property . "^ +\\* '\\([^ '\n]+\\)',"))) -(defconst css-pseudo-ids - '("active" "after" "before" "first" "first-child" "first-letter" "first-line" - "focus" "hover" "lang" "left" "link" "right" "visited") - "Identifiers for pseudo-elements and pseudo-classes.") +(defconst css-pseudo-class-ids + '("active" "checked" "disabled" "empty" "enabled" "first" + "first-child" "first-of-type" "focus" "hover" "indeterminate" "lang" + "last-child" "last-of-type" "left" "link" "nth-child" + "nth-last-child" "nth-last-of-type" "nth-of-type" "only-child" + "only-of-type" "right" "root" "target" "visited") + "Identifiers for pseudo-classes.") + +(defconst css-pseudo-element-ids + '("after" "before" "first-letter" "first-line") + "Identifiers for pseudo-elements.") (defconst css-at-ids '("charset" "font-face" "import" "media" "page") @@ -258,7 +265,11 @@ (concat "\\(?:" scss--hash-re "\\|[^@/:{} \t\n#]\\)" "[^:{}#]*\\(?:" scss--hash-re "[^:{}#]*\\)*")) - "\\(?::" (regexp-opt css-pseudo-ids t) + ;; Even though pseudo-elements should be prefixed by ::, a + ;; single colon is accepted for backward compatibility. + "\\(?:\\(:" (regexp-opt (append css-pseudo-class-ids + css-pseudo-element-ids) t) + "\\|\\::" (regexp-opt css-pseudo-element-ids t) "\\)" "\\(?:([^\)]+)\\)?" (if (not sassy) "[^:{}\n]*" -- 2.1.4