aboutsummaryrefslogtreecommitdiffstats
path: root/emmet-mode.el
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 /emmet-mode.el
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 'emmet-mode.el')
-rw-r--r--emmet-mode.el39
1 files changed, 23 insertions, 16 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)