doomemacs/core/autoload/set.el
2017-02-20 00:23:06 -05:00

47 lines
1.9 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; set.el
(defvar doom-describe-setting-buffer nil
"Buffer that was current when describe-setting was invoked.")
;;;###autoload
(defun doom/describe-setting (setting)
"Display the full documentation of SETTING (a keyword)."
(interactive
(let ((st (symbol-at-point))
(enable-recursive-minibuffers t)
val)
(setq val (completing-read (if st
(format "Describe setting (default %s): " st)
"Describe setting: ")
(mapcar (lambda (x) (symbol-name (car x))) doom-settings)
'fboundp t nil nil
(and st (symbol-name st))))
(list (if (equal val "")
st (intern val)))))
(or (and setting (keywordp setting))
(user-error "You didn't specify a setting keyword"))
(or (assq setting doom-settings)
(user-error "Symbol's setting definition is void: %s" setting))
(let ((doom-describe-setting-buffer
(or doom-describe-setting-buffer (current-buffer)))
(file-name
(find-lisp-object-file-name 'doom--set:enable 'defun)))
(help-setup-xref
(list (lambda (setting buffer)
(let ((doom-describe-setting-buffer (if (buffer-live-p buffer) buffer)))
(describe-setting function)))
setting doom-describe-setting-buffer)
(called-interactively-p 'interactive))
(save-excursion
(with-help-window (help-buffer)
(prin1 setting)
;; Use " is " instead of a colon so that
;; it is easier to get out the function name using forward-sexp.
(princ " is a DOOM Emacs setting, defined in ")
(princ (format-message " in `%s'" (help-fns-short-filename file-name)))
(with-current-buffer standard-output
;; Return the text we displayed.
(buffer-string))))))