diff options
Diffstat (limited to 'src/mode-def.el')
-rw-r--r-- | src/mode-def.el | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/mode-def.el b/src/mode-def.el index 7cac58d..e0a22b9 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -127,6 +127,7 @@ For more information see `emmet-mode'." (define-key map (kbd "<C-return>") 'emmet-expand-line) (define-key map (kbd "<C-M-right>") 'emmet-next-edit-point) (define-key map (kbd "<C-M-left>") 'emmet-prev-edit-point) + (define-key map (kbd "C-c w") 'emmet-wrap-with-markup) map) "Keymap for emmet minor mode.") @@ -392,9 +393,14 @@ accept it or skip it." ((between-tags (if only-before-closed-tag "\\(><\\)/" "\\(><\\)")) (indented-line "\\(^[[:blank:]]+$\\)") - (between-quotes "\\(=\\(\"\\|'\\)\\{2\\}\\)") - (edit-point (format "\\(%s\\|%s\\|%s\\)" - between-tags indented-line between-quotes))) + (between-quotes + (if emmet-move-cursor-between-quotes "\\(=\\(\"\\|'\\)\\{2\\}\\)" nil)) + (whole-regex + (mapconcat 'identity + (delq nil + (list between-tags indented-line between-quotes)) + "\\|")) + (edit-point (format "\\(%s\\)" whole-regex))) (if (> count 0) (progn (forward-char) @@ -422,6 +428,23 @@ accept it or skip it." (forward-char))))))) ;;;###autoload +(defun emmet-wrap-with-markup (wrap-with) + "Wrap region with markup." + (interactive "sExpression to wrap with: ") + (let* ((emmet-move-cursor-between-quotes nil) + (to-wrap (buffer-substring-no-properties (region-beginning) (region-end))) + (expr (concat wrap-with ">{!EMMET-TO-WRAP-REPLACEMENT!}")) + (markup (replace-regexp-in-string + "!EMMET-TO-WRAP-REPLACEMENT!" to-wrap + (emmet-transform expr) + t t))) + (when markup + (delete-region (region-beginning) (region-end)) + (insert markup) + (indent-region (region-beginning) (region-end)) + ))) + +;;;###autoload (defun emmet-next-edit-point (count) (interactive "^p") (unless (or emmet-use-css-transform (emmet-go-to-edit-point count)) |