Replace :docset with set-docset! autodef
This commit is contained in:
parent
cccccbb3fd
commit
b99ab59578
4 changed files with 49 additions and 26 deletions
|
@ -1,6 +1,48 @@
|
||||||
;;; feature/lookup/autoload/docsets.el -*- lexical-binding: t; -*-
|
;;; feature/lookup/autoload/docsets.el -*- lexical-binding: t; -*-
|
||||||
;;;###if (featurep! +docsets)
|
;;;###if (featurep! +docsets)
|
||||||
|
|
||||||
|
;;;###autodef
|
||||||
|
(defun set-docset! (modes &rest docsets)
|
||||||
|
"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)
|
||||||
|
(require 'counsel-dash)
|
||||||
|
(setq var-sym 'counsel-dash-docsets))
|
||||||
|
((featurep! :completion helm)
|
||||||
|
(require 'helm-dash)
|
||||||
|
(setq var-sym 'helm-dash-docsets)))
|
||||||
|
(when var-sym
|
||||||
|
(let ((val (symbol-value var-sym)))
|
||||||
|
(make-variable-buffer-local var-sym)
|
||||||
|
(pcase (car docsets)
|
||||||
|
(:add
|
||||||
|
(set var-sym (append val (cdr docsets))))
|
||||||
|
(:remove
|
||||||
|
(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))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(def-setting! :docset (modes &rest docsets)
|
(def-setting! :docset (modes &rest docsets)
|
||||||
"Registers a list of DOCSETS (strings) for MODES (either one major mode
|
"Registers a list of DOCSETS (strings) for MODES (either one major mode
|
||||||
|
@ -11,27 +53,8 @@ DOCSETS, to instruct it to append (or remove) those from the docsets already set
|
||||||
by a major-mode, if any.
|
by a major-mode, if any.
|
||||||
|
|
||||||
Used by `+lookup/in-docsets' and `+lookup/documentation'."
|
Used by `+lookup/in-docsets' and `+lookup/documentation'."
|
||||||
(let* ((modes (doom-unquote modes))
|
:obsolete set-docset!
|
||||||
(ivy-p (featurep! :completion ivy))
|
`(set-docset! ,modes ,@docsets))
|
||||||
(hook-sym (intern (format "+lookup|%s-docsets--%s"
|
|
||||||
(cond ((eq ',(car docsets) :add) 'add)
|
|
||||||
((eq ',(car docsets) :remove) 'remove)
|
|
||||||
('set))
|
|
||||||
(string-join docsets "-"))))
|
|
||||||
(var-sym (if ivy-p 'counsel-dash-docsets 'helm-dash-docsets)))
|
|
||||||
`(progn
|
|
||||||
(defun ,hook-sym ()
|
|
||||||
(make-variable-buffer-local ',var-sym)
|
|
||||||
,(cond ((eq ',(car docsets) :add)
|
|
||||||
`(setq ,var-sym (append ,var-sym (list ,@(cdr docsets)))))
|
|
||||||
((eq ',(car docsets) :remove)
|
|
||||||
`(setq ,var-sym
|
|
||||||
(cl-loop with to-delete = (list ,@(cdr docsets))
|
|
||||||
for docset in ,var-sym
|
|
||||||
unless (member docset to-delete)
|
|
||||||
collect docset)))
|
|
||||||
(`(setq ,var-sym (list ,@docsets)))))
|
|
||||||
(add-hook! ,modes #',hook-sym))))
|
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(autoload 'helm-dash-installed-docsets "helm-dash")
|
(autoload 'helm-dash-installed-docsets "helm-dash")
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
(set! :repl 'emacs-lisp-mode #'+emacs-lisp/repl)
|
(set! :repl 'emacs-lisp-mode #'+emacs-lisp/repl)
|
||||||
(set! :eval 'emacs-lisp-mode #'+emacs-lisp-eval)
|
(set! :eval 'emacs-lisp-mode #'+emacs-lisp-eval)
|
||||||
(set! :lookup 'emacs-lisp-mode :documentation 'info-lookup-symbol)
|
(set! :lookup '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
|
||||||
:symbols '(("t" "nil")
|
:symbols '(("t" "nil")
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
(after! rust-mode
|
(after! rust-mode
|
||||||
(set-env! "RUST_SRC_PATH")
|
(set-env! "RUST_SRC_PATH")
|
||||||
(set! :docset 'rust-mode "Rust")
|
(set-docset! 'rust-mode "Rust")
|
||||||
(setq rust-indent-method-chain t)
|
(setq rust-indent-method-chain t)
|
||||||
|
|
||||||
(map! :map rust-mode-map
|
(map! :map rust-mode-map
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
:defer t
|
:defer t
|
||||||
:config
|
:config
|
||||||
;; contains both css-mode & scss-mode
|
;; contains both css-mode & scss-mode
|
||||||
(set! :docset 'css-mode "CSS")
|
(set-docset! 'css-mode "CSS")
|
||||||
(set! :docset 'scss-mode "Sass")
|
(set-docset! 'scss-mode "Sass")
|
||||||
(unless EMACS26+
|
(unless EMACS26+
|
||||||
;; css-mode's built in completion is superior
|
;; css-mode's built in completion is superior
|
||||||
(set-company-backend! '(css-mode scss-mode) 'company-css))
|
(set-company-backend! '(css-mode scss-mode) 'company-css))
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
(def-package! sass-mode
|
(def-package! sass-mode
|
||||||
:defer t
|
:defer t
|
||||||
:config
|
:config
|
||||||
(set! :docset 'sass-mode "Sass")
|
(set-docset! 'sass-mode "Sass")
|
||||||
(set-company-backend! 'sass-mode 'company-css)
|
(set-company-backend! 'sass-mode 'company-css)
|
||||||
(map! :map scss-mode-map :localleader :n "b" #'+css/sass-build))
|
(map! :map scss-mode-map :localleader :n "b" #'+css/sass-build))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue