diff options
| author | Stefan Monnier | 2017-03-24 09:21:52 -0400 |
|---|---|---|
| committer | Lars Brinkhoff | 2017-03-30 18:31:27 +0200 |
| commit | 390612eb7ab8ccf0792fda7c48b7056c5cda9b06 (patch) | |
| tree | 71766520a963d9c970cd72e8a2022302661a9f94 /doc | |
| parent | 43cb754a3109ac9afaeab1f08e35673b078a7a09 (diff) | |
| download | emacs-scratch/record.tar.gz emacs-scratch/record.zip | |
Backward compatibility with pre-existing struct instances.scratch/record
* lisp/emacs-lisp/cl-lib.el (cl--old-struct-type-of): New function.
(cl-old-struct-compat-mode): New minor mode.
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Pass `record' to
cl-struct-define to signal use of record objects.
* lisp/emacs-lisp/cl-preloaded.el (cl--struct-get-class,
cl-struct-define): Enable legacy defstruct compatibility.
* test/lisp/emacs-lisp/cl-lib-tests.el (cl-lib-old-struct,
old-struct): New tests.
* doc/lispref/elisp.texi, doc/lispref/records.texi: Document
`old-struct-compat'.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/lispref/elisp.texi | 1 | ||||
| -rw-r--r-- | doc/lispref/records.texi | 17 |
2 files changed, 17 insertions, 1 deletions
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 0f7efb6f187..3a348aae98e 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi | |||
| @@ -423,6 +423,7 @@ Sequences, Arrays, and Vectors | |||
| 423 | Records | 423 | Records |
| 424 | 424 | ||
| 425 | * Record Functions:: Functions for records. | 425 | * Record Functions:: Functions for records. |
| 426 | * Backward Compatibility:: Compatibility for cl-defstruct. | ||
| 426 | 427 | ||
| 427 | Hash Tables | 428 | Hash Tables |
| 428 | 429 | ||
diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi index 822fd2bf36e..9a5d900cfc9 100644 --- a/doc/lispref/records.texi +++ b/doc/lispref/records.texi | |||
| @@ -26,7 +26,8 @@ evaluating it is the same record. This does not evaluate or even | |||
| 26 | examine the slots. @xref{Self-Evaluating Forms}. | 26 | examine the slots. @xref{Self-Evaluating Forms}. |
| 27 | 27 | ||
| 28 | @menu | 28 | @menu |
| 29 | * Record Functions:: Functions for records. | 29 | * Record Functions:: Functions for records. |
| 30 | * Backward Compatibility:: Compatibility for cl-defstruct. | ||
| 30 | @end menu | 31 | @end menu |
| 31 | 32 | ||
| 32 | @node Record Functions | 33 | @node Record Functions |
| @@ -98,3 +99,17 @@ the copied record, are also visible in the original record. | |||
| 98 | @end group | 99 | @end group |
| 99 | @end example | 100 | @end example |
| 100 | @end defun | 101 | @end defun |
| 102 | |||
| 103 | @node Backward Compatibility | ||
| 104 | @section Backward Compatibility | ||
| 105 | |||
| 106 | Code compiled with older versions of @code{cl-defstruct} that | ||
| 107 | doesn't use records may run into problems when used in a new Emacs. | ||
| 108 | To alleviate this, Emacs detects when an old @code{cl-defstruct} is | ||
| 109 | used, and enables a mode in which @code{type-of} handles old struct | ||
| 110 | objects as if they were records. | ||
| 111 | |||
| 112 | @defun cl-old-struct-compat-mode arg | ||
| 113 | If @var{arg} is positive, enable backward compatibility with old-style | ||
| 114 | structs. | ||
| 115 | @end defun | ||