From 5cbdbf0d2015540c59ed8ee0fcf4788effdf75b6 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 3 Jun 2020 22:46:18 -0400 Subject: [PATCH] Handle errors during evaluation properly * yasnippet.el (yas--eval-for-string): Convert error to a string, rather than returning the error data (which can only lead to confusing type errors later when code expecting a string gets a list). * yasnippet-tests.el (yas-no-memory-of-bad-snippet): Adjust test, now that snippet expansion swallows errors properly. --- yasnippet-tests.el | 2 +- yasnippet.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/yasnippet-tests.el b/yasnippet-tests.el index e009a72..b8a7980 100644 --- a/yasnippet-tests.el +++ b/yasnippet-tests.el @@ -847,7 +847,7 @@ mapconcat #'(lambda (arg) ;; See https://github.com/joaotavora/yasnippet/issues/800. (with-temp-buffer (yas-minor-mode 1) - (should-error (yas-expand-snippet "```foo\n\n```")) + (yas-expand-snippet "```foo\n\n```") (erase-buffer) ; Bad snippet may leave wrong text. ;; But expanding the corrected snippet should work fine. (yas-expand-snippet "\\`\\`\\`foo\n\n\\`\\`\\`") diff --git a/yasnippet.el b/yasnippet.el index fe29fc9..78ef38a 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -1505,7 +1505,7 @@ Also tries to work around Emacs Bug#30931." (let ((result (eval form))) (when result (format "%s" result)))))) - ((debug error) (cdr oops))))) + ((debug error) (error-message-string oops))))) (defun yas--eval-for-effect (form) (yas--safely-call-fun (apply-partially #'eval form)))