diff options
| author | Stefan Monnier | 2017-02-28 09:29:06 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2017-02-28 09:29:06 -0500 |
| commit | fe578ae4ddccbc4736b1e17ec4ecf2317fe03b0e (patch) | |
| tree | 5245e0f6d7d72ef73db56f1a57a036fbfd9b9e32 | |
| parent | 0e355e781616936759cff8e6a46adb01760d4211 (diff) | |
| download | emacs-fe578ae4ddccbc4736b1e17ec4ecf2317fe03b0e.tar.gz emacs-fe578ae4ddccbc4736b1e17ec4ecf2317fe03b0e.zip | |
* lisp/textmodes/css-mode.el (css-completion-at-point): Auto-insert
": ;" after completing a property.
| -rw-r--r-- | lisp/textmodes/css-mode.el | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index cd86db639ab..7a9454f7f3c 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el | |||
| @@ -696,7 +696,8 @@ cannot be completed sensibly: `custom-ident', | |||
| 696 | ;; Even though pseudo-elements should be prefixed by ::, a | 696 | ;; Even though pseudo-elements should be prefixed by ::, a |
| 697 | ;; single colon is accepted for backward compatibility. | 697 | ;; single colon is accepted for backward compatibility. |
| 698 | "\\(?:\\(:" (regexp-opt (append css-pseudo-class-ids | 698 | "\\(?:\\(:" (regexp-opt (append css-pseudo-class-ids |
| 699 | css-pseudo-element-ids) t) | 699 | css-pseudo-element-ids) |
| 700 | t) | ||
| 700 | "\\|\\::" (regexp-opt css-pseudo-element-ids t) "\\)" | 701 | "\\|\\::" (regexp-opt css-pseudo-element-ids t) "\\)" |
| 701 | "\\(?:([^)]+)\\)?" | 702 | "\\(?:([^)]+)\\)?" |
| 702 | (if (not sassy) | 703 | (if (not sassy) |
| @@ -965,10 +966,22 @@ pseudo-elements, pseudo-classes, at-rules, and bang-rules." | |||
| 965 | (seq-let (prop-beg prop-end prop-table) (css--complete-property) | 966 | (seq-let (prop-beg prop-end prop-table) (css--complete-property) |
| 966 | (seq-let (sel-beg sel-end sel-table) (css--complete-selector) | 967 | (seq-let (sel-beg sel-end sel-table) (css--complete-selector) |
| 967 | (when (or prop-table sel-table) | 968 | (when (or prop-table sel-table) |
| 969 | ;; FIXME: If both prop-table and sel-table are set but | ||
| 970 | ;; prop-beg/prop-end is different from sel-beg/sel-end | ||
| 971 | ;; we have a problem! | ||
| 968 | `(,@(if prop-table | 972 | `(,@(if prop-table |
| 969 | (list prop-beg prop-end) | 973 | (list prop-beg prop-end) |
| 970 | (list sel-beg sel-end)) | 974 | (list sel-beg sel-end)) |
| 971 | ,(completion-table-merge prop-table sel-table))))))) | 975 | ,(completion-table-merge prop-table sel-table) |
| 976 | :exit-function | ||
| 977 | ,(lambda (string status) | ||
| 978 | (and (eq status 'finished) | ||
| 979 | prop-table | ||
| 980 | (test-completion string prop-table) | ||
| 981 | (not (and sel-table | ||
| 982 | (test-completion string sel-table))) | ||
| 983 | (progn (insert ": ;") | ||
| 984 | (forward-char -1)))))))))) | ||
| 972 | 985 | ||
| 973 | ;;;###autoload | 986 | ;;;###autoload |
| 974 | (define-derived-mode css-mode prog-mode "CSS" | 987 | (define-derived-mode css-mode prog-mode "CSS" |