[armedbear-devel] Maxima status: Can't compile due to i18n changes
Robert Dodier
robert.dodier at gmail.com
Sat Mar 13 18:53:04 UTC 2010
On 3/13/10, Erik Huelsmann <ehuels at gmail.com> wrote:
> The issue is with intl.lisp: the defvar form defining *default-domain* contains an
> _N reader macro, which expands into multiple symbols on ABCL: This is
> what I found after expansion:
>
> --- fasl content
> (DEFVAR *DEFAULT-DOMAIN* "maxima" NIL "The message-lookup domain used
> by INTL:GETTEXT and INTL:NGETTEXT.
> Use (INTL:TEXTDOMAIN \"whatever\") in each source file to set this.")
> --- fasl content
Erik, thanks for your work on ABCL.
With the fragment shown in the PS to define _N, I get this output:
$ java -jar /usr/local/armedbear-svn/abcl/dist/abcl.jar
Armed Bear Common Lisp 0.19.0-dev
Java 1.5.0_01 Sun Microsystems Inc.
Java HotSpot(TM) Client VM
Low-level initialization completed in 3.619 seconds.
Startup completed in 9.248 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (load "/tmp/_N.lisp")
T
CL-USER(2): _N"foo"
NIL
CL-USER(3): "foo"
CL-USER(4): (defvar *blurf* _N"foo")
*BLURF*
CL-USER(5): (macroexpand '(defvar *blurf* _N"foo"))
(PROGN (SYSTEM::%DEFVAR (QUOTE *BLURF*)) (UNLESS (BOUNDP (QUOTE
*BLURF*)) (SETQ *BLURF* NIL)) (SYSTEM:%SET-DOCUMENTATION (QUOTE
*BLURF*) (QUOTE VARIABLE) (QUOTE "foo")) (QUOTE *BLURF*))
T
Hmm, I didn't type "foo" at CL-USER(3), it showed up by itself.
When I try it in Clisp, I don't see the superfluous NIL + spurious "foo" input:
[1]> (load "/tmp/_N.lisp")
;; Loading file /tmp/_N.lisp ...
;; Loaded file /tmp/_N.lisp
T
[2]> _N"foo"
"foo"
[3]>
Maybe this gives some clue? Not sure what's going on here.
I built ABCL from svn on 2010-01-24.
best,
Robert Dodier
PS.
$ cat /tmp/_N.lisp
(defpackage :intl)
(eval-when #-gcl (:compile-toplevel :execute)
#+gcl (compile eval)
(defparameter intl::*default-domain* "maxima")
(unless (and (fboundp 'intl::read-translatable-string)
(eq (get-macro-character #\_)
(fdefinition 'intl::read-translatable-string)))
(set-macro-character #\_ (lambda (stream char)
(declare (ignore char))
(case (peek-char nil stream nil nil t)
(#\" (values))
(#\N (read-char stream t nil t) (values))
(otherwise '_)))
t)))
More information about the armedbear-devel
mailing list