Replace :lookup with set-lookup-handlers! autodef

And update all internal references.
This commit is contained in:
Henrik Lissner 2018-06-15 17:27:48 +02:00
parent bfdc00cf42
commit c0251aacee
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
17 changed files with 43 additions and 37 deletions

View file

@ -4,8 +4,8 @@
(defvar +lookup--ag-installed-p (executable-find "ag")) (defvar +lookup--ag-installed-p (executable-find "ag"))
(defvar +lookup--last-provider nil) (defvar +lookup--last-provider nil)
;;;###autoload ;;;###autodef
(def-setting! :lookup (modes &rest plist) (cl-defun set-lookup-handlers! (modes &key definition references documentation file xref-backend)
"Defines a jump target for major MODES. PLIST accepts the following "Defines a jump target for major MODES. PLIST accepts the following
properties: properties:
@ -27,24 +27,30 @@ properties:
Using this multiple times overwrites previous properties and unsets omitted Using this multiple times overwrites previous properties and unsets omitted
ones." ones."
`(progn (dolist (mode (doom-enlist modes))
,@(cl-loop for mode in (doom-enlist (doom-unquote modes)) (let ((def-name (intern (format "+lookup--init-%s" mode))))
for def-name = (intern (format "doom--init-lookup-%s" mode)) (fset def-name
collect (lambda ()
`(defun ,def-name () (when (or (eq major-mode mode)
(when (or (eq major-mode ',mode) (and (boundp mode)
(bound-and-true-p ,mode)) (symbol-value mode)))
(let ((xref ,(plist-get plist :xref-backend)) (when definition
(def ,(plist-get plist :definition)) (add-hook '+lookup-definition-functions definition nil t))
(ref ,(plist-get plist :references)) (when references
(fil ,(plist-get plist :file)) (add-hook '+lookup-references-functions references nil t))
(doc ,(plist-get plist :documentation))) (when documentation
(if xref (add-hook 'xref-backend-functions xref nil t)) (add-hook '+lookup-documentation-functions documentation nil t))
(if def (add-hook '+lookup-definition-functions def nil t)) (when file
(if ref (add-hook '+lookup-references-functions ref nil t)) (add-hook '+lookup-file-functions file nil t))
(if fil (add-hook '+lookup-file-functions fil nil t)) (when xref-backend
(if doc (add-hook '+lookup-documentation-functions doc nil t))))) (add-hook 'xref-backend-functions xref-backend nil t)))))
collect `(add-hook! ,mode #',def-name)))) (add-hook (intern (format "%s-hook" mode)) def-name))))
;;;###autoload
(def-setting! :lookup (modes &rest plist)
:obsolete set-lookup-handlers!
`(set-lookup-handlers! ,modes ,@plist))
;; Helpers ;; Helpers
(defun +lookup--online-provider (&optional force-p namespace) (defun +lookup--online-provider (&optional force-p namespace)

View file

@ -212,7 +212,7 @@ compilation database is present in the project.")
;; ...and don't auto-jump to first match before making a selection. ;; ...and don't auto-jump to first match before making a selection.
rtags-jump-to-first-match nil) rtags-jump-to-first-match nil)
(set! :lookup '(c-mode c++-mode) (set-lookup-handlers! '(c-mode c++-mode)
:definition #'rtags-find-symbol-at-point :definition #'rtags-find-symbol-at-point
:references #'rtags-find-references-at-point) :references #'rtags-find-references-at-point)

View file

@ -33,7 +33,7 @@
(set-popup-rule! "^\\*cider-repl" nil '((quit) (select))) (set-popup-rule! "^\\*cider-repl" nil '((quit) (select)))
(set-repl-handler! 'clojure-mode #'+clojure/repl) (set-repl-handler! 'clojure-mode #'+clojure/repl)
(set-eval-handler! 'clojure-mode #'cider-eval-region) (set-eval-handler! 'clojure-mode #'cider-eval-region)
(set! :lookup 'clojure-mode (set-lookup-handlers! 'clojure-mode
:definition #'cider-browse-ns-find-at-point :definition #'cider-browse-ns-find-at-point
:documentation #'cider-browse-ns-doc-at-point) :documentation #'cider-browse-ns-doc-at-point)

View file

@ -3,7 +3,7 @@
(def-package! crystal-mode (def-package! crystal-mode
:defer t :defer t
:config :config
(set! :lookup 'crystal-mode (set-lookup-handlers! 'crystal-mode
:definition #'crystal-def-jump :definition #'crystal-def-jump
:references #'crystal-tool-imp) :references #'crystal-tool-imp)
(set-eval-handler! 'crystal-mode (set-eval-handler! 'crystal-mode

View file

@ -20,7 +20,7 @@
(set-company-backend! 'csharp-mode '(company-omnisharp)) (set-company-backend! 'csharp-mode '(company-omnisharp))
(set! :lookup 'csharp-mode (set-lookup-handlers! 'csharp-mode
:definition #'omnisharp-go-to-definition :definition #'omnisharp-go-to-definition
:references #'omnisharp-find-usages :references #'omnisharp-find-usages
:documentation #'omnisharp-current-type-documentation) :documentation #'omnisharp-current-type-documentation)

View file

@ -30,7 +30,7 @@
(def-package! alchemist (def-package! alchemist
:hook (elixir-mode . alchemist-mode) :hook (elixir-mode . alchemist-mode)
:config :config
(set! :lookup 'elixir-mode (set-lookup-handlers! 'elixir-mode
:definition #'alchemist-goto-definition-at-point :definition #'alchemist-goto-definition-at-point
:documentation #'alchemist-help-search-at-point) :documentation #'alchemist-help-search-at-point)
(set-eval-handler! 'elixir-mode #'alchemist-eval-region) (set-eval-handler! 'elixir-mode #'alchemist-eval-region)

View file

@ -5,7 +5,7 @@
:config :config
(set-repl-handler! 'emacs-lisp-mode #'+emacs-lisp/repl) (set-repl-handler! 'emacs-lisp-mode #'+emacs-lisp/repl)
(set-eval-handler! 'emacs-lisp-mode #'+emacs-lisp-eval) (set-eval-handler! 'emacs-lisp-mode #'+emacs-lisp-eval)
(set! :lookup 'emacs-lisp-mode :documentation 'info-lookup-symbol) (set-lookup-handlers! 'emacs-lisp-mode :documentation 'info-lookup-symbol)
(set-docset! '(lisp-mode emacs-lisp-mode) "Emacs Lisp") (set-docset! '(lisp-mode emacs-lisp-mode) "Emacs Lisp")
(set! :rotate 'emacs-lisp-mode (set! :rotate 'emacs-lisp-mode

View file

@ -40,7 +40,7 @@
ess-default-style 'DEFAULT) ess-default-style 'DEFAULT)
(ess-toggle-underscore t) (ess-toggle-underscore t)
(set-repl-handler! 'ess-mode #'+ess/r-repl) (set-repl-handler! 'ess-mode #'+ess/r-repl)
(set! :lookup 'ess-mode :documentation #'ess-display-help-on-object) (set-lookup-handlers! 'ess-mode :documentation #'ess-display-help-on-object)
(define-key! ess-doc-map (define-key! ess-doc-map
"h" #'ess-display-help-on-object "h" #'ess-display-help-on-object
"p" #'ess-R-dv-pprint "p" #'ess-R-dv-pprint

View file

@ -7,7 +7,7 @@
(after! go-mode (after! go-mode
(set-env! "GOPATH" "GOROOT") (set-env! "GOPATH" "GOROOT")
(set-repl-handler! 'go-mode #'gorepl-run) (set-repl-handler! 'go-mode #'gorepl-run)
(set! :lookup 'go-mode (set-lookup-handlers! 'go-mode
:definition #'go-guru-definition :definition #'go-guru-definition
:references #'go-guru-referrers :references #'go-guru-referrers
:documentation #'godoc-at-point) :documentation #'godoc-at-point)

View file

@ -14,7 +14,7 @@ This is necessary because `intero-mode' doesn't do its own error checks."
(add-hook 'haskell-mode-hook #'+haskell|init-intero) (add-hook 'haskell-mode-hook #'+haskell|init-intero)
:config :config
(add-hook 'intero-mode-hook #'flycheck-mode) (add-hook 'intero-mode-hook #'flycheck-mode)
(set! :lookup 'haskell-mode :definition #'intero-goto-definition)) (set-lookup-handlers! 'haskell-mode :definition #'intero-goto-definition))
(def-package! hindent (def-package! hindent

View file

@ -6,7 +6,7 @@
(def-package! eclim (def-package! eclim
:hook (java-mode . eclim-mode) :hook (java-mode . eclim-mode)
:config :config
(set! :lookup 'java-mode (set-lookup-handlers! 'java-mode
:definition #'eclim-java-find-declaration :definition #'eclim-java-find-declaration
:references #'eclim-java-find-references :references #'eclim-java-find-references
:documentation #'eclim-java-show-documentation-for-current-element) :documentation #'eclim-java-show-documentation-for-current-element)

View file

@ -10,7 +10,7 @@
meghanada-use-eldoc t meghanada-use-eldoc t
meghanada-use-auto-start t) meghanada-use-auto-start t)
(set! :lookup 'java-mode (set-lookup-handlers! 'java-mode
:definition #'meghanada-jump-declaration :definition #'meghanada-jump-declaration
:references #'meghanada-reference) :references #'meghanada-reference)

View file

@ -105,7 +105,7 @@
(set-company-backend! 'tide-mode 'company-tide) (set-company-backend! 'tide-mode 'company-tide)
;; navigation ;; navigation
(set! :lookup 'tide-mode (set-lookup-handlers! 'tide-mode
:definition #'tide-jump-to-definition :definition #'tide-jump-to-definition
:references #'tide-references :references #'tide-references
:documentation #'tide-documentation-at-point) :documentation #'tide-documentation-at-point)
@ -158,7 +158,7 @@
(def-package! xref-js2 (def-package! xref-js2
:when (featurep! :feature lookup) :when (featurep! :feature lookup)
:commands xref-js2-xref-backend :commands xref-js2-xref-backend
:init (set! :lookup 'js2-mode :xref-backend #'xref-js2-xref-backend)) :init (set-lookup-handlers! 'js2-mode :xref-backend #'xref-js2-xref-backend))
(def-package! js2-refactor (def-package! js2-refactor

View file

@ -3,7 +3,7 @@
(after! lua-mode (after! lua-mode
(add-hook 'lua-mode-hook #'flycheck-mode) (add-hook 'lua-mode-hook #'flycheck-mode)
(set! :lookup 'lua-mode :documentation 'lua-search-documentation) (set-lookup-handlers! 'lua-mode :documentation 'lua-search-documentation)
(set-electric! 'lua-mode :words '("else" "end")) (set-electric! 'lua-mode :words '("else" "end"))
(set-repl-handler! 'lua-mode #'+lua/repl) (set-repl-handler! 'lua-mode #'+lua/repl)
(set-company-backend! 'lua-mode '(company-lua company-yasnippet)) (set-company-backend! 'lua-mode '(company-lua company-yasnippet))

View file

@ -18,7 +18,7 @@
(setq php-template-compatibility nil) (setq php-template-compatibility nil)
(set-repl-handler! 'php-mode #'php-boris) (set-repl-handler! 'php-mode #'php-boris)
(set! :lookup 'php-mode :documentation #'php-search-documentation) (set-lookup-handlers! 'php-mode :documentation #'php-search-documentation)
;; ac-php provides custom autocompletion, php-extras provides autocompletion ;; ac-php provides custom autocompletion, php-extras provides autocompletion
;; for built-in libraries ;; for built-in libraries

View file

@ -81,7 +81,7 @@ environment variables."
(add-hook 'anaconda-mode-hook #'anaconda-eldoc-mode) (add-hook 'anaconda-mode-hook #'anaconda-eldoc-mode)
(set-company-backend! 'python-mode '(company-anaconda)) (set-company-backend! 'python-mode '(company-anaconda))
(set-popup-rule! "^\\*anaconda-mode" nil '((select))) (set-popup-rule! "^\\*anaconda-mode" nil '((select)))
(set! :lookup 'python-mode (set-lookup-handlers! 'python-mode
:definition #'anaconda-mode-find-definitions :definition #'anaconda-mode-find-definitions
:references #'anaconda-mode-find-references :references #'anaconda-mode-find-references
:documentation #'anaconda-mode-show-doc) :documentation #'anaconda-mode-show-doc)

View file

@ -21,7 +21,7 @@
:after rust-mode :after rust-mode
:config :config
(add-hook 'rust-mode-hook #'racer-mode) (add-hook 'rust-mode-hook #'racer-mode)
(set! :lookup 'rust-mode (set-lookup-handlers! 'rust-mode
:definition #'racer-find-definition :definition #'racer-find-definition
:documentation #'racer-describe)) :documentation #'racer-describe))