diff --git a/modules/navigation/siren-consult.el b/modules/navigation/siren-consult.el index 46b2f42..fecb3cb 100644 --- a/modules/navigation/siren-consult.el +++ b/modules/navigation/siren-consult.el @@ -9,7 +9,7 @@ (use-package consult :defer t :bind - ("C-t" . consult-imenu) + ("C-t" . siren-consult-imenu) ("C-x b" . consult-buffer) ("M-g M-g" . consult-goto-line) @@ -22,6 +22,19 @@ (consult-project-root-function 'siren-consult-project-root) :init + (defun siren-consult-imenu () + "Intelligently trigger consult-lsp-file-symbols or consult-imenu." + (interactive) + (if (and (fboundp 'consult-lsp-file-symbols) + (boundp 'lsp-mode) + lsp-mode) + ;; consult-lsp-file-symbols errors on some language servers, in such + ;; a case, fall back to consult-imenu. + (condition-case _ + (consult-lsp-file-symbols) + ('error (consult-imenu))) + (consult-imenu))) + (defun siren-consult-project-root (&rest args) "Call projectile-project-root if defined, otherwise return empty string." (if (fboundp 'projectile-project-root)