From dbc7b667cf2c580019deb8563f76a6cf4cb7cafe Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 21 Jun 2018 13:58:16 +0200 Subject: [PATCH] Simplify set-docset! & add unset capability Removed :add and :remove capabilities. Now appends the provided docset to the mode's list of docsets, if one exists. --- modules/feature/lookup/autoload/docsets.el | 43 +++++++--------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/modules/feature/lookup/autoload/docsets.el b/modules/feature/lookup/autoload/docsets.el index 88196c1aa..b0e5a7a2a 100644 --- a/modules/feature/lookup/autoload/docsets.el +++ b/modules/feature/lookup/autoload/docsets.el @@ -12,39 +12,22 @@ "Registers a list of DOCSETS (strings) for MODES (either one major mode symbol or a list of them). -If MODES is a minor mode, you can use :add or :remove as the first element of -DOCSETS, to instruct it to append (or remove) those from the docsets already set -by a major-mode, if any. - Used by `+lookup/in-docsets' and `+lookup/documentation'." (dolist (mode (doom-enlist modes)) - (let ((hook-sym - (intern (format "+lookup|%s-docsets--%s" - (pcase (car docsets) - (:add 'add) - (:remove 'remove) - (_ 'set)) - mode)))) - (fset hook-sym - (lambda () - (let (var-sym) - (cond ((featurep! :completion ivy) - (setq var-sym 'counsel-dash-docsets)) - ((featurep! :completion helm) - (setq var-sym 'helm-dash-docsets))) - (when var-sym - (let ((val (symbol-value var-sym))) - (pcase (car docsets) - (:add - (set var-sym (append val (cdr docsets)))) - (:remove + (let ((fn (intern (format "+lookup|init-docsets--%s" mode))) + (hook (intern (format "%s-hook" mode)))) + (cond ((null (car-safe docsets)) + (remove-hook hook fn) + (unintern fn)) + ((fset fn + (lambda () + (let ((var-sym (if (featurep! :completion ivy) + 'counsel-dash-docsets + 'helm-dash-docsets))) (set var-sym - (cl-loop with to-delete = (cdr docsets) - for docset in val - unless (member docset to-delete) - collect docset))) - (_ (set var-sym (cdr docsets))))))))) - (add-hook (intern (format "%s-hook" mode)) hook-sym)))) + (append (symbol-value var-sym) + docsets))))) + (add-hook hook fn)))))) ;;;###autoload (def-setting! :docset (modes &rest docsets)