diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2015-07-07 02:14:16 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2015-07-07 02:14:16 -0400 |
commit | 59b5723c9b613f14cd60cd3239cfdbc0d2343b18 (patch) | |
tree | 923edc0b04619ab41af69078d8cd9e3f86df5038 /lisp/help-fns.el | |
parent | 287bce988895b104c33d53faacfffd91d8d8e0f1 (diff) | |
download | emacs-59b5723c9b613f14cd60cd3239cfdbc0d2343b18.tar.gz |
Add online-help support to describe types
* lisp/help-fns.el (describe-symbol-backends): Move to help-mode.el.
(describe-symbol): Improve the selection of default.
* lisp/help-mode.el: Require cl-lib.
(describe-symbol-backends): Move from help-fns.el.
(help-make-xrefs): Use it.
* lisp/emacs-lisp/cl-extra.el (describe-symbol-backends): Add entry
for types.
(cl--typedef-regexp): New const.
(find-function-regexp-alist): Add entry for types.
(cl-help-type, cl-type-definition): New buttons.
(cl-find-class): New function.
(cl-describe-type): New command.
(cl--describe-class, cl--describe-class-slot)
(cl--describe-class-slots): New functions, moved from eieio-opt.el.
* lisp/emacs-lisp/cl-generic.el (cl--generic-method-documentation)
(cl--generic-all-functions, cl--generic-specializers-apply-to-type-p):
New functions. Moved from eieio-opt.el.
(cl--generic-class-parents): New function, extracted from
cl--generic-struct-specializers.
(cl--generic-struct-specializers): Use it.
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Use pcase-dolist.
Improve constructor's docstrings.
(cl-struct-unknown-slot): New error.
(cl-struct-slot-offset): Use it.
* lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Record the type
definition in current-load-list.
* lisp/emacs-lisp/eieio-core.el (eieio--known-slot-names): New var.
(eieio--add-new-slot): Set it.
(eieio-defclass-internal): Use new name for current-load-list.
(eieio-oref): Add compiler-macro to warn about unknown slots.
* lisp/emacs-lisp/eieio.el (defclass): Update eieio--known-slot-names
as compile-time as well. Improve constructor docstrings.
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio--help-print-slot, eieio-help-class-slots): Move to cl-extra.el.
(eieio-class-def): Remove button.
(eieio-help-constructor): Use new name for load-history element.
(eieio--specializers-apply-to-class-p, eieio-all-generic-functions)
(eieio-method-documentation): Move to cl-generic.el.
(eieio-display-method-list): Use new names.
* lisp/emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
Add "define-linline".
(lisp-fdefs): Remove "defsubst".
(el-fdefs): Add "defsubst", "cl-defsubst", and "define-linline".
* lisp/emacs-lisp/macroexp.el (macroexp--warned): New var.
(macroexp--warn-and-return): Use it to avoid inf-loops.
Add `compile-only' argument.
Diffstat (limited to 'lisp/help-fns.el')
-rw-r--r-- | lisp/help-fns.el | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 0a22c5ebcff..1c7a68abdec 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -33,6 +33,7 @@ ;;; Code: (require 'cl-lib) +(require 'help-mode) (defvar help-fns-describe-function-functions nil "List of functions to run in help buffer in `describe-function'. @@ -970,15 +971,6 @@ file-local variable.\n") (buffer-string)))))))) -(defvar describe-symbol-backends - `((nil ,#'fboundp ,(lambda (s _b _f) (describe-function s))) - ("face" ,#'facep ,(lambda (s _b _f) (describe-face s))) - (nil - ,(lambda (symbol) - (or (and (boundp symbol) (not (keywordp symbol))) - (get symbol 'variable-documentation))) - ,#'describe-variable))) - (defvar help-xref-stack-item) ;;;###autoload @@ -986,23 +978,22 @@ file-local variable.\n") "Display the full documentation of SYMBOL. Will show the info of SYMBOL as a function, variable, and/or face." (interactive - ;; FIXME: also let the user enter a face name. - (let* ((v-or-f (variable-at-point)) - (found (symbolp v-or-f)) + (let* ((v-or-f (symbol-at-point)) + (found (cl-some (lambda (x) (funcall (nth 1 x) v-or-f)) + describe-symbol-backends)) (v-or-f (if found v-or-f (function-called-at-point))) (found (or found v-or-f)) (enable-recursive-minibuffers t) - val) - (setq val (completing-read (if found + (val (completing-read (if found (format - "Describe symbol (default %s): " v-or-f) + "Describe symbol (default %s): " v-or-f) "Describe symbol: ") obarray (lambda (vv) (cl-some (lambda (x) (funcall (nth 1 x) vv)) describe-symbol-backends)) t nil nil - (if found (symbol-name v-or-f)))) + (if found (symbol-name v-or-f))))) (list (if (equal val "") v-or-f (intern val))))) (if (not (symbolp symbol)) |