X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=symbols.lisp;h=a61932785988967f169385fdb09baa005ffb2b80;hp=f2af14bc4430a8935736ab95d3208f7e36b23248;hb=5738e60dc3724dc7d022d0fd2d5f2dbe337be470;hpb=4de7f25a69c218303f170314ac26217770a531ed diff --git a/symbols.lisp b/symbols.lisp index f2af14b..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.1 2003/04/28 23:51:59 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 ;;;; @@ -16,7 +16,7 @@ ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* -(in-package :kmrcl) +(in-package #:kmrcl) (defun cl-symbols () (append (cl-variables) (cl-functions))) @@ -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*))