From 380c3ac268314a6e24ae2e7c1fd0f4a3b43ad6ba Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 29 Jun 2019 00:23:13 +0200 Subject: [PATCH] Disable lookup handlers if minor mode is disabled --- modules/tools/lookup/autoload/lookup.el | 43 +++++++++++++------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/modules/tools/lookup/autoload/lookup.el b/modules/tools/lookup/autoload/lookup.el index bcad68384..5e8f44264 100644 --- a/modules/tools/lookup/autoload/lookup.el +++ b/modules/tools/lookup/autoload/lookup.el @@ -64,35 +64,38 @@ This can be passed nil as its second argument to unset handlers for MODES. e.g. (cond ((null (car plist)) (remove-hook hook fn) (unintern fn nil)) - ((fset fn - (lambda () - (when (or (eq major-mode mode) - (and (boundp mode) - (symbol-value mode))) - (cl-mapc #'+lookup--set-handler - (list definition - references - documentation - file - xref-backend) - (list '+lookup-definition-functions - '+lookup-references-functions - '+lookup-documentation-functions - '+lookup-file-functions - 'xref-backend-functions) - (make-list 5 async))))) + ((fset + fn + (lambda () + (cl-mapc #'+lookup--set-handler + (list definition + references + documentation + file + xref-backend) + (list '+lookup-definition-functions + '+lookup-references-functions + '+lookup-documentation-functions + '+lookup-file-functions + 'xref-backend-functions) + (make-list 5 async) + (make-list 5 (or (eq major-mode mode) + (and (boundp mode) + (symbol-value mode))))))) (add-hook hook fn)))))) ;; ;;; Helpers -(defun +lookup--set-handler (spec functions-var &optional async) +(defun +lookup--set-handler (spec functions-var &optional async enable) (when spec (cl-destructuring-bind (fn . plist) (doom-enlist spec) - (put fn '+lookup-async (or (plist-get plist :async) async)) - (add-hook functions-var fn nil t)))) + (if (not enable) + (remove-hook functions-var fn 'local) + (put fn '+lookup-async (or (plist-get plist :async) async)) + (add-hook functions-var fn nil 'local))))) (defun +lookup--run-handler (handler identifier) (if (commandp handler)