From 0a9172a8f20cb8cda34a696f1d29159923201d1d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Mar 2021 18:43:25 -0500 Subject: [PATCH] tools/lookup: fall through if xref backend fails Part 1 to solution for #4739 --- modules/tools/lookup/autoload/lookup.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/tools/lookup/autoload/lookup.el b/modules/tools/lookup/autoload/lookup.el index 6d529f183..797b564e1 100644 --- a/modules/tools/lookup/autoload/lookup.el +++ b/modules/tools/lookup/autoload/lookup.el @@ -188,12 +188,15 @@ This can be passed nil as its second argument to unset handlers for MODES. e.g. (xref-find-backend) identifier))) (when xrefs - (funcall (or show-fn #'xref--show-defs) - (lambda () xrefs) - nil) - (if (cdr xrefs) - 'deferred - t)))) + (let ((marker-ring (ring-copy xref--marker-ring))) + (funcall (or show-fn #'xref--show-defs) + (lambda () xrefs) + nil) + (if (cdr xrefs) + 'deferred + ;; xref will modify its marker stack when it finds a result to jump to. + ;; Use that to determine success. + (not (equal xref--marker-ring marker-ring))))))) (defun +lookup-dictionary-definition-backend-fn (identifier) "Look up dictionary definition for IDENTIFIER."