Rewrite+rename describe-settings->describe-setters
Will now list autodefs instead of def-settings, including an origin module label to tell you where it comes from at a glance.
This commit is contained in:
parent
1184967531
commit
a500bfb0a0
2 changed files with 46 additions and 16 deletions
|
@ -63,26 +63,56 @@
|
||||||
;;
|
;;
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom/describe-setting (setting)
|
(define-obsolete-function-alias 'doom/describe-setting 'doom/describe-setters "2.1.0")
|
||||||
"Open the documentation of SETTING (a keyword defined with `def-setting!').
|
|
||||||
|
|
||||||
Defaults to the "
|
;;;###autoload
|
||||||
|
(defun doom/describe-setters (setting)
|
||||||
|
"Open the documentation of Doom functions and configuration macros."
|
||||||
(interactive
|
(interactive
|
||||||
(let ((settings (cl-loop with case-fold-search = nil
|
(let* ((settings
|
||||||
for sym being the symbols of obarray
|
(cl-loop with case-fold-search = nil
|
||||||
for sym-name = (symbol-name sym)
|
for sym being the symbols of obarray
|
||||||
if (string-match "^doom--set\\(:.+\\)" sym-name)
|
for sym-name = (symbol-name sym)
|
||||||
collect (match-string 1 sym-name)))
|
if (and (or (functionp sym)
|
||||||
(sym (symbol-at-point)))
|
(macrop sym))
|
||||||
(list (completing-read "Describe setting: "
|
(string-match-p "[a-z]!$" sym-name))
|
||||||
(sort settings #'string-lessp)
|
collect sym))
|
||||||
nil t (if (keywordp sym) (symbol-name sym))))))
|
(sym (symbol-at-point))
|
||||||
|
(setting
|
||||||
|
(completing-read
|
||||||
|
"Describe setting: "
|
||||||
|
;; TODO Could be cleaner (refactor me!)
|
||||||
|
(cl-loop with maxwidth = (apply #'max (mapcar #'length (mapcar #'symbol-name settings)))
|
||||||
|
for def in (sort settings #'string-lessp)
|
||||||
|
if (or (get def 'doom-module)
|
||||||
|
(doom-module-from-path (symbol-file def)))
|
||||||
|
collect
|
||||||
|
(format (format "%%-%ds%%s" (+ maxwidth 4))
|
||||||
|
def (propertize (format "%s %s" (car it) (cdr it))
|
||||||
|
'face 'font-lock-comment-face))
|
||||||
|
else if (file-in-directory-p (symbol-file def) doom-core-dir)
|
||||||
|
collect
|
||||||
|
(format (format "%%-%ds%%s" (+ maxwidth 4))
|
||||||
|
def (propertize (format "%s %s" :core (file-name-sans-extension (file-relative-name (symbol-file def) doom-core-dir)))
|
||||||
|
'face 'font-lock-comment-face))
|
||||||
|
else
|
||||||
|
collect (symbol-name def))
|
||||||
|
nil t
|
||||||
|
(when (and (symbolp sym)
|
||||||
|
(string-match-p "!$" (symbol-name sym)))
|
||||||
|
(symbol-name sym)))))
|
||||||
|
(list (and setting (car (split-string setting " "))))))
|
||||||
(or (stringp setting)
|
(or (stringp setting)
|
||||||
(signal 'wrong-type-argument (list 'stringp setting)))
|
(functionp setting)
|
||||||
(let ((fn (intern-soft (format "doom--set%s" setting))))
|
(signal 'wrong-type-argument (list '(stringp functionp) setting)))
|
||||||
|
(let ((fn (if (functionp setting)
|
||||||
|
setting
|
||||||
|
(intern-soft setting))))
|
||||||
(or (fboundp fn)
|
(or (fboundp fn)
|
||||||
(error "'%s' is not a valid DOOM setting" setting))
|
(error "'%s' is not a valid DOOM setting" setting))
|
||||||
(describe-function fn)))
|
(if (fboundp 'helpful-callable)
|
||||||
|
(helpful-callable fn)
|
||||||
|
(describe-function fn))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom/describe-module (module)
|
(defun doom/describe-module (module)
|
||||||
|
|
|
@ -620,7 +620,7 @@
|
||||||
:desc "Toggle profiler" :n "p" #'doom/toggle-profiler
|
:desc "Toggle profiler" :n "p" #'doom/toggle-profiler
|
||||||
:desc "Reload theme" :n "r" #'doom//reload-theme
|
:desc "Reload theme" :n "r" #'doom//reload-theme
|
||||||
:desc "Reload private config" :n "R" #'doom//reload
|
:desc "Reload private config" :n "R" #'doom//reload
|
||||||
:desc "Describe DOOM setting" :n "s" #'doom/describe-setting
|
:desc "Describe DOOM setting" :n "s" #'doom/describe-setters
|
||||||
:desc "Describe variable" :n "v" #'describe-variable
|
:desc "Describe variable" :n "v" #'describe-variable
|
||||||
:desc "Print Doom version" :n "V" #'doom/version
|
:desc "Print Doom version" :n "V" #'doom/version
|
||||||
:desc "Man pages" :n "w" #'+default/man-or-woman
|
:desc "Man pages" :n "w" #'+default/man-or-woman
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue