* bug#19564: 24.4; eieio backward compatibility
@ 2015-01-11 8:03 Thierry Volpiatto
2015-01-12 5:08 ` Stefan Monnier
2015-01-12 5:36 ` Stefan Monnier
0 siblings, 2 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-11 8:03 UTC (permalink / raw)
To: 19564
Hi,
today I have fixed in helm an eieio error according to this
bugreport:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19552
Following Stefan advice, I have added a defalias:
(unless (fboundp 'class-slot-initarg)
(defalias 'class-slot-initarg 'eieio--class-slot-initarg))
It was working fine, but after upgrading again emacs-25, it seems eieio
raise another error:
When I try to compile helm I have:
Error: Wrong type argument: eieio--class-p, helm-locate-source
@Stefan Can you clarify what do we have to do actually to make eieio
backward compatible or if nothing have to be done on our side (external
developers) can you please fix this issue.
Thanks.
In GNU Emacs 24.4.1 (x86_64-unknown-linux-gnu, X toolkit)
of 2014-10-24 on dell-14z
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description: Ubuntu 14.04.1 LTS
Configured using:
`configure --with-x-toolkit=lucid --without-toolkit-scroll-bars
--without-gconf --without-gsettings'
Important settings:
value of $LANG: fr_FR.UTF-8
locale-coding-system: utf-8-unix
Major mode: Emacs-Lisp
Minor modes in effect:
git-gutter-mode: t
psession-mode: t
golden-ratio-mode: t
winner-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
auto-image-file-mode: t
eldoc-in-minibuffer-mode: t
show-paren-mode: t
display-time-mode: t
recentf-mode: t
savehist-mode: t
eldoc-mode: t
minibuffer-depth-indicate-mode: t
helm-mode: t
helm-descbinds-mode: t
shell-dirtrack-mode: t
helm-adaptive-mode: t
helm-match-plugin-mode: t
helm-occur-match-plugin-mode: t
helm-autoresize-mode: t
tooltip-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
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
<up> <up> C-M-SPC M-w M-x r e p o r t <return>
Recent messages:
Indentation setup for shell type sh
Setting up indent for shell type bash
Indentation variables are now local.
Indentation setup for shell type bash
Restoring buffers...89%
Setting up indent for shell type sh
Indentation variables are now local.
Indentation setup for shell type sh
Restoring buffers...done
Mark set
Load-path shadows:
~/elisp/auctex/lpath hides ~/elisp/emacs-wget/lpath
/usr/local/share/emacs/24.4/lisp/emacs-lisp/tq hides ~/elisp/emms/lisp/tq
Features:
(shadow epa-mail mule-util emacsbug helm-command helm-elisp helm-eval
add-log conf-mode make-mode cc-langs cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs vc-hg jedi
python-environment auto-complete popup epc ctable concurrent deferred
markdown-mode vc-rcs sh-script smie executable vc-git naquadah-theme
em-unix em-script em-prompt em-ls em-hist em-pred em-glob em-dirs
em-cmpl em-basic em-banner em-alias align-let git-gutter server psession
golden-ratio winner undo-tree diff slime-xref-browser slime-banner
slime-tramp slime-asdf slime-fancy slime-trace-dialog
slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree slime-scratch slime-presentations bridge
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl elp slime-parse slime
gud apropos etags arc-mode archive-mode image-file xdvi-search
preview-latex tex-site auto-loads pcomplete-extension pcmpl-unix
pcmpl-gnu em-term term disp-table ehelp python json eldoc-eval warnings
whitespace paren time recentf tree-widget savehist mu4e-config org-mu4e
helm-mu mu4e-contrib mu4e mu4e-speedbar speedbar sb-image ezimage dframe
mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft mu4e-actions
ido rfc2368 mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils
mu4e-lists mu4e-about mu4e-vars mu4e-meta gnus-dired nnir gnus-sum
gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int
gnus-range gnus-win nnoo config-w3m w3m-search w3m doc-view jka-compr
image-mode timezone w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-ccl ccl
w3m-favicon w3m-image w3m-proc w3m-util w3m-load smtpmail-async smtpmail
sendmail dired-async iterator lacarte iedit-rect iedit iedit-lib
smallurl mm-url gnus gnus-ems nnheader wid-edit rectangle-utils rect
ledger-config ledger esh-var esh-io esh-cmd esh-opt esh-ext esh-proc
eldoc esh-groups eshell esh-module esh-mode esh-arg esh-util tv-utils
pcvs vc-cvs pcvs-parse pcvs-info pcvs-defs pcvs-util ewoc mb-depth
cl-info hyperspec slime-autoloads esh-toggle flymake no-word htmlize cl
dired-extension emms-mpd-config emms-playlist-limit emms-volume
emms-volume-amixer emms-i18n emms-history emms-score emms-stream-info
emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon
emms-browser sort emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-playing-time emms-lyrics emms-url hl-line
emms-tag-editor emms-mark emms-mode-line emms-cache emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mplayer
emms-info emms-streams later-do emms-source-playlist emms-source-file
emms-player-simple emms-setup emms emms-compat org-config-thierry ob-sh
org-crypt appt diary-lib diary-loaddefs org-annotation-helper
addressbook-bookmark message rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev
mail-utils gmm-utils mailheader firefox-protocol
bookmark-firefox-handler bookmark-extensions init-helm-thierry helm-mode
helm-dictionary helm-ls-git helm-descbinds helm-ls-hg helm-files
image-dired tramp tramp-compat tramp-loaddefs trampver shell dired-x
dired-aux ffap thingatpt helm-buffers helm-elscreen helm-tags
helm-bookmark helm-adaptive helm-info helm-net browse-url xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse url-vars mailcap bookmark pp helm-help
helm-org org org-macro org-footnote org-pcomplete pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint
ob-core ob-eval org-compat org-macs org-loaddefs format-spec find-func
cal-menu calendar cal-loaddefs helm-match-plugin helm-grep wgrep-helm
wgrep helm-regexp helm-plugin grep helm-external helm-utils dired
compile comint ansi-color ring helm-locate helm easy-mmode helm-source
vc vc-dispatcher helm-config helm-autoloads async-bytecomp cl-macs gv
async helm-aliases epa-file epa derived epg auth-source eieio byte-opt
bytecomp byte-compile cconv eieio-core gnus-util mm-util mail-prsvr
password-cache package epg-config time-date avoid cus-start cus-load
w3m-wget info easymenu edmacro kmacro advice help-fns net-utils
cl-loaddefs cl-lib tooltip electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar 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 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 make-network-process dbusbind
gfilenotify dynamic-setting font-render-setting x-toolkit x multi-tty
emacs)
Memory information:
((conses 16 611361 47913)
(symbols 48 62955 5)
(miscs 40 437 767)
(strings 32 154118 19606)
(string-bytes 1 4536337)
(vectors 16 53631)
(vector-slots 8 910749 24501)
(floats 8 1664 179)
(intervals 56 6025 865)
(buffers 960 165)
(heap 1024 58202 2703))
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-11 8:03 bug#19564: 24.4; eieio backward compatibility Thierry Volpiatto
@ 2015-01-12 5:08 ` Stefan Monnier
2015-01-12 5:41 ` Thierry Volpiatto
2015-01-12 5:36 ` Stefan Monnier
1 sibling, 1 reply; 28+ messages in thread
From: Stefan Monnier @ 2015-01-12 5:08 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
> @Stefan Can you clarify what do we have to do actually to make eieio
> backward compatible
I'm still debugging the problem.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-11 8:03 bug#19564: 24.4; eieio backward compatibility Thierry Volpiatto
2015-01-12 5:08 ` Stefan Monnier
@ 2015-01-12 5:36 ` Stefan Monnier
2015-01-12 5:58 ` Thierry Volpiatto
1 sibling, 1 reply; 28+ messages in thread
From: Stefan Monnier @ 2015-01-12 5:36 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
> (unless (fboundp 'class-slot-initarg)
> (defalias 'class-slot-initarg 'eieio--class-slot-initarg))
BTW, can you explain why helm needs class-slot-initarg?
Stefan "AFAICT, there's no such function in CLOS"
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 5:08 ` Stefan Monnier
@ 2015-01-12 5:41 ` Thierry Volpiatto
0 siblings, 0 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-12 5:41 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> @Stefan Can you clarify what do we have to do actually to make eieio
>> backward compatible
>
> I'm still debugging the problem.
Great, thanks Stefan.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 5:36 ` Stefan Monnier
@ 2015-01-12 5:58 ` Thierry Volpiatto
2015-01-12 7:03 ` Dmitry Gutov
2015-01-12 15:02 ` Stefan Monnier
0 siblings, 2 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-12 5:58 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> (unless (fboundp 'class-slot-initarg)
>> (defalias 'class-slot-initarg 'eieio--class-slot-initarg))
>
> BTW, can you explain why helm needs class-slot-initarg?
It is used in helm--create-source.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 5:58 ` Thierry Volpiatto
@ 2015-01-12 7:03 ` Dmitry Gutov
2015-01-12 9:59 ` Thierry Volpiatto
2015-01-12 15:02 ` Stefan Monnier
1 sibling, 1 reply; 28+ messages in thread
From: Dmitry Gutov @ 2015-01-12 7:03 UTC (permalink / raw)
To: Thierry Volpiatto, Stefan Monnier; +Cc: 19564
On 01/12/2015 08:58 AM, Thierry Volpiatto wrote:
>> BTW, can you explain why helm needs class-slot-initarg?
>
> It is used in helm--create-source.
Could you explain how it's used?
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 7:03 ` Dmitry Gutov
@ 2015-01-12 9:59 ` Thierry Volpiatto
0 siblings, 0 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-12 9:59 UTC (permalink / raw)
To: 19564
Dmitry Gutov <dgutov@yandex.ru> writes:
> On 01/12/2015 08:58 AM, Thierry Volpiatto wrote:
>
>>> BTW, can you explain why helm needs class-slot-initarg?
>>
>> It is used in helm--create-source.
>
> Could you explain how it's used?
It is used like this:
(class-slot-initarg class s)
where class is an object-class I get with (object-class source) and
source is a class instance.
`s' is a slot I get looping into (object-slots object) where object is a
class instance.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 5:58 ` Thierry Volpiatto
2015-01-12 7:03 ` Dmitry Gutov
@ 2015-01-12 15:02 ` Stefan Monnier
2015-01-13 8:55 ` Thierry Volpiatto
2015-01-13 12:36 ` Thierry Volpiatto
1 sibling, 2 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-12 15:02 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
>>> (unless (fboundp 'class-slot-initarg)
>>> (defalias 'class-slot-initarg 'eieio--class-slot-initarg))
>> BTW, can you explain why helm needs class-slot-initarg?
> It is used in helm--create-source.
That doesn't explain to me *why* it needs it.
Why does Helm need to know the initarg of a slot?
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 15:02 ` Stefan Monnier
@ 2015-01-13 8:55 ` Thierry Volpiatto
2015-01-13 12:36 ` Thierry Volpiatto
1 sibling, 0 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-13 8:55 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
For your info here the link on helm about this issue:
https://github.com/emacs-helm/helm/issues/815
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-12 15:02 ` Stefan Monnier
2015-01-13 8:55 ` Thierry Volpiatto
@ 2015-01-13 12:36 ` Thierry Volpiatto
2015-01-13 14:30 ` Ted Zlatanov
2015-01-13 16:37 ` Stefan Monnier
1 sibling, 2 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-13 12:36 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>>> (unless (fboundp 'class-slot-initarg)
>>>> (defalias 'class-slot-initarg 'eieio--class-slot-initarg))
>>> BTW, can you explain why helm needs class-slot-initarg?
>> It is used in helm--create-source.
>
> That doesn't explain to me *why* it needs it.
> Why does Helm need to know the initarg of a slot?
Forget again to CC so I resend.
I could get rid of class-slot-initarg and now the bug is fixed in helm.
The problem is not solved though if some old external program use this.
There is also a problem now with compiled files, emacs-24.4 compiled
files are not compatibles with emacs-25 compiled files and vice-versa.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 12:36 ` Thierry Volpiatto
@ 2015-01-13 14:30 ` Ted Zlatanov
2015-01-13 14:50 ` Thierry Volpiatto
2015-01-13 16:37 ` Stefan Monnier
1 sibling, 1 reply; 28+ messages in thread
From: Ted Zlatanov @ 2015-01-13 14:30 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
On Tue, 13 Jan 2015 13:36:20 +0100 Thierry Volpiatto <thierry.volpiatto@gmail.com> wrote:
TV> There is also a problem now with compiled files, emacs-24.4 compiled
TV> files are not compatibles with emacs-25 compiled files and vice-versa.
Forgive my ignorance: is that compatibility guaranteed or beneficial?
Ted
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 14:30 ` Ted Zlatanov
@ 2015-01-13 14:50 ` Thierry Volpiatto
2015-01-13 14:54 ` Dmitry Gutov
2015-01-13 15:01 ` Ted Zlatanov
0 siblings, 2 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-13 14:50 UTC (permalink / raw)
To: Ted Zlatanov; +Cc: 19564
Ted Zlatanov <tzz@lifelogs.com> writes:
> On Tue, 13 Jan 2015 13:36:20 +0100 Thierry Volpiatto <thierry.volpiatto@gmail.com> wrote:
>
> TV> There is also a problem now with compiled files, emacs-24.4 compiled
> TV> files are not compatibles with emacs-25 compiled files and vice-versa.
>
> Forgive my ignorance: is that compatibility guaranteed or beneficial?
No, but that's mean that now with these recent changes all people using
helm will have errors in their helm packages when switching
emacs-version until they reinstall all;
And for sure they will not reinstall and I expect tons of bugreport in next
weeks... (I crossfingers hoping I am wrong)
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 14:50 ` Thierry Volpiatto
@ 2015-01-13 14:54 ` Dmitry Gutov
2015-01-13 15:13 ` Thierry Volpiatto
2015-01-13 15:01 ` Ted Zlatanov
1 sibling, 1 reply; 28+ messages in thread
From: Dmitry Gutov @ 2015-01-13 14:54 UTC (permalink / raw)
To: Thierry Volpiatto, Ted Zlatanov; +Cc: 19564
On 01/13/2015 05:50 PM, Thierry Volpiatto wrote:
> No, but that's mean that now with these recent changes all people using
> helm will have errors in their helm packages when switching
> emacs-version until they reinstall all;
That's not ideal, but it's happened with some previous releases, too.
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 14:50 ` Thierry Volpiatto
2015-01-13 14:54 ` Dmitry Gutov
@ 2015-01-13 15:01 ` Ted Zlatanov
2015-01-13 15:27 ` Ivan Shmakov
1 sibling, 1 reply; 28+ messages in thread
From: Ted Zlatanov @ 2015-01-13 15:01 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
On Tue, 13 Jan 2015 15:50:48 +0100 Thierry Volpiatto <thierry.volpiatto@gmail.com> wrote:
TV> Ted Zlatanov <tzz@lifelogs.com> writes:
>> On Tue, 13 Jan 2015 13:36:20 +0100 Thierry Volpiatto <thierry.volpiatto@gmail.com> wrote:
>>
TV> There is also a problem now with compiled files, emacs-24.4 compiled
TV> files are not compatibles with emacs-25 compiled files and vice-versa.
>>
>> Forgive my ignorance: is that compatibility guaranteed or beneficial?
TV> No, but that's mean that now with these recent changes all people using
TV> helm will have errors in their helm packages when switching
TV> emacs-version until they reinstall all;
TV> And for sure they will not reinstall and I expect tons of bugreport in next
TV> weeks... (I crossfingers hoping I am wrong)
Maybe Emacs needs a shell-level way to recompile all or some installed packages?
Ted
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 14:54 ` Dmitry Gutov
@ 2015-01-13 15:13 ` Thierry Volpiatto
0 siblings, 0 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-13 15:13 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: Ted Zlatanov, 19564
Dmitry Gutov <dgutov@yandex.ru> writes:
> On 01/13/2015 05:50 PM, Thierry Volpiatto wrote:
>> No, but that's mean that now with these recent changes all people using
>> helm will have errors in their helm packages when switching
>> emacs-version until they reinstall all;
>
> That's not ideal, but it's happened with some previous releases, too.
Indeed yes.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 15:01 ` Ted Zlatanov
@ 2015-01-13 15:27 ` Ivan Shmakov
0 siblings, 0 replies; 28+ messages in thread
From: Ivan Shmakov @ 2015-01-13 15:27 UTC (permalink / raw)
To: 19564
>>>>> "TZ" == Ted Zlatanov <tzz@lifelogs.com> writes:
>>>>> On Tue, 13 Jan 2015 15:50:48 +0100 Thierry Volpiatto wrote:
>>>>> Ted Zlatanov <tzz@lifelogs.com> writes:
[…]
TZ> Forgive my ignorance: is that compatibility guaranteed or
TZ> beneficial?
TV> No, but that's mean that now with these recent changes all people
TV> using helm will have errors in their helm packages when switching
TV> emacs-version until they reinstall all; And for sure they will not
TV> reinstall and I expect tons of bugreport in next weeks... (I
TV> crossfingers hoping I am wrong)
TZ> Maybe Emacs needs a shell-level way to recompile all or some
TZ> installed packages?
The approach used in Debian is that the Debian “binary” packages
contain only the source code (.el), and the respective
byte-compiled (.elc) files are produced at the installation
time, – for /each/ of the installed Emacs versions.
So, when, say, gnugo.el is installed, in addition to
/usr/share/emacs/site-lisp/gnugo.el, the following files may
also appear on the filesystem (depending on the versions of
Emacs installed on the system):
/usr/share/emacs25/site-lisp/gnugo.elc
/usr/share/emacs24/site-lisp/gnugo.elc
/usr/share/emacs23/site-lisp/gnugo.elc
…
I’m not sure whether Emacs itself handles it well when it comes
to, say, C-h f. And frankly, for backup purposes, I’d rather
prefer all that to go under /var/cache instead. (And the same
for __pycache__, etc.)
--
FSF associate member #7257 http://boycottsystemd.org/ … 3013 B6A0 230E 334A
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 12:36 ` Thierry Volpiatto
2015-01-13 14:30 ` Ted Zlatanov
@ 2015-01-13 16:37 ` Stefan Monnier
2015-01-13 18:06 ` Thierry Volpiatto
2015-01-19 8:48 ` Thierry Volpiatto
1 sibling, 2 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-13 16:37 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
>> That doesn't explain to me *why* it needs it.
>> Why does Helm need to know the initarg of a slot?
> Helm needs to know the value of each slot in class to convert it to
> alist.
But the initarg is not the slot, so that doesn't explain why you need
the initargs?
> But well I don't see the problem, class-slot-initarg exists and I just
> want to use it, why should I avoid using it ?
As exlained in bug#19552, EIEIO's use of namespaces and
internal/external definitions was terribly messy (and it's still far
from ideal), so you were left having to guess whether you were allowed
to use something.
> Is its use prohibited ? :-)
Well since it's not part of CLOS, I think it should be considered
internal to EIEIO's implementation, and hence I renamed it accordingly
with the "eieio--" prefix (and slightly changed its calling convention).
> I could get rid of class-slot-initarg and now the bug is fixed in helm.
Could you give me a quick description of what you replaced it with?
> The problem is not solved though if some old external program use this.
Indeed. I can add an obsolete backward-compatible definition to handle
that, but I'd first like to better understand why it was used: maybe it
shouldn't be declared internal after all.
> There is also a problem now with compiled files, emacs-24.4 compiled
> files are not compatibles with emacs-25 compiled files and vice-versa.
Files compiled with Emacs-25 are indeed not expected to work on
Emacs-24, but the other way should work (tho some of the changes in
EIEIO aren't backward compatible at their core, but so far those seemed
not to affect existing .elc files), so if it doesn't please M-x
report-emacs-bug, so we can see if/how we can fix it.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 16:37 ` Stefan Monnier
@ 2015-01-13 18:06 ` Thierry Volpiatto
2015-01-13 19:52 ` Stefan Monnier
2015-01-19 8:48 ` Thierry Volpiatto
1 sibling, 1 reply; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-13 18:06 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> That doesn't explain to me *why* it needs it.
>>> Why does Helm need to know the initarg of a slot?
>> Helm needs to know the value of each slot in class to convert it to
>> alist.
>
> But the initarg is not the slot, so that doesn't explain why you need
> the initargs?
The confusion comes that slot-value as documented should use the quoted
slot (i.e 'slot) and oref should use the keyword slot (i.e :slot).
As I was using oref in first place, I was converting the quoted slot to
the keyword slot (i.e 'slot => :slot) to pass it to oref, but since I
use slot-value this is no more needed and I can get rid of this
conversion with class-slot-initarg.
Note that it seems the documentation should be updated as slot-value
support both form for slot ('slot and :slot), and IIRC oref also support
both forms, but correct me if I am wrong, I am not sure about this one,
I will check.
> As exlained in bug#19552, EIEIO's use of namespaces and
> internal/external definitions was terribly messy (and it's still far
> from ideal), so you were left having to guess whether you were allowed
> to use something.
Yes I know, fixing all namespaces is good even if it create some
annoyances at first for us writing external packages.
> Indeed. I can add an obsolete backward-compatible definition to handle
> that, but I'd first like to better understand why it was used: maybe it
> shouldn't be declared internal after all.
As explained above it was just used to convert 'slot to :slot but well,
as we can use slot-value... but one may want to use oref and use :slot,
so it needs a way to convert this (maybe there is something else though,
enlight me).
> Files compiled with Emacs-25 are indeed not expected to work on
> Emacs-24,
Yes you already told me this long time ago.
> but the other way should work
Yes but it doesn't.
> (tho some of the changes in EIEIO aren't backward compatible at their
> core, but so far those seemed not to affect existing .elc files), so
> if it doesn't please M-x report-emacs-bug, so we can see if/how we can
> fix it.
Ok I will in next bugreport.
Thanks for working on this.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 18:06 ` Thierry Volpiatto
@ 2015-01-13 19:52 ` Stefan Monnier
2015-01-14 6:06 ` Thierry Volpiatto
2015-01-14 19:01 ` Stefan Monnier
0 siblings, 2 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-13 19:52 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
> The confusion comes that slot-value as documented should use the quoted
> slot (i.e 'slot) and oref should use the keyword slot (i.e :slot).
I don't think so:
(defmacro oref (obj slot)
`(eieio-oref ,obj (quote ,slot)))
(defalias 'slot-value 'eieio-oref)
They both accept the slot name (except that one needs it quoted and the
other doesn't) and the initarg name (as an alternative name for the
slot).
> Note that it seems the documentation should be updated as slot-value
> support both form for slot ('slot and :slot), and IIRC oref also support
> both forms, but correct me if I am wrong, I am not sure about this one,
> I will check.
Could be, indeed. I haven't looked enough at EIEIO's own documentation.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 19:52 ` Stefan Monnier
@ 2015-01-14 6:06 ` Thierry Volpiatto
2015-01-14 18:04 ` Stefan Monnier
2015-01-14 18:05 ` Stefan Monnier
2015-01-14 19:01 ` Stefan Monnier
1 sibling, 2 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-14 6:06 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> The confusion comes that slot-value as documented should use the quoted
>> slot (i.e 'slot) and oref should use the keyword slot (i.e :slot).
>
> I don't think so:
>
> (defmacro oref (obj slot)
> `(eieio-oref ,obj (quote ,slot)))
> (defalias 'slot-value 'eieio-oref)
>
> They both accept the slot name (except that one needs it quoted and the
> other doesn't) and the initarg name (as an alternative name for the
> slot).
Yes right, I have ckecked too, thanks.
>> Note that it seems the documentation should be updated as slot-value
>> support both form for slot ('slot and :slot), and IIRC oref also support
>> both forms, but correct me if I am wrong, I am not sure about this one,
>> I will check.
>
> Could be, indeed. I haven't looked enough at EIEIO's own documentation.
Probably it should be clarified:
(oref A :slot)
=> OK.
(oref A slot)
=> OK
(oref A 'slot)
=> Error: (wrong-type-argument symbolp (quote slot))
(slot-value A :slot)
=> OK
(slot-value A slot)
=> Symbol's value as variable is void: slot
(slot-value A 'slot)
=> OK
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-14 6:06 ` Thierry Volpiatto
@ 2015-01-14 18:04 ` Stefan Monnier
2015-01-15 5:25 ` Thierry Volpiatto
2015-01-14 18:05 ` Stefan Monnier
1 sibling, 1 reply; 28+ messages in thread
From: Stefan Monnier @ 2015-01-14 18:04 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
> Probably it should be clarified:
I'd rather just obsolete `oref'.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-14 6:06 ` Thierry Volpiatto
2015-01-14 18:04 ` Stefan Monnier
@ 2015-01-14 18:05 ` Stefan Monnier
2015-01-15 5:22 ` Thierry Volpiatto
1 sibling, 1 reply; 28+ messages in thread
From: Stefan Monnier @ 2015-01-14 18:05 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
>>> The confusion comes that slot-value as documented should use the quoted
>>> slot (i.e 'slot) and oref should use the keyword slot (i.e :slot).
>>
>> I don't think so:
>>
>> (defmacro oref (obj slot)
>> `(eieio-oref ,obj (quote ,slot)))
>> (defalias 'slot-value 'eieio-oref)
>>
>> They both accept the slot name (except that one needs it quoted and the
>> other doesn't) and the initarg name (as an alternative name for the
>> slot).
> Yes right, I have ckecked too, thanks.
To get back to the original issue: is the conclusion that you indeed
just don't need to the functionality of class-slot-initarg, or would
that functionality be handy but you managed to work around it?
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 19:52 ` Stefan Monnier
2015-01-14 6:06 ` Thierry Volpiatto
@ 2015-01-14 19:01 ` Stefan Monnier
1 sibling, 0 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-14 19:01 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
> They both accept the slot name (except that one needs it quoted and the
> other doesn't) and the initarg name (as an alternative name for the
> slot).
BTW, accepting the initarg instead of the slotname is actually an
extension of EIEIO: in CLOS you have to use the slot name when you call
`slot-value'.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-14 18:05 ` Stefan Monnier
@ 2015-01-15 5:22 ` Thierry Volpiatto
2015-01-15 15:07 ` Stefan Monnier
0 siblings, 1 reply; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-15 5:22 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>>> The confusion comes that slot-value as documented should use the quoted
>>>> slot (i.e 'slot) and oref should use the keyword slot (i.e :slot).
>>>
>>> I don't think so:
>>>
>>> (defmacro oref (obj slot)
>>> `(eieio-oref ,obj (quote ,slot)))
>>> (defalias 'slot-value 'eieio-oref)
>>>
>>> They both accept the slot name (except that one needs it quoted and the
>>> other doesn't) and the initarg name (as an alternative name for the
>>> slot).
>
>> Yes right, I have ckecked too, thanks.
>
> To get back to the original issue: is the conclusion that you indeed
> just don't need to the functionality of class-slot-initarg,
Yes, now I use slot-value with no keyword arg for slot.
> or would that functionality be handy but you managed to work around
> it?
No probably you can make it internal.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-14 18:04 ` Stefan Monnier
@ 2015-01-15 5:25 ` Thierry Volpiatto
2015-01-15 15:09 ` Stefan Monnier
0 siblings, 1 reply; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-15 5:25 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Probably it should be clarified:
>
> I'd rather just obsolete `oref'.
Please don't, oref is also used in many places in many packages and we
will have again annoying warnings.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-15 5:22 ` Thierry Volpiatto
@ 2015-01-15 15:07 ` Stefan Monnier
0 siblings, 0 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-15 15:07 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
>> or would that functionality be handy but you managed to work around
>> it?
> No probably you can make it internal.
OK thanks.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-15 5:25 ` Thierry Volpiatto
@ 2015-01-15 15:09 ` Stefan Monnier
0 siblings, 0 replies; 28+ messages in thread
From: Stefan Monnier @ 2015-01-15 15:09 UTC (permalink / raw)
To: Thierry Volpiatto; +Cc: 19564
>>> Probably it should be clarified:
>> I'd rather just obsolete `oref'.
> Please don't, oref is also used in many places in many packages and we
> will have again annoying warnings.
Yes, I know it's used extensively, just like `oset' which should also
disappear. They will have to go at some point, tho. And those warnings
are trivial to fix in a backward compatible way, since `slot-value' has
always been provided by EIEIO as well.
Stefan
^ permalink raw reply [flat|nested] 28+ messages in thread
* bug#19564: 24.4; eieio backward compatibility
2015-01-13 16:37 ` Stefan Monnier
2015-01-13 18:06 ` Thierry Volpiatto
@ 2015-01-19 8:48 ` Thierry Volpiatto
1 sibling, 0 replies; 28+ messages in thread
From: Thierry Volpiatto @ 2015-01-19 8:48 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 19564
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> Files compiled with Emacs-25 are indeed not expected to work on
> Emacs-24, but the other way should work (tho some of the changes in
> EIEIO aren't backward compatible at their core, but so far those seemed
> not to affect existing .elc files), so if it doesn't please M-x
> report-emacs-bug, so we can see if/how we can fix it.
Done.
bug#19625.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2015-01-19 8:48 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-11 8:03 bug#19564: 24.4; eieio backward compatibility Thierry Volpiatto
2015-01-12 5:08 ` Stefan Monnier
2015-01-12 5:41 ` Thierry Volpiatto
2015-01-12 5:36 ` Stefan Monnier
2015-01-12 5:58 ` Thierry Volpiatto
2015-01-12 7:03 ` Dmitry Gutov
2015-01-12 9:59 ` Thierry Volpiatto
2015-01-12 15:02 ` Stefan Monnier
2015-01-13 8:55 ` Thierry Volpiatto
2015-01-13 12:36 ` Thierry Volpiatto
2015-01-13 14:30 ` Ted Zlatanov
2015-01-13 14:50 ` Thierry Volpiatto
2015-01-13 14:54 ` Dmitry Gutov
2015-01-13 15:13 ` Thierry Volpiatto
2015-01-13 15:01 ` Ted Zlatanov
2015-01-13 15:27 ` Ivan Shmakov
2015-01-13 16:37 ` Stefan Monnier
2015-01-13 18:06 ` Thierry Volpiatto
2015-01-13 19:52 ` Stefan Monnier
2015-01-14 6:06 ` Thierry Volpiatto
2015-01-14 18:04 ` Stefan Monnier
2015-01-15 5:25 ` Thierry Volpiatto
2015-01-15 15:09 ` Stefan Monnier
2015-01-14 18:05 ` Stefan Monnier
2015-01-15 5:22 ` Thierry Volpiatto
2015-01-15 15:07 ` Stefan Monnier
2015-01-14 19:01 ` Stefan Monnier
2015-01-19 8:48 ` Thierry Volpiatto
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).