Ar an dara lá de mí na Nollaig, scríobh Vin Shelton:
On Dec 2, 2007 3:29 PM, Aidan Kehoe <kehoea(a)parhasard.net>
wrote:
> That's coming from my change of
>
http://mid.gmane.org/18252.39139.149087.844153@parhasard.net ; the 21.5 byte
> compiler adds a :default keyword to custom-declare-variable calls when it
> byte compiles the init value. This allows the custom UI code to present
> non-byte-compiled Lisp for editing. I don't know of a way to avoid the error
> entirely.
>
> The error should be limited to the specific case of 21.4 loading code
> compiled by 21.5 where the code has complex VALUE clauses in defcustom
> calls.
>
> Vin, would you consider adding the very last hunk of that patch to 21.4?
Yes, I'll consider it, but whether or not I apply it, we must solve
the problem for users of XEmacs <= 21.4.21. Please make a suggestion
so that packages built with 21.5 will work with existing 21.4
installs.
With a bit of further thought, the below occurs to me, which is entirely
compatible and very ugly. Is running packages built with 21.5 on 21.4 a
supported use case? What happens if we modify 21.5’s byte codes?
lisp/ChangeLog addition:
2007-12-03 Aidan Kehoe <kehoea(a)parhasard.net>
* bytecomp.el (byte-compile-file-form-custom-declare-variable):
Instead of using a keyword argument that's incompatible with 21.4,
modify the byte compiled init code to change the variable's
standard-value property itself.
XEmacs Trunk source patch:
Diff command: cvs -q diff -Nu
Files affected: lisp/bytecomp.el
===================================================================
RCS
Index: lisp/bytecomp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/bytecomp.el,v
retrieving revision 1.22
diff -u -u -r1.22 bytecomp.el
--- lisp/bytecomp.el 2007/12/01 13:40:07 1.22
+++ lisp/bytecomp.el 2007/12/02 23:19:18
@@ -2405,10 +2405,17 @@
;; And save a value to be examined in the custom UI, if that differs
;; from the init value.
(unless (equal to-examine (car-safe (cdr (third form))))
- (setf (nthcdr 4 form) (nconc
- (list :default
- (list 'quote to-examine))
- (nthcdr 4 form)))))
+ (setcdr (third form)
+ (list (byte-compile-top-level
+ ;; This is ugly. custom-declare-variable errors if
+ ;; it's passed a keyword it doesn't know about, and
+ ;; so to make this code run on 21.4, we add code to
+ ;; modify the standard-value property to the
+ ;; byte-compiled value for DEFAULT.
+ `(prog2 (put ,(second form) 'standard-value
+ '(,to-examine))
+ ,to-examine)
+ nil 'file)))))
form))
;;;###autoload
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta