X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=symbols.lisp;h=a61932785988967f169385fdb09baa005ffb2b80;hb=cf4d25858f4969025835e23008818d94c6e23208;hp=7ec505f699e90d5df674d5543dc8ea222238ffea;hpb=4a5b626f01db51b02f969adb33ddad6aa9ee303a;p=kmrcl.git diff --git a/symbols.lisp b/symbols.lisp index 7ec505f..a619327 100644 --- a/symbols.lisp +++ b/symbols.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: symbols.lisp,v 1.2 2003/06/06 21:59:30 kevin Exp $ +;;;; $Id: symbols.lisp,v 1.4 2003/07/19 20:32:48 kevin Exp $ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -45,6 +45,18 @@ ;;; Symbol functions +(eval-when (:compile-toplevel :load-toplevel :execute) + (when (char= #\a (schar (symbol-name '#:a) 0)) + (pushnew :lowercase-reader *features*))) + +(defun string-default-case (str) + #+(and (not case-sensitive) (not lowercase-reader)) + (string-upcase str) + #+(and (not case-sensitive) lowercase-reader) + (string-downcase str) + #+case-sensitive + str) + (defun concat-symbol-pkg (pkg &rest args) (declare (dynamic-extent args)) (flet ((stringify (arg) @@ -54,8 +66,7 @@ (symbol (symbol-name arg))))) (let ((str (apply #'concatenate 'string (mapcar #'stringify args)))) - (intern #-case-sensitive (string-upcase str) - #+case-sensitive str + (intern (string-default-case str) (if pkg pkg *package*))))) @@ -66,9 +77,7 @@ "Returns keyword for a name" (etypecase name (keyword name) - (string (intern #-case-sensitive (string-upcase name) - #+case-sensitive name - :keyword)) + (string (intern (string-default-case name) :keyword)) (symbol (intern (symbol-name name) :keyword)))) (defun show (&optional (what :variables) (package *package*))