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/emacs-lisp/eieio.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/emacs-lisp/eieio.el')
| -rw-r--r-- | lisp/emacs-lisp/eieio.el | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index eee848f7869..84a68a83736 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -142,6 +142,10 @@ and reference them using the function `class-option'." (alloc (plist-get soptions :allocation)) (label (plist-get soptions :label))) + ;; Update eieio--known-slot-names already in case we compile code which + ;; uses this before the class is loaded. + (cl-pushnew sname eieio--known-slot-names) + (if eieio-error-unsupported-class-tags (let ((tmp soptions)) (while tmp @@ -254,13 +258,12 @@ This method is obsolete." (if (not (stringp abs)) (setq abs (format "Class %s is abstract" name))) `(defun ,name (&rest _) - ,(format "You cannot create a new object of type %S." name) + ,(format "You cannot create a new object of type `%S'." name) (error ,abs))) ;; Non-abstract classes need a constructor. `(defun ,name (&rest slots) - ,(format "Create a new object with name NAME of class type %S." - name) + ,(format "Create a new object of class type `%S'." name) (declare (compiler-macro (lambda (whole) (if (not (stringp (car slots))) @@ -941,6 +944,8 @@ of `eq'." (error "EIEIO: `change-class' is unimplemented")) ;; Hook ourselves into help system for describing classes and methods. +;; FIXME: This is not actually needed any more since we can click on the +;; hyperlink from the constructor's docstring to see the type definition. (add-hook 'help-fns-describe-function-functions 'eieio-help-constructor) ;;; Interfacing with edebug @@ -978,7 +983,7 @@ Optional argument GROUP is the sub-group of slots to display. ;;;*** -;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "b7995d9076e4dd4b9358b2aa66835619") +;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "cb1aba7670b6a4b9c6f968c0ad6dc130") ;;; Generated autoloads from eieio-opt.el (autoload 'eieio-browse "eieio-opt" "\ @@ -988,11 +993,7 @@ variable `eieio-default-superclass'. \(fn &optional ROOT-CLASS)" t nil) -(autoload 'eieio-help-class "eieio-opt" "\ -Print help description for CLASS. -If CLASS is actually an object, then also display current values of that object. - -\(fn CLASS)" nil nil) +(define-obsolete-function-alias 'eieio-help-class 'cl--describe-class "25.1") (autoload 'eieio-help-constructor "eieio-opt" "\ Describe CTR if it is a class constructor. |
