1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Support completion of at-rules in SCSS mode

lisp/textmodes/css-mode.el (scss-at-ids): New defconst holding
SCSS-specific at-rules.
(css--at-ids): New buffer-local variable holding the list of at-rules
for the current mode.
(css--complete-at-rule): Retrieve at-rules from `css--at-ids`.
(scss-mode): Set `css--at-ids'.

Copyright-paperwork-exempt: yes
This commit is contained in:
Etienne Prud'homme 2016-04-01 15:09:15 -04:00 committed by Simen Heggestøyl
parent e2c117a28f
commit 728b1c7f13

View file

@ -56,6 +56,16 @@
'("charset" "font-face" "import" "media" "namespace" "page") '("charset" "font-face" "import" "media" "namespace" "page")
"Identifiers that appear in the form @foo.") "Identifiers that appear in the form @foo.")
(defconst scss-at-ids
'("at-root" "content" "debug" "each" "else" "else if" "error" "extend"
"for" "function" "if" "import" "include" "mixin" "return" "warn"
"while")
"Additional identifiers that appear in the form @foo in SCSS.")
(defvar css--at-ids css-at-ids
"List of at-rules for the current mode.")
(make-variable-buffer-local 'css--at-ids)
(defconst css-bang-ids (defconst css-bang-ids
'("important") '("important")
"Identifiers that appear in the form !foo.") "Identifiers that appear in the form !foo.")
@ -759,7 +769,7 @@ cannot be completed sensibly: `angle', `element-reference',
(let ((pos (point))) (let ((pos (point)))
(skip-chars-backward "-[:alnum:]") (skip-chars-backward "-[:alnum:]")
(when (eq (char-before) ?\@) (when (eq (char-before) ?\@)
(list (point) pos css-at-ids))))) (list (point) pos css--at-ids)))))
(defvar css--property-value-cache (defvar css--property-value-cache
(make-hash-table :test 'equal :size (length css-property-alist)) (make-hash-table :test 'equal :size (length css-property-alist))
@ -969,6 +979,7 @@ pseudo-elements, pseudo-classes, at-rules, and bang-rules."
(setq-local comment-continue " *") (setq-local comment-continue " *")
(setq-local comment-start-skip "/[*/]+[ \t]*") (setq-local comment-start-skip "/[*/]+[ \t]*")
(setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)") (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)")
(setq-local css--at-ids (append css-at-ids scss-at-ids))
(setq-local css--bang-ids (append css-bang-ids scss-bang-ids)) (setq-local css--bang-ids (append css-bang-ids scss-bang-ids))
(setq-local font-lock-defaults (setq-local font-lock-defaults
(list (scss-font-lock-keywords) nil t))) (list (scss-font-lock-keywords) nil t)))