diff options
author | Dave Mayo <dave_mayo@harvard.edu> | 2016-09-06 00:47:44 -0400 |
---|---|---|
committer | Dave Mayo <dave_mayo@harvard.edu> | 2016-09-06 00:47:44 -0400 |
commit | ae7d5a2588ea5f8a48eda1c9d190ff06073e555b (patch) | |
tree | c74a36779f5783018da4eafcf55cff971a34dde5 | |
parent | 1a64b7dfece4357df0b0d96929225057951fe781 (diff) | |
download | emmet-mode-ae7d5a2588ea5f8a48eda1c9d190ff06073e555b.tar.lz emmet-mode-ae7d5a2588ea5f8a48eda1c9d190ff06073e555b.tar.xz emmet-mode-ae7d5a2588ea5f8a48eda1c9d190ff06073e555b.zip |
Implement token-replacement in new wrap * function
It itched at me, so I cleaned it up and rewrote to make it do the token
replacement. Would be more performant to do the sha1 once, but
realistically, it's not going to be meaningfully slow for the use-case.
This is essentially complete, but needs tests - I'll add them as soon as
I can get testing working on my computer.
-rw-r--r-- | emmet-mode.el | 39 | ||||
-rw-r--r-- | src/mode-def.el | 39 |
2 files changed, 46 insertions, 32 deletions
diff --git a/emmet-mode.el b/emmet-mode.el index 2e03c94..92542f4 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -632,24 +632,31 @@ accept it or skip it." (to-wrap (if multi (split-string txt "\n") (list txt))) - (initial-elements (replace-regexp-in-string "\\(.*>\\)?[^>*]+\\*?$" "\\1" wrap-with)) - (terminal-element (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\*?$" "\\2" wrap-with)) + (initial-elements (replace-regexp-in-string "\\(.*>\\)?[^>*]+\\*?$" "\\1" wrap-with t)) + (terminal-element (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\*?$" "\\2" wrap-with t)) (expr (concat initial-elements - (mapconcat (lambda (el) (concat terminal-element "{" el "}")) to-wrap "+"))) - - (markup (emmet-transform expr)) - (debug-shit (message "initial-elements: %s\nterminal-element: %s\n expr: %s\n markup: %s" initial-elements terminal-element expr markup)) - ) - (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))) - ))) + (mapconcat (lambda (el) (concat terminal-element "{!!!" (secure-hash 'sha1 el) "!!!}")) + to-wrap + "+"))) + (markup + (reduce + (lambda (result text) + (replace-regexp-in-string + (concat "!!!" (secure-hash 'sha1 text) "!!!") + text + result t t)) + to-wrap + :initial-value (emmet-transform expr)))) + (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))) + ))) ;;;###autoload (defun emmet-next-edit-point (count) diff --git a/src/mode-def.el b/src/mode-def.el index 1b4358e..0f3a522 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -479,24 +479,31 @@ accept it or skip it." (to-wrap (if multi (split-string txt "\n") (list txt))) - (initial-elements (replace-regexp-in-string "\\(.*>\\)?[^>*]+\\*?$" "\\1" wrap-with)) - (terminal-element (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\*?$" "\\2" wrap-with)) + (initial-elements (replace-regexp-in-string "\\(.*>\\)?[^>*]+\\*?$" "\\1" wrap-with t)) + (terminal-element (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\*?$" "\\2" wrap-with t)) (expr (concat initial-elements - (mapconcat (lambda (el) (concat terminal-element "{" el "}")) to-wrap "+"))) - - (markup (emmet-transform expr)) - (debug-shit (message "initial-elements: %s\nterminal-element: %s\n expr: %s\n markup: %s" initial-elements terminal-element expr markup)) - ) - (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))) - ))) + (mapconcat (lambda (el) (concat terminal-element "{!!!" (secure-hash 'sha1 el) "!!!}")) + to-wrap + "+"))) + (markup + (reduce + (lambda (result text) + (replace-regexp-in-string + (concat "!!!" (secure-hash 'sha1 text) "!!!") + text + result t t)) + to-wrap + :initial-value (emmet-transform expr)))) + (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))) + ))) ;;;###autoload (defun emmet-next-edit-point (count) |