[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master ee4efdb 05/40: Revert "Separate parsing from evaluation of
From: |
Noam Postavsky |
Subject: |
[elpa] master ee4efdb 05/40: Revert "Separate parsing from evaluation of backquote lisp" |
Date: |
Wed, 26 Oct 2016 23:06:32 +0000 (UTC) |
branch: master
commit ee4efdbbde2da236fa06bb18290339d0cdca6699
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>
Revert "Separate parsing from evaluation of backquote lisp"
This reverts commit e21420a497c1d79edc6b36ffb1f3bf1bb70f6227. This
breaks existing snippets which use side-effecting functions inside
backquotes to insert data instead of return the string to insert. This
usage will be deprecated, but we still need to support it for at least
another release.
* yasnippet.el (yas--save-backquotes): Go back to interleaved parsing
and evaluating of backquoted lisp forms.
---
yasnippet.el | 42 ++++++++++++++----------------------------
1 file changed, 14 insertions(+), 28 deletions(-)
diff --git a/yasnippet.el b/yasnippet.el
index 5164754..8a6258c 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -4017,34 +4017,20 @@ With optional string TEXT do it in string instead of
the buffer."
(defun yas--save-backquotes ()
"Save all the \"`(lisp-expression)`\"-style expressions
with their evaluated value into `yas--backquote-markers-and-strings'."
- ;; Gather `(lisp-expression)`s.
- (let ((end (point-max)))
- (save-restriction
- (widen)
- (while (re-search-forward yas--backquote-lisp-expression-regexp end t)
- (let ((expr (yas--read-lisp (yas--restore-escapes
- (match-string-no-properties 1))))
- (marker (make-marker)))
- (delete-region (match-beginning 0) (match-end 0))
- (insert "Y") ;; quite horrendous, I love it :)
- (set-marker marker (point))
- (insert "Y")
- (push (cons marker expr) yas--backquote-markers-and-strings)))))
- ;; Evaluate them.
- (dolist (m-e yas--backquote-markers-and-strings)
- (let* ((marker (car m-e))
- (expr (cdr m-e))
- (result (save-excursion
- (goto-char marker)
- (yas--eval-lisp expr))))
- (setcdr m-e result)
- (unless result
- (save-restriction (widen)
- (delete-region (1- marker) (1+ marker)))
- (set-marker marker nil))))
- ;; Drop the nil results.
- (setq yas--backquote-markers-and-strings
- (cl-delete-if-not #'cdr yas--backquote-markers-and-strings)))
+ (while (re-search-forward yas--backquote-lisp-expression-regexp nil t)
+ (let ((current-string (match-string-no-properties 1)) transformed)
+ (save-restriction (widen)
+ (delete-region (match-beginning 0) (match-end 0)))
+ (setq transformed (yas--eval-lisp (yas--read-lisp (yas--restore-escapes
current-string '(?`)))))
+ (goto-char (match-beginning 0))
+ (when transformed
+ (let ((marker (make-marker)))
+ (save-restriction
+ (widen)
+ (insert "Y") ;; quite horrendous, I love it :)
+ (set-marker marker (point))
+ (insert "Y"))
+ (push (cons marker transformed)
yas--backquote-markers-and-strings))))))
(defun yas--restore-backquotes ()
"Replace markers in `yas--backquote-markers-and-strings' with their values."
- [elpa] master updated (f06d730 -> 299efcb), Noam Postavsky, 2016/10/26
- [elpa] master bc80f67 01/40: .travis.yml: Don't notify on success, Noam Postavsky, 2016/10/26
- [elpa] master 6b785e1 08/40: Say how to hide the backquote side-effect warning, Noam Postavsky, 2016/10/26
- [elpa] master 1735a28 02/40: Add region contents to new snippet, Noam Postavsky, 2016/10/26
- [elpa] master ee4efdb 05/40: Revert "Separate parsing from evaluation of backquote lisp",
Noam Postavsky <=
- [elpa] master 85f39ce 06/40: Warn about backquote exprs modifying the buffer, Noam Postavsky, 2016/10/26
- [elpa] master e21420a 04/40: Separate parsing from evaluation of backquote lisp, Noam Postavsky, 2016/10/26
- [elpa] master c744148 03/40: Make yas-describe-tables easier to use from lisp, Noam Postavsky, 2016/10/26
- [elpa] master d218ed8 11/40: Do indent the first line of mirrors, but in correct order, Noam Postavsky, 2016/10/26
- [elpa] master 0db65ee 20/40: Don't clobber match data in modification hooks, Noam Postavsky, 2016/10/26
- [elpa] master dc098cf 25/40: Fix yas--message verbosity levels, Noam Postavsky, 2016/10/26
- [elpa] master 5af9276 27/40: Support yas/ symbols in yas-define-menu, Noam Postavsky, 2016/10/26
- [elpa] master ea9581f 22/40: Fix some quoting problems in doc strings, Noam Postavsky, 2016/10/26
- [elpa] master ee6e7a9 09/40: Fix some compilation warnings, Noam Postavsky, 2016/10/26
- [elpa] master 7661dc1 19/40: yasnippet.el (yas-escape-text): No error on nil text, Noam Postavsky, 2016/10/26