diff options
author | Jesús <heckyel@hyperbola.info> | 2020-01-10 13:27:24 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2020-01-10 13:27:24 -0500 |
commit | d7424d40aa963e47d3224b81ccf41c4f8669617d (patch) | |
tree | 949207d0127a4ffb400e1b2df74df1144a78498d /src/html-abbrev.el | |
parent | 312cbf5789eb62a53920353faa3503ebc60af249 (diff) | |
download | emmet-mode-d7424d40aa963e47d3224b81ccf41c4f8669617d.tar.lz emmet-mode-d7424d40aa963e47d3224b81ccf41c4f8669617d.tar.xz emmet-mode-d7424d40aa963e47d3224b81ccf41c4f8669617d.zip |
Support boolean attributes
For example, script[src defer.] expands to <script src="" defer></script>.
This notation is not documented in the cheet sheet, but you can use it in the playground.
We should support boolean attributes for the other filters as well, say, haml.
Diffstat (limited to 'src/html-abbrev.el')
-rw-r--r-- | src/html-abbrev.el | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/src/html-abbrev.el b/src/html-abbrev.el index ad53474..e66b459 100644 --- a/src/html-abbrev.el +++ b/src/html-abbrev.el @@ -51,16 +51,18 @@ (defun emmet-default-filter () "Default filter(s) to be used if none is specified." - (let* ((file-ext (car (emmet-regex ".*\\(\\..*\\)" (or (buffer-file-name) "") 1))) - (defaults '(".html" ("html") - ".htm" ("html") - ".haml" ("haml") - ".clj" ("hic"))) - (default-else '("html")) - (selected-default (member file-ext defaults))) - (if selected-default - (cadr selected-default) - default-else))) + (or emmet-file-filter + (let* ((file-ext (car (emmet-regex ".*\\(\\..*\\)" (or (buffer-file-name) "") 1))) + (defaults '(".html" ("html") + ".htm" ("html") + ".haml" ("haml") + ".clj" ("hic") + ".cljs" ("hic"))) + (default-else emmet-fallback-filter) + (selected-default (member file-ext defaults))) + (if selected-default + (cadr selected-default) + default-else)))) (defun emmet-numbering (input) (emmet-parse @@ -251,9 +253,12 @@ (emmet-run emmet-name (let ((name (cdr expr))) - (emmet-pif (emmet-prop-value name input) - it - `((,(read name) "") . ,input)))))) + (emmet-pif (emmet-parse "\\.\\(.*?\\)" 2 "." + `((,(read name)) . ,input)) + it + (emmet-pif (emmet-prop-value name input) + it + `((,(read name) "") . ,input))))))) (defun emmet-prop-value (name input) (emmet-pif (emmet-parse "=\"\\(.*?\\)\"" 2 @@ -561,15 +566,18 @@ (emmet-mapconcat-or-empty " " merged-tag-props " " nil (lambda (prop) - (let ((key (car prop))) - (concat (if (symbolp key) (symbol-name key) key) - "=\"" (cadr prop) "\"")))))) + (let* ((key (car prop)) + (key (if (symbolp key) (symbol-name key) key)) + (value (cadr prop))) + (if value + (concat key "=\"" value "\"") + key)))))) (content-multiline? (and content (string-match "\n" content))) (block-tag? (and settings (gethash "block" settings))) (self-closing? (and (not (or tag-txt content)) (or (not tag-has-body?) (and settings (gethash "selfClosing" settings))))) - (block-indentation? (or content-multiline? (and block-tag? content))) + (block-indentation? (or content-multiline? (and block-tag? content))) (lf (if block-indentation? "\n"))) (concat "<" tag-name id classes props (if self-closing? |