[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#20467: 25.0.50; eieio-custom.el
From: |
Pierre Lorenzon |
Subject: |
bug#20467: 25.0.50; eieio-custom.el |
Date: |
Sat, 02 May 2015 10:10:22 +0200 (CEST) |
Hi,
Sorry Eric if you already got this bug report.
This last patch does not correct any error but suggests
alternative implementations for certan loops.
Pierre
From: Pierre Lorenzon <devel@pollock-nageoire.net>
Subject: bug#20467: 25.0.50; eieio-custom.el
Date: Sat, 02 May 2015 07:50:40 +0200 (CEST)
> From: Pierre Lorenzon <devel@pollock-nageoire.net>
> Subject: bug#20467: 25.0.50; eieio-custom.el
> Date: Thu, 30 Apr 2015 08:39:23 +0200 (CEST)
>
>> OK :
>>
>>
>> From: devel@pollock-nageoire.net (Pierre L. Nageoire), Pierre Lorenzon
>> <devel@pollock-nageoire.net>
>> Subject: bug#20467: 25.0.50; eieio-custom.el
>> Date: Thu, 30 Apr 2015 07:23:43 +0200 (CEST)
>>
>>>
>>> --text follows this line--
>>>
>>>
>>> eieio-custom.el line 264 : (car slots)
>>>
>>> but due to recent changes in implementation variable slots is no longer
>>> a list but a vector. So `car' cannot be applied here that causes a wrong
>>> type argument error when trying to customize an object.
>>
>> Moreover slot itself is no longer a symbol but a structure
>> whereas a symbol is needed at this code place.
>>
>> so : (eieio-slot-descriptor-name slot) must replace (car
>> slots).
>>
>> There's a joined patch that fix this bug. But now there seems
>> to be a bug in project saving to that I did not yet identify.
>
> In fact i detected an infinit loop in
> `eieio-object-value-get' function due to not incrementing
> the integer loop variable. A new patch corrects both
> previous bug mentioned above and the latter.
>
>
> Pierre
>
>
>
>
>
>
>>
>> Pierre
>>
>>>
>>> I can try to fix that if you want.
>>>
>>> Pierre
>>>
>>>
>>>
>>>
>>>
>>>
>>> In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu)
>>> of 2015-04-30 on jabberwocky
>>> Configured using:
>>> `configure --prefix=/home/emacs'
>>>
>>> Configured features:
>>> JPEG SOUND NOTIFY ZLIB
>>>
>>> Important settings:
>>> value of $LANG: C
>>> locale-coding-system: nil
>>>
>>> Major mode: Emacs-Lisp
>>>
>>> Minor modes in effect:
>>> global-ede-mode: t
>>> ede-minor-mode: t
>>> gpm-mouse-mode: t
>>> global-speechd-speak-mode: t
>>> speechd-speak-mode: t
>>> global-speechd-speak-map-mode: t
>>> speechd-speak-map-mode: t
>>> tooltip-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
>>>
>>> Recent messages:
>>> 27 (#o33, #x1b, ?\C-\[)
>>> [cl-struct-cl-slot-descriptor expanded nil boolean ((:documentation .
>>> "State of an object being expanded in speedbar."))]
>>> Entering debugger...
>>> Back to top level
>>> Entering debugger...
>>> Back to top level
>>> Line 264
>>> "Line 264"
>>> Making completion list... [2 times]
>>> line-move-visual: End of buffer
>>>
>>> Load-path shadows:
>>> /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/test hides
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/test
>>> /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++-asynchronous
>>> hides
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-asynchronous
>>> /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++-synchronous
>>> hides
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-synchronous
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-network-stream
>>> hides
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-network-stream
>>> /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++-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++-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/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/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/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/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/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/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/efm/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/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/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++-amplify
>>> hides
>>> /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-amplify
>>> /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/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/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/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/sound/ecasound/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/sound/festival/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/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
>>>
>>> Features:
>>> (shadow sort mail-extr emacsbug message format-spec rfc822 mml mml-sec
>>> mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
>>> mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils find-func
>>> help-mode debug semantic/lex-spp semantic/util-modes semantic/util
>>> semantic semantic/tag semantic/lex semantic/fw mode-local ede/proj
>>> ede/make ede/proj-comp ede/autoconf-edit autoconf autoconf-mode pp
>>> cus-edit ede/custom cus-start cus-load ede/speedbar ede/files ede
>>> ede/detect ede/base ede/auto ede/source eieio-speedbar speedbar sb-image
>>> ezimage image dframe cedet jka-compr misearch multi-isearch info
>>> tool-bar easymenu regexp-opt dired j++-packages-scmel-efm-parameters
>>> j++-packages-scmel-efm-connection t-mouse network-stream nsm auth-source
>>> gnus-util time-date mm-util mail-prsvr password-cache starttls tls
>>> j++-packages-scmel-efm-driver j++-packages-scmel-efm-efm
>>> j++-packages-scmel-monitor j++-basic-widgets-object
>>> j++-packages-scmel-scmel j++-basic-logger j++-basic-files-file
>>> j++-basic-files-serializable j++-basic-files-stringifiable
>>> j++-basic-processes-filtered-network-stream j++-basic-processes-filtered
>>> j++-basic-processes-put-and-get j++-basic-processes-network-stream
>>> j++-basic-processes-process warnings speechd-speak advice help-fns
>>> speechd-brltty speechd-braille braille mmanager brltty speechd-ssip
>>> speechd speechd-out speechd-common eieio-custom wid-edit eieio-base
>>> cl-macs j++ eieio-compat eieio eieio-core cl-generic byte-opt bytecomp
>>> byte-compile cl-extra seq cconv cl gv cl-loaddefs pcase cl-lib 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 cham georgian utf-8-lang misc-lang vietnamese
>>> tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
>>> czech european ethiopic indian cyrillic chinese 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 160369 16737)
>>> (symbols 48 25818 57)
>>> (miscs 40 271 226)
>>> (strings 32 32914 6239)
>>> (string-bytes 1 1076675)
>>> (vectors 16 20587)
>>> (vector-slots 8 541737 3136)
>>> (floats 8 702 175)
>>> (intervals 56 1216 153)
>>> (buffers 976 23)
>>> (heap 1024 44415 1130))
>>>
>>>
>>>
--- eieio-custom.el.orig 2015-04-30 05:34:45.000000000 +0200
+++ eieio-custom.el 2015-05-02 09:53:03.000000000 +0200
@@ -193,8 +193,13 @@
(let* ((chil nil)
(obj (widget-get widget :value))
(master-group (widget-get widget :eieio-group))
- (cv (eieio--object-class obj))
- (slots (eieio--class-slots cv)))
+ ;;
+ ;; Not needed here if we implement loop with `mapc'
+ ;; instead of `dotimes'. PLN Sat May 2 09:31:18 2015
+ ;;
+ ;; (cv (eieio--object-class obj))
+ ;; (slots (eieio--class-slots cv))
+ )
;; First line describes the object, but may not editable.
(if (widget-get widget :eieio-show-name)
(setq chil (cons (widget-create-child-and-convert
@@ -221,59 +226,80 @@
(setq groups (cdr groups)))
(widget-insert "\n\n")))
;; Loop over all the slots, creating child widgets.
- (dotimes (i (length slots))
- (let* ((slot (aref slots i))
- (props (cl--slot-descriptor-props slot)))
- ;; Output this slot if it has a customize flag associated with it.
- (when (and (alist-get :custom props)
- (or (not master-group)
- (member master-group (alist-get :group props)))
- (slot-boundp obj (cl--slot-descriptor-name slot)))
- ;; In this case, this slot has a custom type. Create its
- ;; children widgets.
- (let ((type (eieio-filter-slot-type widget (alist-get :custom
props)))
- (stuff nil))
- ;; This next bit is an evil hack to get some EDE functions
- ;; working the way I like.
- (if (and (listp type)
- (setq stuff (member :slotofchoices type)))
- (let ((choices (eieio-oref obj (car (cdr stuff))))
- (newtype nil))
- (while (not (eq (car type) :slotofchoices))
- (setq newtype (cons (car type) newtype)
- type (cdr type)))
- (while choices
- (setq newtype (cons (list 'const (car choices))
- newtype)
- choices (cdr choices)))
- (setq type (nreverse newtype))))
- (setq chil (cons (widget-create-child-and-convert
- widget 'object-slot
- :childtype type
- :sample-face 'eieio-custom-slot-tag-face
- :tag
- (concat
- (make-string
- (or (widget-get widget :indent) 0)
- ?\s)
- (or (alist-get :label props)
- (let ((s (symbol-name
- (or
- (eieio--class-slot-initarg
- (eieio--object-class obj)
- (car slots))
- (car slots)))))
- (capitalize
- (if (string-match "^:" s)
- (substring s (match-end 0))
- s)))))
- :value (slot-value obj (car slots))
- :doc (or (alist-get :documentation props)
- "Slot not Documented.")
- :eieio-custom-visibility 'visible
- )
- chil))
- ))))
+ ;;
+ ;; Alternative implementation.
+ ;;
+ ;; (dotimes (i (length slots))
+ ;; (let* ((slot (aref slots i))
+ (mapc
+ (lambda (slot)
+ (let* ((sym (eieio-slot-descriptor-name slot))
+ (props (cl--slot-descriptor-props slot)))
+ ;;
+ ;; Output this slot if it has a customize
+ ;; flag associated with it.
+ ;;
+ (when (and (alist-get :custom props)
+ (or (not master-group)
+ (member master-group
+ (alist-get :group props)))
+ (slot-boundp obj sym))
+ ;;
+ ;; In this case, this slot has a custom
+ ;; type. Create its children widgets.
+ ;;
+ (let ((type (eieio-filter-slot-type widget (alist-get :custom
props)))
+ (stuff nil))
+ ;;
+ ;; This next bit is an evil hack to get
+ ;; some EDE functions working the way I
+ ;; like.
+ ;;
+ (if (and (listp type)
+ (setq stuff (member :slotofchoices type)))
+ (let ((choices (eieio-oref obj (car (cdr stuff))))
+ (newtype nil))
+ (while (not (eq (car type) :slotofchoices))
+ (setq newtype (cons (car type) newtype)
+ type (cdr type)))
+ (while choices
+ (setq newtype (cons (list 'const (car choices))
+ newtype)
+ choices (cdr choices)))
+ (setq type (nreverse newtype))))
+ (setq chil (cons (widget-create-child-and-convert
+ widget 'object-slot
+ :childtype type
+ :sample-face 'eieio-custom-slot-tag-face
+ :tag
+ (concat
+ (make-string
+ (or (widget-get widget :indent) 0)
+ ?\s)
+ (or (alist-get :label props)
+ (let ((s (symbol-name
+ (or
+ (eieio--class-slot-initarg
+ (eieio--object-class obj)
+ sym
+ )
+ sym
+ ))))
+ (capitalize
+ (if (string-match "^:" s)
+ (substring s (match-end 0))
+ s)))))
+ :value (slot-value obj sym)
+ :doc (or (alist-get :documentation props)
+ "Slot not Documented.")
+ :eieio-custom-visibility 'visible
+ )
+ chil))
+ ))))
+ (eieio--class-slots (eieio--object-class obj)))
+ ;;
+ ;; End Modified implementation.
+ ;;
(widget-put widget :children (nreverse chil))
))
@@ -287,27 +313,77 @@
nil))
(chil (if (widget-get widget :eieio-show-name)
(nthcdr 1 wids) wids))
- (cv (eieio--object-class obj))
- (i 0)
- (slots (eieio--class-slots cv)))
- ;; If there are any prefix widgets, clear them.
- ;; -- None yet
- ;; Create a batch of initargs for each slot.
- (while (and (< i (length slots)) chil)
- (let* ((slot (aref slots i))
- (props (cl--slot-descriptor-props slot))
- (cust (alist-get :custom props)))
- (if (and cust
- (or eieio-custom-ignore-eieio-co
- (not master-group)
- (member master-group (alist-get :group props)))
- (slot-boundp obj (cl--slot-descriptor-name slot)))
- (progn
- ;; Only customized slots have widgets
- (let ((eieio-custom-ignore-eieio-co t))
- (eieio-oset obj (cl--slot-descriptor-name slot)
- (car (widget-apply (car chil) :value-inline))))
- (setq chil (cdr chil))))))
+ )
+ ;;
+ ;; Not clear that impomentation is more efficient. In fact
+ ;; if customizable slots are concentrated at the beginning
+ ;; of the slot list, previous loop will break earlier due
+ ;; to chil becoming nul. Mor over if there are much more
+ ;; slots than customizable slots, mapc will run over many
+ ;; unuseful slots. PLN Sat May 2 08:10:23 2015
+ ;;
+ ;; Alternative loop implementation
+ (mapc (lambda (slot)
+ (when chil
+ ;;
+ ;; If there are no more children there is no need
+ ;; to do anything..
+ ;;
+ (let* ((sym
+ ;; Is it better to use
+ ;; `eieio-slot-descriptor-name' here or
+ ;; `cl--slot-descriptor-name' ?
+ ;;
+ (eieio-slot-descriptor-name slot))
+ (props (cl--slot-descriptor-props slot))
+ (cust (alist-get :custom props))
+ )
+ (when (and cust
+ (or eieio-custom-ignore-eieio-co
+ (not master-group)
+ (member master-group (alist-get :group props)))
+ (slot-boundp obj sym))
+ ;;
+ ;; Only customized slots have widgets
+ ;;
+ (let ((eieio-custom-ignore-eieio-co t))
+ (eieio-oset obj sym
+ (car (widget-apply (car chil)
+ :value-inline))))
+ (setq chil (cdr chil)))
+ )))
+ (eieio--class-slots (eieio--object-class obj)))
+ ;; End Alternative loop implementation
+ ;;
+ ;;
+ ;; (cv (eieio--object-class obj))
+ ;; (i 0)
+ ;; (slots (eieio--class-slots cv)))
+ ;; ;; If there are any prefix widgets, clear them.
+ ;; ;; -- None yet
+ ;; ;; Create a batch of initargs for each slot.
+ ;; (while (and (< i (length slots)) chil)
+ ;; (let* ((slot (aref slots i))
+ ;; (props (cl--slot-descriptor-props slot))
+ ;; (cust (alist-get :custom props)))
+ ;; ;;
+ ;; ;; Shouldn't i be incremented unconditionnaly ? Or
+ ;; ;; better shouldn't we simply mapc on the slots vector
+ ;; ;; avoiding use of this integer variable ? PLN Sat May
+ ;; ;; 2 07:35:45 2015
+ ;; ;;
+ ;; (setq i (+ i 1))
+ ;; (if (and cust
+ ;; (or eieio-custom-ignore-eieio-co
+ ;; (not master-group)
+ ;; (member master-group (alist-get :group props)))
+ ;; (slot-boundp obj (cl--slot-descriptor-name slot)))
+ ;; (progn
+ ;; ;; Only customized slots have widgets
+ ;; (let ((eieio-custom-ignore-eieio-co t))
+ ;; (eieio-oset obj (cl--slot-descriptor-name slot)
+ ;; (car (widget-apply (car chil) :value-inline))))
+ ;; (setq chil (cdr chil))))))
;; Set any name updates on it.
(if name (eieio-object-set-name-string obj name))
;; This is the same object we had before.