aboutsummaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--emmet-mode.el39
-rw-r--r--src/mode-def.el39
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)