emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master fe578ae: * lisp/textmodes/css-mode.el (css-completi


From: Stefan Monnier
Subject: [Emacs-diffs] master fe578ae: * lisp/textmodes/css-mode.el (css-completion-at-point): Auto-insert
Date: Tue, 28 Feb 2017 09:29:11 -0500 (EST)

branch: master
commit fe578ae4ddccbc4736b1e17ec4ecf2317fe03b0e
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * lisp/textmodes/css-mode.el (css-completion-at-point): Auto-insert
    
    ": ;" after completing a property.
---
 lisp/textmodes/css-mode.el | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index cd86db6..7a9454f 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -696,7 +696,8 @@ cannot be completed sensibly: `custom-ident',
        ;; 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)
+                                       css-pseudo-element-ids)
+                               t)
        "\\|\\::" (regexp-opt css-pseudo-element-ids t) "\\)"
        "\\(?:([^)]+)\\)?"
        (if (not sassy)
@@ -965,10 +966,22 @@ pseudo-elements, pseudo-classes, at-rules, and 
bang-rules."
       (seq-let (prop-beg prop-end prop-table) (css--complete-property)
         (seq-let (sel-beg sel-end sel-table) (css--complete-selector)
           (when (or prop-table sel-table)
+            ;; FIXME: If both prop-table and sel-table are set but
+            ;; prop-beg/prop-end is different from sel-beg/sel-end
+            ;; we have a problem!
             `(,@(if prop-table
                     (list prop-beg prop-end)
                   (list sel-beg sel-end))
-              ,(completion-table-merge prop-table sel-table)))))))
+              ,(completion-table-merge prop-table sel-table)
+              :exit-function
+              ,(lambda (string status)
+                 (and (eq status 'finished)
+                      prop-table
+                      (test-completion string prop-table)
+                      (not (and sel-table
+                                (test-completion string sel-table)))
+                      (progn (insert ": ;")
+                             (forward-char -1))))))))))
 
 ;;;###autoload
 (define-derived-mode css-mode prog-mode "CSS"



reply via email to

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