doomemacs/core/autoload/help.el
2017-05-28 02:48:20 +02:00

38 lines
1.6 KiB
EmacsLisp

;;; ../core/autoload/help.el
;;;###autoload
(defun doom/describe-setting (setting)
"Open the documentation of SETTING (a keyword defined with `def-setting!')."
(interactive
;; TODO try to read setting from whole line
(let ((keyword (thing-at-point 'symbol t)))
(list (completing-read
(format "Describe setting%s: "
(if (equal (substring keyword 0 1) ":")
(format " (default %s)" keyword)
""))
doom-settings
nil t nil nil keyword))))
(let ((fn (intern-soft (format "doom-setting--setter%s" setting))))
(unless fn
(error "'%s' is not a valid DOOM setting" setting))
(describe-function fn)))
;;;###autoload
(defun doom/describe-module (module)
"Open the documentation of MODULE (a string that represents the category and
submodule in the format, e.g. ':feature evil')."
(interactive
;; TODO try to read module from whole line
(list (completing-read "Describe module: "
(mapcar (lambda (x) (format "%s %s" (car x) (cdr x)))
(reverse (hash-table-keys doom-modules)))
nil t)))
(destructuring-bind (category submodule) (mapcar #'intern (split-string module " "))
(unless (member (cons category submodule) (doom--module-pairs))
(error "'%s' isn't a valid module" module))
(let ((doc-path (expand-file-name "README.org" (doom-module-path category submodule))))
(unless (file-exists-p doc-path)
(error "There is no documentation for this module"))
(find-file doc-path))))