From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Pierre Lorenzon Newsgroups: gmane.emacs.bugs Subject: bug#20467: 25.0.50; eieio-custom.el Date: Sat, 02 May 2015 10:10:22 +0200 (CEST) Message-ID: <20150502.101022.500436073341208744.devel@pollock-nageoire.net> References: <20150430.072343.500249978312803275.devel@pollock-nageoire.net> <20150430.083923.678169422548588833.devel@pollock-nageoire.net> <20150502.075040.602513714458775462.devel@pollock-nageoire.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Sat_May__2_10_10_22_2015_732)--" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1430554830 13341 80.91.229.3 (2 May 2015 08:20:30 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 2 May 2015 08:20:30 +0000 (UTC) Cc: zappo@gnu.org To: 20467@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat May 02 10:20:18 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YoSen-0001Ky-RA for geb-bug-gnu-emacs@m.gmane.org; Sat, 02 May 2015 10:20:18 +0200 Original-Received: from localhost ([::1]:56344 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YoSen-0008Oc-4C for geb-bug-gnu-emacs@m.gmane.org; Sat, 02 May 2015 04:20:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YoSef-0008OD-OE for bug-gnu-emacs@gnu.org; Sat, 02 May 2015 04:20:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YoSea-0000iq-Rd for bug-gnu-emacs@gnu.org; Sat, 02 May 2015 04:20:09 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49133) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YoSea-0000i3-P5 for bug-gnu-emacs@gnu.org; Sat, 02 May 2015 04:20:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YoSea-0003mh-3F for bug-gnu-emacs@gnu.org; Sat, 02 May 2015 04:20:04 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pierre Lorenzon Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 May 2015 08:20:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20467 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20467-submit@debbugs.gnu.org id=B20467.143055474214453 (code B ref 20467); Sat, 02 May 2015 08:20:03 +0000 Original-Received: (at 20467) by debbugs.gnu.org; 2 May 2015 08:19:02 +0000 Original-Received: from localhost ([127.0.0.1]:59106 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YoSdX-0003kk-Qt for submit@debbugs.gnu.org; Sat, 02 May 2015 04:19:02 -0400 Original-Received: from smtp05.smtpout.orange.fr ([80.12.242.127]:21599 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YoSdS-0003kR-MV for 20467@debbugs.gnu.org; Sat, 02 May 2015 04:18:58 -0400 Original-Received: from localhost ([82.123.30.187]) by mwinf5d52 with ME id NwJn1q00J42Dy4203wJnn8; Sat, 02 May 2015 10:18:48 +0200 X-ME-Helo: localhost X-ME-Date: Sat, 02 May 2015 10:18:48 +0200 X-ME-IP: 82.123.30.187 In-Reply-To: <20150502.075040.602513714458775462.devel@pollock-nageoire.net> X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:102359 Archived-At: ----Next_Part(Sat_May__2_10_10_22_2015_732)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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 Subject: bug#20467: 25.0.50; eieio-custom.el Date: Sat, 02 May 2015 07:50:40 +0200 (CEST) > From: Pierre Lorenzon > 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 >> 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)) >>> >>> >>> ----Next_Part(Sat_May__2_10_10_22_2015_732)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="eieio-custom-0502-01.patch" --- 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. ----Next_Part(Sat_May__2_10_10_22_2015_732)----