aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Mayo <dave_mayo@harvard.edu>2016-09-06 00:47:44 -0400
committerDave Mayo <dave_mayo@harvard.edu>2016-09-06 00:47:44 -0400
commitae7d5a2588ea5f8a48eda1c9d190ff06073e555b (patch)
treec74a36779f5783018da4eafcf55cff971a34dde5 /src
parent1a64b7dfece4357df0b0d96929225057951fe781 (diff)
downloademmet-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.
Diffstat (limited to 'src')
-rw-r--r--src/mode-def.el39
1 files changed, 23 insertions, 16 deletions
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)