diff --git a/modules/tools/lookup/autoload/lookup.el b/modules/tools/lookup/autoload/lookup.el index 797b564e1..5b24c5ffd 100644 --- a/modules/tools/lookup/autoload/lookup.el +++ b/modules/tools/lookup/autoload/lookup.el @@ -212,11 +212,15 @@ This can be passed nil as its second argument to unset handlers for MODES. e.g. (defun +lookup-xref-definitions-backend-fn (identifier) "Non-interactive wrapper for `xref-find-definitions'" - (+lookup--xref-show 'xref-backend-definitions identifier #'xref--show-defs)) + (condition-case _ + (+lookup--xref-show 'xref-backend-definitions identifier #'xref--show-defs) + (cl-no-applicable-method nil))) (defun +lookup-xref-references-backend-fn (identifier) "Non-interactive wrapper for `xref-find-references'" - (+lookup--xref-show 'xref-backend-references identifier #'xref--show-xrefs)) + (condition-case _ + (+lookup--xref-show 'xref-backend-references identifier #'xref--show-xrefs) + (cl-no-applicable-method nil))) (defun +lookup-dumb-jump-backend-fn (_identifier) "Look up the symbol at point (or selection) with `dumb-jump', which conducts a diff --git a/modules/tools/lsp/+lsp.el b/modules/tools/lsp/+lsp.el index 85694aada..f52256b43 100644 --- a/modules/tools/lsp/+lsp.el +++ b/modules/tools/lsp/+lsp.el @@ -58,9 +58,9 @@ about it (it will be logged to *Messages* however).") lsp-groovy-server-file (concat lsp-server-install-dir "groovy-language-server-all.jar")) (set-popup-rule! "^\\*lsp-help" :size 0.35 :quit t :select t) - (set-lookup-handlers! 'lsp-mode :async t - ;; NOTE :definitions and :references aren't needed. LSP is integrated into - ;; xref, which the lookup module has first class support for. + (set-lookup-handlers! 'lsp-mode + :definition #'+lsp-lookup-definition-handler + :references #'+lsp-lookup-references-handler :documentation #'lsp-describe-thing-at-point :implementations #'lsp-find-implementation :type-definition #'lsp-find-type-definition) diff --git a/modules/tools/lsp/autoload/lsp-mode.el b/modules/tools/lsp/autoload/lsp-mode.el index 0f33155fa..16a3342f8 100644 --- a/modules/tools/lsp/autoload/lsp-mode.el +++ b/modules/tools/lsp/autoload/lsp-mode.el @@ -49,3 +49,25 @@ (car workspaces))) (lsp-mode +1)) (setf (lsp--client-priority match) old-priority))))) + +;;;###autoload +(defun +lsp-lookup-definition-handler () + "Find definition of the symbol at point using LSP." + (interactive) + (when-let (loc (lsp-request "textDocument/definition" + (lsp--text-document-position-params))) + (lsp-show-xrefs (lsp--locations-to-xref-items loc) nil nil) + t)) + +;;;###autoload +(defun +lsp-lookup-references-handler (&optional include-declaration) + "Find project-wide references of the symbol at point using LSP." + (interactive "P") + (when-let + (loc (lsp-request "textDocument/references" + (append (lsp--text-document-position-params) + (list + :context `(:includeDeclaration + ,(lsp-json-bool include-declaration)))))) + (lsp-show-xrefs (lsp--locations-to-xref-items loc) nil t) + t))