mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-10 08:10:21 -08:00
eieio-base.el:
(eieio-persistent-make-instance): Save the backward compatible 'name' of objects saved in the file, and if the newly loaded class inherits from 'eieio-named', restore the name of the object. Author: Eric Ludlam <zappo@gnu.org>
This commit is contained in:
parent
fcf8ad610d
commit
002f9dc091
1 changed files with 22 additions and 7 deletions
|
|
@ -264,12 +264,17 @@ objects found there."
|
|||
(:method
|
||||
((objclass (subclass eieio-default-superclass)) inputlist)
|
||||
|
||||
(let ((slots (if (stringp (car inputlist))
|
||||
;; Earlier versions of `object-write' added a
|
||||
;; string name for the object, now obsolete.
|
||||
(cdr inputlist)
|
||||
inputlist))
|
||||
(createslots nil))
|
||||
(let* ((name nil)
|
||||
(slots (if (stringp (car inputlist))
|
||||
(progn
|
||||
;; Earlier versions of `object-write' added a
|
||||
;; string name for the object, now obsolete.
|
||||
;; Save as 'name' in case this object is subclass
|
||||
;; of eieio-named with no :object-name slot specified.
|
||||
(setq name (car inputlist))
|
||||
(cdr inputlist))
|
||||
inputlist))
|
||||
(createslots nil))
|
||||
;; If OBJCLASS is an eieio autoload object, then we need to
|
||||
;; load it (we don't need the return value).
|
||||
(eieio--full-class-object objclass)
|
||||
|
|
@ -286,7 +291,17 @@ objects found there."
|
|||
|
||||
(setq slots (cdr (cdr slots))))
|
||||
|
||||
(apply #'make-instance objclass (nreverse createslots)))))
|
||||
(let ((newobj (apply #'make-instance objclass (nreverse createslots))))
|
||||
|
||||
;; Check for special case of subclass of `eieio-named', and do
|
||||
;; name assignment.
|
||||
(when (and eieio-backward-compatibility
|
||||
(object-of-class-p newobj eieio-named)
|
||||
(not (oref newobj object-name))
|
||||
name)
|
||||
(oset newobj object-name name))
|
||||
|
||||
newobj))))
|
||||
|
||||
(defun eieio-persistent-fix-value (proposed-value)
|
||||
"Fix PROPOSED-VALUE.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue