changeset 76944:ceb213515795

(Case Tables): Document with-case-table and ascii-case-table.
author Chong Yidong <cyd@stupidchicken.com>
date Wed, 04 Apr 2007 15:57:04 +0000
parents fd3e6a10551d
children f7f5c44ea73c
files lispref/strings.texi
diffstat 1 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lispref/strings.texi	Wed Apr 04 15:56:48 2007 +0000
+++ b/lispref/strings.texi	Wed Apr 04 15:57:04 2007 +0000
@@ -1108,6 +1108,29 @@
 This sets the current buffer's case table to @var{table}.
 @end defun
 
+@defmac with-case-table table body@dots{}
+The @code{with-case-table} macro saves the current case table, makes
+@var{table} the current case table, evaluates the @var{body} forms,
+and finally restores the case table.  The return value is the value of
+the last form in @var{body}.  The case table is restored even in case
+of an abnormal exit via @code{throw} or error (@pxref{Nonlocal
+Exits}).
+@end defmac
+
+  Some language environments may modify the case conversions of ASCII
+characters; for example, in the Turkish language environment, the
+ASCII character ``I'' is downcased into a Turkish ``dotless i''.  This
+can interfere with code that requires ordinary ASCII case conversion,
+such as implementations of ASCII-based network protocols.  In that
+case, use the @code{with-case-table} macro with the variable
+@var{ascii-case-table}, which stores the unmodified case table for the
+ASCII character set.
+
+@defvar ascii-case-table
+The case table for the ASCII character set.  This should not be
+modified by any language environment settings.
+@end defvar
+
   The following three functions are convenient subroutines for packages
 that define non-@acronym{ASCII} character sets.  They modify the specified
 case table @var{case-table}; they also modify the standard syntax table.