branch: master commit 70151f4f1e56fdf18d9e2b9dff9dec7a769e0a05 Author: João Távora <joaotav...@gmail.com> Commit: João Távora <joaotav...@gmail.com>
Closes #525, closes #526: Prevent some keybinding fallback loops * yasnippet.el (yas--keybinding-beyond-yasnippet): Add docstring. (yas--fallback): Also let-bind `yas-minor-mode' to nil when falling back. --- yasnippet.el | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/yasnippet.el b/yasnippet.el index 75f0ad4..a64230b 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -2254,6 +2254,12 @@ Common gateway for `yas-expand-from-trigger-key' and "outside of the `yas-minor-mode-map'."))) ((eq yas-fallback-behavior 'call-other-command) (let* ((yas-fallback-behavior 'yas--fallback) + ;; Also bind `yas-minor-mode' to prevent fallback + ;; loops when other extensions use mechanisms similar + ;; to `yas--keybinding-beyond-yasnippet'. (github #525 + ;; and #526) + ;; + (yas-minor-mode nil) (beyond-yasnippet (yas--keybinding-beyond-yasnippet))) (yas--message 4 "Falling back to %s" beyond-yasnippet) (assert (or (null beyond-yasnippet) (commandp beyond-yasnippet))) @@ -2263,7 +2269,8 @@ Common gateway for `yas-expand-from-trigger-key' and ((and (listp yas-fallback-behavior) (cdr yas-fallback-behavior) (eq 'apply (car yas-fallback-behavior))) - (let ((yas-fallback-behavior 'yas--fallback)) + (let ((yas-fallback-behavior 'yas--fallback) + (yas-minor-mode nil)) (if (cddr yas-fallback-behavior) (apply (cadr yas-fallback-behavior) (cddr yas-fallback-behavior)) @@ -2275,7 +2282,7 @@ Common gateway for `yas-expand-from-trigger-key' and nil))) (defun yas--keybinding-beyond-yasnippet () - "Return the ??" + "Get current keys's binding as if YASsnippet didn't exist." (let* ((yas-minor-mode nil) (yas--direct-keymaps nil) (keys (this-single-command-keys)))