On 3/13/10, Erik Huelsmann ehuels@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)))