diff options
Diffstat (limited to 'emmet-mode.el')
-rw-r--r-- | emmet-mode.el | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/emmet-mode.el b/emmet-mode.el index 346c6af..5131e82 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -305,7 +305,8 @@ For more information see `emmet-mode'." (emmet-reposition-cursor expr)))))))) (defvar emmet-mode-keymap - (let ((map (make-sparse-keymap))) + (let + ((map (make-sparse-keymap))) (define-key map (kbd "C-j") 'emmet-expand-line) (define-key map (kbd "<C-return>") 'emmet-expand-line) (define-key map (kbd "<C-M-right>") 'emmet-next-edit-point) @@ -650,28 +651,29 @@ See `emmet-preview-online'." (point)) (forward-char))))))) +(defcustom emmet-postwrap-goto-edit-point f + "Goto first edit point after wrapping markup?" + :type 'boolean + :group 'emmet) + ;;;###autoload (defun emmet-wrap-with-markup (wrap-with) "Wrap region with markup." (interactive "sExpression to wrap with: ") (let* ((multi (string-match "\\*$" wrap-with)) - (txt (buffer-substring-no-properties - (region-beginning) (region-end))) + (txt (buffer-substring-no-properties (region-beginning) (region-end))) (to-wrap (if multi (split-string txt "\n") (list txt))) - (initial-elements - (replace-regexp-in-string - "\\(.*\\(\\+\\|>\\)\\)?[^>*]+\\*?[[:digit:]]*$" - "\\1" wrap-with t)) - (terminal-element - (replace-regexp-in-string - "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" - "\\2" wrap-with t)) - (multiplier-expr - (replace-regexp-in-string - "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" - "\\3" wrap-with t)) + (initial-elements (replace-regexp-in-string + "\\(.*\\(\\+\\|>\\)\\)?[^>*]+\\*?[[:digit:]]*$" + "\\1" wrap-with t)) + (terminal-element (replace-regexp-in-string + "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" + "\\2" wrap-with t)) + (multiplier-expr (replace-regexp-in-string + "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" + "\\3" wrap-with t)) (expr (concat initial-elements (mapconcat (lambda (el) @@ -694,7 +696,13 @@ See `emmet-preview-online'." (when markup (delete-region (region-beginning) (region-end)) (insert markup) - (indent-region (region-beginning) (region-end))))) + (indent-region (region-beginning) (region-end)) + (if emmet-postwrap-goto-edit-point + (let ((end (region-end))) + (goto-char (region-beginning)) + (unless (ignore-errors (progn (emmet-next-edit-point 1) t)) + (goto-char end))) + )))) ;;;###autoload (defun emmet-next-edit-point (count) @@ -4020,7 +4028,7 @@ tbl)) (emmet-join-string (mapcar #'(lambda (expr) - (let* + (let* ((hash-map (if emmet-use-sass-syntax emmet-sass-snippets emmet-css-snippets)) (basement (emmet-aif |