convert-mixed-case-symbols

Function

Package: excl

Arguments: bool &key push pop

This function affects the behavior of set-case-mode to convert, or not, symbols with mixed upper and lower case characters when it is doing a symbol name conversion operation. It also affects how symbols are created during fasl file reading. If called with the required argument t, set-case-mode will convert mixed case symbols. If this function is called with the required argument nil, set-case-mode will not convert mixed-case symbols.

The initial value returned by this function, starting in release 6.0, is t. Note that in releases prior to 6.0, the initial value was nil.

Symbol name conversion is done for two reasons:

  1. When a call to set-case-mode requires it (when going between upper case and lower case preferred modes).
  2. When reading a fasl file compiled in a case mode other than the current case mode, and those case modes differ in whether upper case or lower case was the preferred mode.

convert-mixed-case-symbols returns the previous value of this switch.

Note that it is not easy to determine the currently in force value using this function. To see the current value, look at the value of the unexported variable excl::*convert-mixed-case-symbols*. Do not set the value of that variable except by using this function, however.

This function is used automatically during (require :winapi) and (require :ole) (both on Windows only) since these modules intentionally contain symbols with mixed case.

The keyword arguments can be used to manage a private stack of values for this function (the stack itself is not accessible directly). If the keyword argument :push is given a true value, then the old value (i.e. the value when this function is called) is pushed on the private stack kept for this function. The call (excl::convert-mixed-case-symbols nil :pop t) restores the setting to the old value at the top of the stack (and pops that value off the saved values stack). When pop is specified true, the required argument is ignored (since the new value comes off the stack).

See also case.htm and *current-case-mode*, *ignore-package-name-case*, and set-case-mode.

The documentation is described in introduction.htm and the index is in index.htm.

Copyright (c) 1998-2000, Franz Inc. Berkeley, CA., USA. All rights reserved.

Created 2000.10.5.