mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 13:13:03 +00:00
Signal an error on recursive yas--fallback calls
* yasnippet.el (yas--fallback): let-bind yas-fallback-behavior to 'yas--fallback before actually doing the fallback. Signal an error if it's 'yas--fallback (indicating we're in an infinte loop).
This commit is contained in:
parent
08b044e559
commit
e7314516e3
20
yasnippet.el
20
yasnippet.el
@ -2248,8 +2248,13 @@ Common gateway for `yas-expand-from-trigger-key' and
|
|||||||
(cond ((eq yas-fallback-behavior 'return-nil)
|
(cond ((eq yas-fallback-behavior 'return-nil)
|
||||||
;; return nil
|
;; return nil
|
||||||
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)
|
((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)
|
(yas--message 4 "Falling back to %s" beyond-yasnippet)
|
||||||
(assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
|
(assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
|
||||||
(setq this-original-command 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)
|
((and (listp yas-fallback-behavior)
|
||||||
(cdr yas-fallback-behavior)
|
(cdr yas-fallback-behavior)
|
||||||
(eq 'apply (car yas-fallback-behavior)))
|
(eq 'apply (car yas-fallback-behavior)))
|
||||||
(if (cddr yas-fallback-behavior)
|
(let ((yas-fallback-behavior 'yas--fallback))
|
||||||
(apply (cadr yas-fallback-behavior)
|
(if (cddr yas-fallback-behavior)
|
||||||
(cddr yas-fallback-behavior))
|
(apply (cadr yas-fallback-behavior)
|
||||||
(when (commandp (cadr yas-fallback-behavior))
|
(cddr yas-fallback-behavior))
|
||||||
(setq this-command (cadr yas-fallback-behavior))
|
(when (commandp (cadr yas-fallback-behavior))
|
||||||
(call-interactively (cadr yas-fallback-behavior)))))
|
(setq this-command (cadr yas-fallback-behavior))
|
||||||
|
(call-interactively (cadr yas-fallback-behavior))))))
|
||||||
(t
|
(t
|
||||||
;; also return nil if all the other fallbacks have failed
|
;; also return nil if all the other fallbacks have failed
|
||||||
nil)))
|
nil)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user