Subject: Re: bug#20914: eieio/slot/group

From: Pierre Lorenzon <[email-masked]>
Date: Mon, 29 Jun 2015 06:31:37 +0200 (CEST)

OK situation seems to be worth than I thought.

The following code :

>>>  -- More complete code 

(require 'eieio)
(require 'cl)

(defvar slot-props
  '(:group :custom :label :documentation))

(defun slot-prop (class slot prop)
  (message "Slot `%s' of class `%s' has `%s' `%s'"
	   slot class prop
	   (alist-get prop
		      (cl--slot-descriptor-props
		       (car-safe
			(member* slot
				 (eieio-class-slots class)
				 :test (lambda (s1 s2)
					 (eq s1
					     (eieio-slot-descriptor-name s2))
					 )))))))

(defun slot-props-msg (class)
  (mapc (lambda (prop)
	  (slot-prop class 'name prop))
	slot-props))

(defclass mybase ()
  ((name :custom string
	 :group ident
	 :label "Name"
	 :documentation
	 "My name"))
  )

(slot-props-msg 'mybase)

(defclass mysub (mybase)
  ((name :group history
	 :custom item
	 :label "Your real name"
	 :documentation
	 "A suitable name")))

(slot-props-msg 'mysub)

(slot-props-msg 'mybase)

>>>  -- End More complete code 

produces following sequence of messages :

>>>  -- Messages 

Slot `name' of class `mybase' has `:group' `(ident)'
Slot `name' of class `mybase' has `:custom' `string'
Slot `name' of class `mybase' has `:label' `Name'
Slot `name' of class `mybase' has `:documentation' `My name'
Slot `name' of class `mysub' has `:group' `(history ident)'
Slot `name' of class `mysub' has `:custom' `item'
Slot `name' of class `mysub' has `:label' `Your real name'
Slot `name' of class `mysub' has `:documentation' `A suitable name'
Slot `name' of class `mybase' has `:group' `(history ident)'
Slot `name' of class `mybase' has `:custom' `item'
Slot `name' of class `mybase' has `:label' `Your real name'
Slot `name' of class `mybase' has `:documentation' `A suitable name'

>>>  -- End Messages 

In fact not only property group but documentation, label and
even custom have been modified in superclass by definition of
subclass.

Things probably lie in `eieio--slot-override' in eieio-core.el
or maybe in call of this function.

Regards

Pierre

From: Pierre Lorenzon <[email-masked]>
Subject: bug#20914: eieio/slot/group
Date: Sun, 28 Jun 2015 08:02:43 +0200 (CEST)

> 
> Following code :
> 
>>>>  -- Code 
> 
> (require 'eieio)
> (require 'cl)
> 
> (defun slot-groups (class slot)
>   (message "Slot `%s' of class `%s' has group `%s'"
> 	   slot class
> 	   (alist-get :group
> 		      (cl--slot-descriptor-props
> 		       (car-safe
> 			(member* slot
> 				 (eieio-class-slots class)
> 				 :test (lambda (s1 s2)
> 					 (eq s1
> 					     (eieio-slot-descriptor-name s2))
> 					 )))))))
> (defclass mybase ()
>   ((name :custom string
> 	 :group ident))
>   )
> 
> (slot-groups 'mybase 'name)
> 
> (defclass mysub (mybase)
>   ((name :group history)))
> 
> (slot-groups 'mysub 'name)
> 
> (slot-groups 'mybase 'name)
> 
>>>>  -- End Code
> 
> Produces following sequence of messages :
> 
>>>>  -- Messages 
> 
> Slot `name' of class `mybase' has group `(ident)'
> Slot `name' of class `mysub' has group `(history ident)'
> Slot `name' of class `mybase' has group `(history ident)'
> 
>>>>  -- End Messages
> 
> 
> As definition of mysub alterates definition of mybase. It
> should certainely not be the case ! Definition of a subclass
> might not change anything of the definition of the base classe.
> 
> 
> I suspect a list somewhere "taken as a pointer" and not copied
> hence altered when it should not ! I'll investigate.
> 
> Pierre 
> 
> In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu)
>  of 2015-06-28 on jabberwocky
> Repository revision: bbf63ee00a3c263e3190320bc389bf0b72a5a9d5
> Configured using:
>  `configure --prefix=/home/emacs'
> 
> Configured features:
> JPEG SOUND NOTIFY ZLIB
> 
> Important settings:
>   value of $LANG: C
>   locale-coding-system: nil
> 
> Major mode: Messages
> 
> Minor modes in effect:
>   gpm-mouse-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
> 
> Recent messages:
> 
> Saving file /home/emacs/Messages...
> Wrote /home/emacs/Messages
> Making completion list... [2 times]
> user-error: Beginning of history; no preceding item [2 times]
> 
> Load-path shadows:
> /home/emacs/share/emacs/site-lisp/edext/latex/regexp hides /home/emacs/share/emacs/site-lisp/edext/utils/regexp
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-pointed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/lists/j++-pointed
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-interface hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/misc/j++-interface
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-synchronized hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-synchronized
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-timed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-timed
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-file
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-test hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-test
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-object
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-target hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/j++-target
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-process hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-process
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-asynchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-asynchronous
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-synchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-synchronous
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-filtered hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-filtered
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-buffer hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-buffer
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-linked hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-linked
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-node
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-discid
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-author hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-author
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-discid
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-piece
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-project hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-project
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-performer hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-performer
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-person hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-person
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-flaggable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-flaggable
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-item
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-file
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/graphs/j++-element hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/spreadsheet/j++-element
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-latex hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-latex
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/j++-loop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-loop
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/j++-inline hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-inline
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/subsystems/j++-class hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-class
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-file
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-mastered hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-mastered
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-files hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-files
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-node
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-driver
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-item
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-output
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-client
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-bar-title hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-bar-title
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-connection hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-connection
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-driver
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-parameters hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-parameters
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-client
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-mark hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-mark
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-piece
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/b/j++-style
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/div/j++-style
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/font/j++-style
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/a/j++-name hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/meta/j++-name
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/span/j++-style
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/body/j++-bgcolor hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/td/j++-bgcolor
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/template/j++-text
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-node
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-text
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-root hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-root
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-amplify
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-incdec
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-inout hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-inout
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-object
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-meta hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-meta
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-input
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chainsetup
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-operator hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-operator
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-item
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chain
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-output
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-amplify
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-highpass hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-highpass
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-incdec
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-variable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-variable
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-run-group hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-run-group
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-record-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-container hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-container
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-play-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-chain
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-amplify
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-incdec
> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-object
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-control hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-control
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-input
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chainsetup
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-play
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chain
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-output
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-position
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-preset hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-preset
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-play
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-record
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cross
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/data
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/boot
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cblfs
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tools
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tests
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cross
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/data
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/boot
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cblfs
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tools
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/grub hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/grub
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tests
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/bash hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/bash
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.10 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.10
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.25 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.25
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/eglibc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/eglibc
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.53 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.53
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.04 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.04
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/gcc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/gcc
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/05 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/05
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cross
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/07 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/07
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/06 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/06
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/data
> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/09 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/09
> /home/emacs/share/emacs/site-lisp/edext/utils/list hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/lfs/scripts/chapter05/list
> /home/emacs/share/emacs/site-lisp/edext/latex/replace hides /home/emacs/share/emacs/25.0.50/lisp/replace
> 
> Features:
> (shadow sort gnus-util mail-extr emacsbug message dired format-spec
> rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse
> rfc2231 mailabbrev gmm-utils mailheader sendmail regexp-opt rfc2047
> rfc2045 ietf-drums mm-util help-fns mail-prsvr mail-utils cl-seq cl-macs
> cl eieio byte-opt gv bytecomp byte-compile cl-extra seq cconv eieio-core
> cl-loaddefs pcase cl-lib t-mouse time-date disp-table mule-util tooltip
> eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
> tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
> menu-bar rfn-eshadow timer select mouse jit-lock font-lock syntax
> facemenu font-core frame cl-generic cham georgian utf-8-lang misc-lang
> vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
> hebrew greek romanian slovak czech european ethiopic indian cyrillic
> chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev
> minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp
> files text-properties overlay sha1 md5 base64 format env code-pages mule
> custom widget hashtable-print-readable backquote inotify multi-tty
> make-network-process emacs)
> 
> Memory information:
> ((conses 16 85783 4012)
>  (symbols 48 18834 0)
>  (miscs 40 64 124)
>  (strings 32 14933 4721)
>  (string-bytes 1 445196)
>  (vectors 16 10259)
>  (vector-slots 8 372316 9859)
>  (floats 8 134 307)
>  (intervals 56 789 90)
>  (buffers 976 14)
>  (heap 1024 17185 684))
> 
> 
>