From 1a69dde36aad44a726978504138a7ff87ae1ed8c Mon Sep 17 00:00:00 2001 From: Vladimir Sedach Date: Thu, 29 Mar 2018 00:28:32 -0700 Subject: =?UTF-8?q?Rebind=20emmet-wrap-with-markup=20under=20=E2=80=98C-c?= =?UTF-8?q?=20C-c=20w=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit elisp manual 22.2.1 Major Mode Conventions: “The key sequences bound in a major mode keymap should usually start with ‘C-c’, followed by a control character, a digit, or ‘{’, ‘}’, ‘<’, ‘>’, ‘:’ or ‘;’. The other punctuation characters are reserved for minor modes, and ordinary letters are reserved for users.” ‘C-c C-c’ is already a prefix map for sgml-mode, the ‘w’ fits nicely there without a conflict. --- emmet-mode.el | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/emmet-mode.el b/emmet-mode.el index c1326ed..8eff16c 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -305,13 +305,12 @@ 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 "") 'emmet-expand-line) (define-key map (kbd "") 'emmet-next-edit-point) (define-key map (kbd "") 'emmet-prev-edit-point) - (define-key map (kbd "C-c w") 'emmet-wrap-with-markup) + (define-key map (kbd "C-c C-c w") 'emmet-wrap-with-markup) map) "Keymap for emmet minor mode.") @@ -4011,7 +4010,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 -- cgit v1.2.3 From 4b84fa73ab0b4a71e12cf9595a32dff2a67f2c3f Mon Sep 17 00:00:00 2001 From: Vladimir Sedach Date: Thu, 29 Mar 2018 00:57:04 -0700 Subject: Change emmet-wrap-with-markup to leave point at end of added markup This makes emmet-wrap-with-markup more useful for keyboard macros --- emmet-mode.el | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/emmet-mode.el b/emmet-mode.el index 8eff16c..346c6af 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -655,16 +655,31 @@ See `emmet-preview-online'." "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) (concat terminal-element "{!!!" (secure-hash 'sha1 el) "!!!}" multiplier-expr)) + (mapconcat (lambda (el) + (concat terminal-element + "{!!!" + (secure-hash 'sha1 el) + "!!!}" + multiplier-expr)) to-wrap "+"))) (markup @@ -679,12 +694,7 @@ See `emmet-preview-online'." (when markup (delete-region (region-beginning) (region-end)) (insert markup) - (indent-region (region-beginning) (region-end)) - (let ((end (region-end))) - (goto-char (region-beginning)) - (unless (ignore-errors (progn (emmet-next-edit-point 1) t)) - (goto-char end))) - ))) + (indent-region (region-beginning) (region-end))))) ;;;###autoload (defun emmet-next-edit-point (count) -- cgit v1.2.3