From: David Vazquez Date: Sat, 2 Feb 2013 20:13:46 +0000 (+0000) Subject: Dump keywords X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=2890060b5446322f3831a8d6fdcba189ac2877ff;p=jscl.git Dump keywords --- diff --git a/ecmalisp.lisp b/ecmalisp.lisp index 8ce69d5..9a1080d 100644 --- a/ecmalisp.lisp +++ b/ecmalisp.lisp @@ -587,15 +587,19 @@ ;; This function is used internally to initialize the CL package ;; with the symbols built during bootstrap. (defun %intern-symbol (symbol) - (let ((symbols (%package-symbols *common-lisp-package*))) - (oset symbol "package" *common-lisp-package*) + (let* ((package + (if (in "package" symbol) + (find-package-or-fail (oget symbol "package")) + *common-lisp-package*)) + (symbols (%package-symbols *common-lisp-package*))) + (oset symbol "package" package) (oset symbols (symbol-name symbol) symbol))) (defun find-symbol (name &optional (package *package*)) (let* ((package (find-package-or-fail package)) (symbols (%package-symbols package))) (if (in name symbols) - (values (oget symbols name) t) + (values (oget symbols name) :interned) (dolist (used (package-use-list package) (values nil nil)) (let ((exports (%package-external-symbols used))) (when (in name exports) @@ -1344,12 +1348,17 @@ ((symbolp sexp) (or (cdr (assoc sexp *literal-symbols*)) (let ((v (genlit)) - (s #+common-lisp (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}") - #+ecmalisp - (let ((package (symbol-package sexp))) - (if (null package) - (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}") - (ls-compile `(intern ,(symbol-name sexp) ,(package-name package))))))) + (s #+common-lisp + (let ((package (symbol-package sexp))) + (if (eq package (find-package "KEYWORD")) + (concat "{name: \"" (escape-string (symbol-name sexp)) + "\", package: '" (package-name package) "'}") + (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}"))) + #+ecmalisp + (let ((package (symbol-package sexp))) + (if (null package) + (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}") + (ls-compile `(intern ,(symbol-name sexp) ,(package-name package))))))) (push (cons sexp v) *literal-symbols*) (toplevel-compilation (concat "var " v " = " s)) v)))