diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/css-abbrev.el | 2 | ||||
-rw-r--r-- | src/html-abbrev.el | 42 | ||||
-rw-r--r-- | src/mode-def.el | 7 | ||||
-rw-r--r-- | src/test.el | 4 |
4 files changed, 37 insertions, 18 deletions
diff --git a/src/css-abbrev.el b/src/css-abbrev.el index edc09ca..37fb091 100644 --- a/src/css-abbrev.el +++ b/src/css-abbrev.el @@ -224,7 +224,7 @@ (emmet-join-string (mapcar #'(lambda (expr) - (let* + (let* ((hash-map (if emmet-use-sass-syntax emmet-sass-snippets emmet-css-snippets)) (basement (emmet-aif 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? diff --git a/src/mode-def.el b/src/mode-def.el index 67313dd..f8d481f 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -91,6 +91,13 @@ e. g. without semicolons") less-css-mode) "Major modes that use emmet for CSS, rather than HTML.") +(defvar emmet-fallback-filter '("html") + "Fallback filter for `emmet-default-filter', if none is found.") + +(defvar emmet-file-filter nil + "File local filter used by `emmet-default-filter'.") +(make-variable-buffer-local 'emmet-file-filter) + (defun emmet-transform (input) (if (or (emmet-detect-style-tag-and-attr) emmet-use-css-transform) (emmet-css-transform input) diff --git a/src/test.el b/src/test.el index 913daca..ddc7e40 100644 --- a/src/test.el +++ b/src/test.el @@ -278,12 +278,16 @@ (define-emmet-transform-html-test-case Properties "a[x]" ("<a href=\"\" x=\"\"></a>") + "a[x.]" ("<a href=\"\" x></a>") "a[x=]" ("<a href=\"\" x=\"\"></a>") "a[x=\"\"]" ("<a href=\"\" x=\"\"></a>") "a[x=y]" ("<a href=\"\" x=\"y\"></a>") "a[x=\"y\"]" ("<a href=\"\" x=\"y\"></a>") "a[x=\"()\"]" ("<a href=\"\" x=\"()\"></a>") "a[x m]" ("<a href=\"\" x=\"\" m=\"\"></a>") + "a[x. m]" ("<a href=\"\" x m=\"\"></a>") + "a[x m.]" ("<a href=\"\" x=\"\" m></a>") + "a[x. m.]" ("<a href=\"\" x m></a>") "a[x= m=\"\"]" ("<a href=\"\" x=\"\" m=\"\"></a>") "a[x=y m=l]" ("<a href=\"\" x=\"y\" m=\"l\"></a>") "a/[x=y m=l]" ("<a href=\"\" x=\"y\" m=\"l\"/>") |