emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 6877bc6 151/177: Merge pull request #524 from npostavs/fal


From: João Távora
Subject: [elpa] master 6877bc6 151/177: Merge pull request #524 from npostavs/fallback-loop
Date: Sat, 28 Mar 2015 15:41:34 +0000

branch: master
commit 6877bc6db37d49a170e7bfb14aefff513891e482
Merge: 08b044e e731451
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Merge pull request #524 from npostavs/fallback-loop
    
    Signal an error on recursive yas--fallback calls
---
 yasnippet.el |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/yasnippet.el b/yasnippet.el
index 65d8e7c..75f0ad4 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -2248,8 +2248,13 @@ Common gateway for `yas-expand-from-trigger-key' and
   (cond ((eq yas-fallback-behavior 'return-nil)
          ;; return nil
          nil)
+        ((eq yas-fallback-behavior 'yas--fallback)
+         (error (concat "yasnippet fallback loop!\n"
+                        "This can happen when you bind `yas-expand' "
+                        "outside of the `yas-minor-mode-map'.")))
         ((eq yas-fallback-behavior 'call-other-command)
-         (let* ((beyond-yasnippet (yas--keybinding-beyond-yasnippet)))
+         (let* ((yas-fallback-behavior 'yas--fallback)
+                (beyond-yasnippet (yas--keybinding-beyond-yasnippet)))
            (yas--message 4 "Falling back to %s"  beyond-yasnippet)
            (assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
            (setq this-original-command beyond-yasnippet)
@@ -2258,12 +2263,13 @@ Common gateway for `yas-expand-from-trigger-key' and
         ((and (listp yas-fallback-behavior)
               (cdr yas-fallback-behavior)
               (eq 'apply (car yas-fallback-behavior)))
-         (if (cddr yas-fallback-behavior)
-             (apply (cadr yas-fallback-behavior)
-                    (cddr yas-fallback-behavior))
-           (when (commandp (cadr yas-fallback-behavior))
-             (setq this-command (cadr yas-fallback-behavior))
-             (call-interactively (cadr yas-fallback-behavior)))))
+         (let ((yas-fallback-behavior 'yas--fallback))
+           (if (cddr yas-fallback-behavior)
+               (apply (cadr yas-fallback-behavior)
+                      (cddr yas-fallback-behavior))
+             (when (commandp (cadr yas-fallback-behavior))
+               (setq this-command (cadr yas-fallback-behavior))
+               (call-interactively (cadr yas-fallback-behavior))))))
         (t
          ;; also return nil if all the other fallbacks have failed
          nil)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]