Improve responsiveness while in 'replace-buffer-contents'
[emacs.git] / doc / lispref / strings.texi
blobf39119987995e7ce557d17cdb2ee2d385b6e99f1
1 @c -*- mode: texinfo; coding: utf-8 -*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software
4 @c Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @node Strings and Characters
7 @chapter Strings and Characters
8 @cindex strings
9 @cindex character arrays
10 @cindex characters
11 @cindex bytes
13   A string in Emacs Lisp is an array that contains an ordered sequence
14 of characters.  Strings are used as names of symbols, buffers, and
15 files; to send messages to users; to hold text being copied between
16 buffers; and for many other purposes.  Because strings are so important,
17 Emacs Lisp has many functions expressly for manipulating them.  Emacs
18 Lisp programs use strings more often than individual characters.
20   @xref{Strings of Events}, for special considerations for strings of
21 keyboard character events.
23 @menu
24 * Basics: String Basics.      Basic properties of strings and characters.
25 * Predicates for Strings::    Testing whether an object is a string or char.
26 * Creating Strings::          Functions to allocate new strings.
27 * Modifying Strings::         Altering the contents of an existing string.
28 * Text Comparison::           Comparing characters or strings.
29 * String Conversion::         Converting to and from characters and strings.
30 * Formatting Strings::        @code{format}: Emacs's analogue of @code{printf}.
31 * Case Conversion::           Case conversion functions.
32 * Case Tables::               Customizing case conversion.
33 @end menu
35 @node String Basics
36 @section String and Character Basics
38   A character is a Lisp object which represents a single character of
39 text.  In Emacs Lisp, characters are simply integers; whether an
40 integer is a character or not is determined only by how it is used.
41 @xref{Character Codes}, for details about character representation in
42 Emacs.
44   A string is a fixed sequence of characters.  It is a type of
45 sequence called a @dfn{array}, meaning that its length is fixed and
46 cannot be altered once it is created (@pxref{Sequences Arrays
47 Vectors}).  Unlike in C, Emacs Lisp strings are @emph{not} terminated
48 by a distinguished character code.
50   Since strings are arrays, and therefore sequences as well, you can
51 operate on them with the general array and sequence functions documented
52 in @ref{Sequences Arrays Vectors}.  For example, you can access or
53 change individual characters in a string using the functions @code{aref}
54 and @code{aset} (@pxref{Array Functions}).  However, note that
55 @code{length} should @emph{not} be used for computing the width of a
56 string on display; use @code{string-width} (@pxref{Size of Displayed
57 Text}) instead.
59   There are two text representations for non-@acronym{ASCII}
60 characters in Emacs strings (and in buffers): unibyte and multibyte.
61 For most Lisp programming, you don't need to be concerned with these
62 two representations.  @xref{Text Representations}, for details.
64   Sometimes key sequences are represented as unibyte strings.  When a
65 unibyte string is a key sequence, string elements in the range 128 to
66 255 represent meta characters (which are large integers) rather than
67 character codes in the range 128 to 255.  Strings cannot hold
68 characters that have the hyper, super or alt modifiers; they can hold
69 @acronym{ASCII} control characters, but no other control characters.
70 They do not distinguish case in @acronym{ASCII} control characters.
71 If you want to store such characters in a sequence, such as a key
72 sequence, you must use a vector instead of a string.  @xref{Character
73 Type}, for more information about keyboard input characters.
75   Strings are useful for holding regular expressions.  You can also
76 match regular expressions against strings with @code{string-match}
77 (@pxref{Regexp Search}).  The functions @code{match-string}
78 (@pxref{Simple Match Data}) and @code{replace-match} (@pxref{Replacing
79 Match}) are useful for decomposing and modifying strings after
80 matching regular expressions against them.
82   Like a buffer, a string can contain text properties for the characters
83 in it, as well as the characters themselves.  @xref{Text Properties}.
84 All the Lisp primitives that copy text from strings to buffers or other
85 strings also copy the properties of the characters being copied.
87   @xref{Text}, for information about functions that display strings or
88 copy them into buffers.  @xref{Character Type}, and @ref{String Type},
89 for information about the syntax of characters and strings.
90 @xref{Non-ASCII Characters}, for functions to convert between text
91 representations and to encode and decode character codes.
93 @node Predicates for Strings
94 @section Predicates for Strings
95 @cindex predicates for strings
96 @cindex string predicates
98 For more information about general sequence and array predicates,
99 see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.
101 @defun stringp object
102 This function returns @code{t} if @var{object} is a string, @code{nil}
103 otherwise.
104 @end defun
106 @defun string-or-null-p object
107 This function returns @code{t} if @var{object} is a string or
108 @code{nil}.  It returns @code{nil} otherwise.
109 @end defun
111 @defun char-or-string-p object
112 This function returns @code{t} if @var{object} is a string or a
113 character (i.e., an integer), @code{nil} otherwise.
114 @end defun
116 @node Creating Strings
117 @section Creating Strings
118 @cindex creating strings
119 @cindex string creation
121   The following functions create strings, either from scratch, or by
122 putting strings together, or by taking them apart.
124 @defun make-string count character
125 This function returns a string made up of @var{count} repetitions of
126 @var{character}.  If @var{count} is negative, an error is signaled.
128 @example
129 (make-string 5 ?x)
130      @result{} "xxxxx"
131 (make-string 0 ?x)
132      @result{} ""
133 @end example
135   Other functions to compare with this one include @code{make-vector}
136 (@pxref{Vectors}) and @code{make-list} (@pxref{Building Lists}).
137 @end defun
139 @defun string &rest characters
140 This returns a string containing the characters @var{characters}.
142 @example
143 (string ?a ?b ?c)
144      @result{} "abc"
145 @end example
146 @end defun
148 @defun substring string &optional start end
149 This function returns a new string which consists of those characters
150 from @var{string} in the range from (and including) the character at the
151 index @var{start} up to (but excluding) the character at the index
152 @var{end}.  The first character is at index zero.  With one argument,
153 this function just copies @var{string}.
155 @example
156 @group
157 (substring "abcdefg" 0 3)
158      @result{} "abc"
159 @end group
160 @end example
162 @noindent
163 In the above example, the index for @samp{a} is 0, the index for
164 @samp{b} is 1, and the index for @samp{c} is 2.  The index 3---which
165 is the fourth character in the string---marks the character position
166 up to which the substring is copied.  Thus, @samp{abc} is copied from
167 the string @code{"abcdefg"}.
169 A negative number counts from the end of the string, so that @minus{}1
170 signifies the index of the last character of the string.  For example:
172 @example
173 @group
174 (substring "abcdefg" -3 -1)
175      @result{} "ef"
176 @end group
177 @end example
179 @noindent
180 In this example, the index for @samp{e} is @minus{}3, the index for
181 @samp{f} is @minus{}2, and the index for @samp{g} is @minus{}1.
182 Therefore, @samp{e} and @samp{f} are included, and @samp{g} is excluded.
184 When @code{nil} is used for @var{end}, it stands for the length of the
185 string.  Thus,
187 @example
188 @group
189 (substring "abcdefg" -3 nil)
190      @result{} "efg"
191 @end group
192 @end example
194 Omitting the argument @var{end} is equivalent to specifying @code{nil}.
195 It follows that @code{(substring @var{string} 0)} returns a copy of all
196 of @var{string}.
198 @example
199 @group
200 (substring "abcdefg" 0)
201      @result{} "abcdefg"
202 @end group
203 @end example
205 @noindent
206 But we recommend @code{copy-sequence} for this purpose (@pxref{Sequence
207 Functions}).
209 If the characters copied from @var{string} have text properties, the
210 properties are copied into the new string also.  @xref{Text Properties}.
212 @code{substring} also accepts a vector for the first argument.
213 For example:
215 @example
216 (substring [a b (c) "d"] 1 3)
217      @result{} [b (c)]
218 @end example
220 A @code{wrong-type-argument} error is signaled if @var{start} is not
221 an integer or if @var{end} is neither an integer nor @code{nil}.  An
222 @code{args-out-of-range} error is signaled if @var{start} indicates a
223 character following @var{end}, or if either integer is out of range
224 for @var{string}.
226 Contrast this function with @code{buffer-substring} (@pxref{Buffer
227 Contents}), which returns a string containing a portion of the text in
228 the current buffer.  The beginning of a string is at index 0, but the
229 beginning of a buffer is at index 1.
230 @end defun
232 @defun substring-no-properties string &optional start end
233 This works like @code{substring} but discards all text properties from
234 the value.  Also, @var{start} may be omitted or @code{nil}, which is
235 equivalent to 0.  Thus, @w{@code{(substring-no-properties
236 @var{string})}} returns a copy of @var{string}, with all text
237 properties removed.
238 @end defun
240 @defun concat &rest sequences
241 @cindex copying strings
242 @cindex concatenating strings
243 This function returns a new string consisting of the characters in the
244 arguments passed to it (along with their text properties, if any).  The
245 arguments may be strings, lists of numbers, or vectors of numbers; they
246 are not themselves changed.  If @code{concat} receives no arguments, it
247 returns an empty string.
249 @example
250 (concat "abc" "-def")
251      @result{} "abc-def"
252 (concat "abc" (list 120 121) [122])
253      @result{} "abcxyz"
254 ;; @r{@code{nil} is an empty sequence.}
255 (concat "abc" nil "-def")
256      @result{} "abc-def"
257 (concat "The " "quick brown " "fox.")
258      @result{} "The quick brown fox."
259 (concat)
260      @result{} ""
261 @end example
263 @noindent
264 This function always constructs a new string that is not @code{eq} to
265 any existing string, except when the result is the empty string (to
266 save space, Emacs makes only one empty multibyte string).
268 For information about other concatenation functions, see the
269 description of @code{mapconcat} in @ref{Mapping Functions},
270 @code{vconcat} in @ref{Vector Functions}, and @code{append} in @ref{Building
271 Lists}.  For concatenating individual command-line arguments into a
272 string to be used as a shell command, see @ref{Shell Arguments,
273 combine-and-quote-strings}.
274 @end defun
276 @defun split-string string &optional separators omit-nulls trim
277 This function splits @var{string} into substrings based on the regular
278 expression @var{separators} (@pxref{Regular Expressions}).  Each match
279 for @var{separators} defines a splitting point; the substrings between
280 splitting points are made into a list, which is returned.
282 If @var{separators} is @code{nil} (or omitted), the default is the
283 value of @code{split-string-default-separators} and the function
284 behaves as if @var{omit-nulls} were @code{t}.
286 If @var{omit-nulls} is @code{nil} (or omitted), the result contains
287 null strings whenever there are two consecutive matches for
288 @var{separators}, or a match is adjacent to the beginning or end of
289 @var{string}.  If @var{omit-nulls} is @code{t}, these null strings are
290 omitted from the result.
292 If the optional argument @var{trim} is non-@code{nil}, it should be a
293 regular expression to match text to trim from the beginning and end of
294 each substring.  If trimming makes the substring empty, it is treated
295 as null.
297 If you need to split a string into a list of individual command-line
298 arguments suitable for @code{call-process} or @code{start-process},
299 see @ref{Shell Arguments, split-string-and-unquote}.
301 Examples:
303 @example
304 (split-string "  two words ")
305      @result{} ("two" "words")
306 @end example
308 The result is not @code{("" "two" "words" "")}, which would rarely be
309 useful.  If you need such a result, use an explicit value for
310 @var{separators}:
312 @example
313 (split-string "  two words "
314               split-string-default-separators)
315      @result{} ("" "two" "words" "")
316 @end example
318 @example
319 (split-string "Soup is good food" "o")
320      @result{} ("S" "up is g" "" "d f" "" "d")
321 (split-string "Soup is good food" "o" t)
322      @result{} ("S" "up is g" "d f" "d")
323 (split-string "Soup is good food" "o+")
324      @result{} ("S" "up is g" "d f" "d")
325 @end example
327 Empty matches do count, except that @code{split-string} will not look
328 for a final empty match when it already reached the end of the string
329 using a non-empty match or when @var{string} is empty:
331 @example
332 (split-string "aooob" "o*")
333      @result{} ("" "a" "" "b" "")
334 (split-string "ooaboo" "o*")
335      @result{} ("" "" "a" "b" "")
336 (split-string "" "")
337      @result{} ("")
338 @end example
340 However, when @var{separators} can match the empty string,
341 @var{omit-nulls} is usually @code{t}, so that the subtleties in the
342 three previous examples are rarely relevant:
344 @example
345 (split-string "Soup is good food" "o*" t)
346      @result{} ("S" "u" "p" " " "i" "s" " " "g" "d" " " "f" "d")
347 (split-string "Nice doggy!" "" t)
348      @result{} ("N" "i" "c" "e" " " "d" "o" "g" "g" "y" "!")
349 (split-string "" "" t)
350      @result{} nil
351 @end example
353 Somewhat odd, but predictable, behavior can occur for certain
354 ``non-greedy'' values of @var{separators} that can prefer empty
355 matches over non-empty matches.  Again, such values rarely occur in
356 practice:
358 @example
359 (split-string "ooo" "o*" t)
360      @result{} nil
361 (split-string "ooo" "\\|o+" t)
362      @result{} ("o" "o" "o")
363 @end example
364 @end defun
366 @defvar split-string-default-separators
367 The default value of @var{separators} for @code{split-string}.  Its
368 usual value is @w{@code{"[ \f\t\n\r\v]+"}}.
369 @end defvar
371 @node Modifying Strings
372 @section Modifying Strings
373 @cindex modifying strings
374 @cindex string modification
376   The most basic way to alter the contents of an existing string is with
377 @code{aset} (@pxref{Array Functions}).  @code{(aset @var{string}
378 @var{idx} @var{char})} stores @var{char} into @var{string} at index
379 @var{idx}.  Each character occupies one or more bytes, and if @var{char}
380 needs a different number of bytes from the character already present at
381 that index, @code{aset} signals an error.
383   A more powerful function is @code{store-substring}:
385 @defun store-substring string idx obj
386 This function alters part of the contents of the string @var{string}, by
387 storing @var{obj} starting at index @var{idx}.  The argument @var{obj}
388 may be either a character or a (smaller) string.
390 Since it is impossible to change the length of an existing string, it is
391 an error if @var{obj} doesn't fit within @var{string}'s actual length,
392 or if any new character requires a different number of bytes from the
393 character currently present at that point in @var{string}.
394 @end defun
396   To clear out a string that contained a password, use
397 @code{clear-string}:
399 @defun clear-string string
400 This makes @var{string} a unibyte string and clears its contents to
401 zeros.  It may also change @var{string}'s length.
402 @end defun
404 @need 2000
405 @node Text Comparison
406 @section Comparison of Characters and Strings
407 @cindex string equality
408 @cindex text comparison
410 @defun char-equal character1 character2
411 This function returns @code{t} if the arguments represent the same
412 character, @code{nil} otherwise.  This function ignores differences
413 in case if @code{case-fold-search} is non-@code{nil}.
415 @example
416 (char-equal ?x ?x)
417      @result{} t
418 (let ((case-fold-search nil))
419   (char-equal ?x ?X))
420      @result{} nil
421 @end example
422 @end defun
424 @defun string= string1 string2
425 This function returns @code{t} if the characters of the two strings
426 match exactly.  Symbols are also allowed as arguments, in which case
427 the symbol names are used.  Case is always significant, regardless of
428 @code{case-fold-search}.
430 This function is equivalent to @code{equal} for comparing two strings
431 (@pxref{Equality Predicates}).  In particular, the text properties of
432 the two strings are ignored; use @code{equal-including-properties} if
433 you need to distinguish between strings that differ only in their text
434 properties.  However, unlike @code{equal}, if either argument is not a
435 string or symbol, @code{string=} signals an error.
437 @example
438 (string= "abc" "abc")
439      @result{} t
440 (string= "abc" "ABC")
441      @result{} nil
442 (string= "ab" "ABC")
443      @result{} nil
444 @end example
446 For technical reasons, a unibyte and a multibyte string are
447 @code{equal} if and only if they contain the same sequence of
448 character codes and all these codes are either in the range 0 through
449 127 (@acronym{ASCII}) or 160 through 255 (@code{eight-bit-graphic}).
450 However, when a unibyte string is converted to a multibyte string, all
451 characters with codes in the range 160 through 255 are converted to
452 characters with higher codes, whereas @acronym{ASCII} characters
453 remain unchanged.  Thus, a unibyte string and its conversion to
454 multibyte are only @code{equal} if the string is all @acronym{ASCII}.
455 Character codes 160 through 255 are not entirely proper in multibyte
456 text, even though they can occur.  As a consequence, the situation
457 where a unibyte and a multibyte string are @code{equal} without both
458 being all @acronym{ASCII} is a technical oddity that very few Emacs
459 Lisp programmers ever get confronted with.  @xref{Text
460 Representations}.
461 @end defun
463 @defun string-equal string1 string2
464 @code{string-equal} is another name for @code{string=}.
465 @end defun
467 @cindex locale-dependent string equivalence
468 @defun string-collate-equalp string1 string2 &optional locale ignore-case
469 This function returns @code{t} if @var{string1} and @var{string2} are
470 equal with respect to collation rules.  A collation rule is not only
471 determined by the lexicographic order of the characters contained in
472 @var{string1} and @var{string2}, but also further rules about
473 relations between these characters.  Usually, it is defined by the
474 @var{locale} environment Emacs is running with.
476 For example, characters with different coding points but
477 the same meaning might be considered as equal, like different grave
478 accent Unicode characters:
480 @example
481 @group
482 (string-collate-equalp (string ?\uFF40) (string ?\u1FEF))
483      @result{} t
484 @end group
485 @end example
487 The optional argument @var{locale}, a string, overrides the setting of
488 your current locale identifier for collation.  The value is system
489 dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
490 systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
491 systems.
493 If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
494 before comparing them.
496 @vindex w32-collate-ignore-punctuation
497 To emulate Unicode-compliant collation on MS-Windows systems,
498 bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
499 the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
501 If your system does not support a locale environment, this function
502 behaves like @code{string-equal}.
504 Do @emph{not} use this function to compare file names for equality, as
505 filesystems generally don't honor linguistic equivalence of strings
506 that collation implements.
507 @end defun
509 @cindex lexical comparison of strings
510 @defun string< string1 string2
511 @c (findex string< causes problems for permuted index!!)
512 This function compares two strings a character at a time.  It
513 scans both the strings at the same time to find the first pair of corresponding
514 characters that do not match.  If the lesser character of these two is
515 the character from @var{string1}, then @var{string1} is less, and this
516 function returns @code{t}.  If the lesser character is the one from
517 @var{string2}, then @var{string1} is greater, and this function returns
518 @code{nil}.  If the two strings match entirely, the value is @code{nil}.
520 Pairs of characters are compared according to their character codes.
521 Keep in mind that lower case letters have higher numeric values in the
522 @acronym{ASCII} character set than their upper case counterparts; digits and
523 many punctuation characters have a lower numeric value than upper case
524 letters.  An @acronym{ASCII} character is less than any non-@acronym{ASCII}
525 character; a unibyte non-@acronym{ASCII} character is always less than any
526 multibyte non-@acronym{ASCII} character (@pxref{Text Representations}).
528 @example
529 @group
530 (string< "abc" "abd")
531      @result{} t
532 (string< "abd" "abc")
533      @result{} nil
534 (string< "123" "abc")
535      @result{} t
536 @end group
537 @end example
539 When the strings have different lengths, and they match up to the
540 length of @var{string1}, then the result is @code{t}.  If they match up
541 to the length of @var{string2}, the result is @code{nil}.  A string of
542 no characters is less than any other string.
544 @example
545 @group
546 (string< "" "abc")
547      @result{} t
548 (string< "ab" "abc")
549      @result{} t
550 (string< "abc" "")
551      @result{} nil
552 (string< "abc" "ab")
553      @result{} nil
554 (string< "" "")
555      @result{} nil
556 @end group
557 @end example
559 Symbols are also allowed as arguments, in which case their print names
560 are compared.
561 @end defun
563 @defun string-lessp string1 string2
564 @code{string-lessp} is another name for @code{string<}.
565 @end defun
567 @defun string-greaterp string1 string2
568 This function returns the result of comparing @var{string1} and
569 @var{string2} in the opposite order, i.e., it is equivalent to calling
570 @code{(string-lessp @var{string2} @var{string1})}.
571 @end defun
573 @cindex locale-dependent string comparison
574 @defun string-collate-lessp string1 string2 &optional locale ignore-case
575 This function returns @code{t} if @var{string1} is less than
576 @var{string2} in collation order.  A collation order is not only
577 determined by the lexicographic order of the characters contained in
578 @var{string1} and @var{string2}, but also further rules about
579 relations between these characters.  Usually, it is defined by the
580 @var{locale} environment Emacs is running with.
582 For example, punctuation and whitespace characters might be ignored
583 for sorting (@pxref{Sequence Functions}):
585 @example
586 @group
587 (sort '("11" "12" "1 1" "1 2" "1.1" "1.2") 'string-collate-lessp)
588      @result{} ("11" "1 1" "1.1" "12" "1 2" "1.2")
589 @end group
590 @end example
592 This behavior is system-dependent; e.g., punctuation and whitespace
593 are never ignored on Cygwin, regardless of locale.
595 The optional argument @var{locale}, a string, overrides the setting of
596 your current locale identifier for collation.  The value is system
597 dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
598 systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
599 systems.  The @var{locale} value of @code{"POSIX"} or @code{"C"} lets
600 @code{string-collate-lessp} behave like @code{string-lessp}:
602 @example
603 @group
604 (sort '("11" "12" "1 1" "1 2" "1.1" "1.2")
605       (lambda (s1 s2) (string-collate-lessp s1 s2 "POSIX")))
606      @result{} ("1 1" "1 2" "1.1" "1.2" "11" "12")
607 @end group
608 @end example
610 If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
611 before comparing them.
613 To emulate Unicode-compliant collation on MS-Windows systems,
614 bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
615 the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
617 If your system does not support a locale environment, this function
618 behaves like @code{string-lessp}.
619 @end defun
621 @defun string-version-lessp string1 string2
622 This function compares strings lexicographically, except it treats
623 sequences of numerical characters as if they comprised a base-ten
624 number, and then compares the numbers.  So @samp{foo2.png} is
625 ``smaller'' than @samp{foo12.png} according to this predicate, even if
626 @samp{12} is lexicographically ``smaller'' than @samp{2}.
627 @end defun
629 @defun string-prefix-p string1 string2 &optional ignore-case
630 This function returns non-@code{nil} if @var{string1} is a prefix of
631 @var{string2}; i.e., if @var{string2} starts with @var{string1}.  If
632 the optional argument @var{ignore-case} is non-@code{nil}, the
633 comparison ignores case differences.
634 @end defun
636 @defun string-suffix-p suffix string &optional ignore-case
637 This function returns non-@code{nil} if @var{suffix} is a suffix of
638 @var{string}; i.e., if @var{string} ends with @var{suffix}.  If the
639 optional argument @var{ignore-case} is non-@code{nil}, the comparison
640 ignores case differences.
641 @end defun
643 @defun compare-strings string1 start1 end1 string2 start2 end2 &optional ignore-case
644 This function compares a specified part of @var{string1} with a
645 specified part of @var{string2}.  The specified part of @var{string1}
646 runs from index @var{start1} (inclusive) up to index @var{end1}
647 (exclusive); @code{nil} for @var{start1} means the start of the
648 string, while @code{nil} for @var{end1} means the length of the
649 string.  Likewise, the specified part of @var{string2} runs from index
650 @var{start2} up to index @var{end2}.
652 The strings are compared by the numeric values of their characters.
653 For instance, @var{str1} is considered less than @var{str2} if
654 its first differing character has a smaller numeric value.  If
655 @var{ignore-case} is non-@code{nil}, characters are converted to
656 upper-case before comparing them.  Unibyte strings are converted to
657 multibyte for comparison (@pxref{Text Representations}), so that a
658 unibyte string and its conversion to multibyte are always regarded as
659 equal.
661 If the specified portions of the two strings match, the value is
662 @code{t}.  Otherwise, the value is an integer which indicates how many
663 leading characters agree, and which string is less.  Its absolute
664 value is one plus the number of characters that agree at the beginning
665 of the two strings.  The sign is negative if @var{string1} (or its
666 specified portion) is less.
667 @end defun
669 @defun assoc-string key alist &optional case-fold
670 This function works like @code{assoc}, except that @var{key} must be a
671 string or symbol, and comparison is done using @code{compare-strings}.
672 Symbols are converted to strings before testing.
673 If @var{case-fold} is non-@code{nil}, @var{key} and the elements of
674 @var{alist} are converted to upper-case before comparison.
675 Unlike @code{assoc}, this function can also match elements of the alist
676 that are strings or symbols rather than conses.  In particular, @var{alist} can
677 be a list of strings or symbols rather than an actual alist.
678 @xref{Association Lists}.
679 @end defun
681   See also the function @code{compare-buffer-substrings} in
682 @ref{Comparing Text}, for a way to compare text in buffers.  The
683 function @code{string-match}, which matches a regular expression
684 against a string, can be used for a kind of string comparison; see
685 @ref{Regexp Search}.
687 @node String Conversion
688 @section Conversion of Characters and Strings
689 @cindex conversion of strings
691   This section describes functions for converting between characters,
692 strings and integers.  @code{format} (@pxref{Formatting Strings}) and
693 @code{prin1-to-string} (@pxref{Output Functions}) can also convert
694 Lisp objects into strings.  @code{read-from-string} (@pxref{Input
695 Functions}) can convert a string representation of a Lisp object
696 into an object.  The functions @code{string-to-multibyte} and
697 @code{string-to-unibyte} convert the text representation of a string
698 (@pxref{Converting Representations}).
700   @xref{Documentation}, for functions that produce textual descriptions
701 of text characters and general input events
702 (@code{single-key-description} and @code{text-char-description}).  These
703 are used primarily for making help messages.
705 @defun number-to-string number
706 @cindex integer to string
707 @cindex integer to decimal
708 This function returns a string consisting of the printed base-ten
709 representation of @var{number}.  The returned value starts with a
710 minus sign if the argument is negative.
712 @example
713 (number-to-string 256)
714      @result{} "256"
715 @group
716 (number-to-string -23)
717      @result{} "-23"
718 @end group
719 (number-to-string -23.5)
720      @result{} "-23.5"
721 @end example
723 @cindex @code{int-to-string}
724 @code{int-to-string} is a semi-obsolete alias for this function.
726 See also the function @code{format} in @ref{Formatting Strings}.
727 @end defun
729 @defun string-to-number string &optional base
730 @cindex string to number
731 This function returns the numeric value of the characters in
732 @var{string}.  If @var{base} is non-@code{nil}, it must be an integer
733 between 2 and 16 (inclusive), and integers are converted in that base.
734 If @var{base} is @code{nil}, then base ten is used.  Floating-point
735 conversion only works in base ten; we have not implemented other
736 radices for floating-point numbers, because that would be much more
737 work and does not seem useful.  If @var{string} looks like an integer
738 but its value is too large to fit into a Lisp integer,
739 @code{string-to-number} returns a floating-point result.
741 The parsing skips spaces and tabs at the beginning of @var{string},
742 then reads as much of @var{string} as it can interpret as a number in
743 the given base.  (On some systems it ignores other whitespace at the
744 beginning, not just spaces and tabs.)  If @var{string} cannot be
745 interpreted as a number, this function returns 0.
747 @example
748 (string-to-number "256")
749      @result{} 256
750 (string-to-number "25 is a perfect square.")
751      @result{} 25
752 (string-to-number "X256")
753      @result{} 0
754 (string-to-number "-4.5")
755      @result{} -4.5
756 (string-to-number "1e5")
757      @result{} 100000.0
758 @end example
760 @findex string-to-int
761 @code{string-to-int} is an obsolete alias for this function.
762 @end defun
764 @defun char-to-string character
765 @cindex character to string
766 This function returns a new string containing one character,
767 @var{character}.  This function is semi-obsolete because the function
768 @code{string} is more general.  @xref{Creating Strings}.
769 @end defun
771 @defun string-to-char string
772   This function returns the first character in @var{string}.  This
773 mostly identical to @code{(aref string 0)}, except that it returns 0
774 if the string is empty.  (The value is also 0 when the first character
775 of @var{string} is the null character, @acronym{ASCII} code 0.)  This
776 function may be eliminated in the future if it does not seem useful
777 enough to retain.
778 @end defun
780   Here are some other functions that can convert to or from a string:
782 @table @code
783 @item concat
784 This function converts a vector or a list into a string.
785 @xref{Creating Strings}.
787 @item vconcat
788 This function converts a string into a vector.  @xref{Vector
789 Functions}.
791 @item append
792 This function converts a string into a list.  @xref{Building Lists}.
794 @item byte-to-string
795 This function converts a byte of character data into a unibyte string.
796 @xref{Converting Representations}.
797 @end table
799 @node Formatting Strings
800 @section Formatting Strings
801 @cindex formatting strings
802 @cindex strings, formatting them
804   @dfn{Formatting} means constructing a string by substituting
805 computed values at various places in a constant string.  This constant
806 string controls how the other values are printed, as well as where
807 they appear; it is called a @dfn{format string}.
809   Formatting is often useful for computing messages to be displayed.  In
810 fact, the functions @code{message} and @code{error} provide the same
811 formatting feature described here; they differ from @code{format-message} only
812 in how they use the result of formatting.
814 @defun format string &rest objects
815 This function returns a string equal to @var{string}, replacing any format
816 specifications with encodings of the corresponding @var{objects}.  The
817 arguments @var{objects} are the computed values to be formatted.
819 The characters in @var{string}, other than the format specifications,
820 are copied directly into the output, including their text properties,
821 if any.  Any text properties of the format specifications are copied
822 to the produced string representations of the argument @var{objects}.
824 The output string need not be newly-allocated.  For example, if
825 @code{x} is the string @code{"foo"}, the expressions @code{(eq x
826 (format x))} and @code{(eq x (format "%s" x))} might both yield
827 @code{t}.
828 @end defun
830 @defun format-message string &rest objects
831 @cindex curved quotes, in formatted messages
832 @cindex curly quotes, in formatted messages
833 This function acts like @code{format}, except it also converts any
834 grave accents (@t{`}) and apostrophes (@t{'}) in @var{string} as per the
835 value of @code{text-quoting-style}.
837 Typically grave accent and apostrophe in the format translate to
838 matching curved quotes, e.g., @t{"Missing `%s'"} might result in
839 @t{"Missing ‘foo’"}.  @xref{Text Quoting Style}, for how to influence
840 or inhibit this translation.
841 @end defun
843 @cindex @samp{%} in format
844 @cindex format specification
845   A format specification is a sequence of characters beginning with a
846 @samp{%}.  Thus, if there is a @samp{%d} in @var{string}, the
847 @code{format} function replaces it with the printed representation of
848 one of the values to be formatted (one of the arguments @var{objects}).
849 For example:
851 @example
852 @group
853 (format "The value of fill-column is %d." fill-column)
854      @result{} "The value of fill-column is 72."
855 @end group
856 @end example
858   Since @code{format} interprets @samp{%} characters as format
859 specifications, you should @emph{never} pass an arbitrary string as
860 the first argument.  This is particularly true when the string is
861 generated by some Lisp code.  Unless the string is @emph{known} to
862 never include any @samp{%} characters, pass @code{"%s"}, described
863 below, as the first argument, and the string as the second, like this:
865 @example
866   (format "%s" @var{arbitrary-string})
867 @end example
869   Certain format specifications require values of particular types.  If
870 you supply a value that doesn't fit the requirements, an error is
871 signaled.
873   Here is a table of valid format specifications:
875 @table @samp
876 @item %s
877 Replace the specification with the printed representation of the object,
878 made without quoting (that is, using @code{princ}, not
879 @code{prin1}---@pxref{Output Functions}).  Thus, strings are represented
880 by their contents alone, with no @samp{"} characters, and symbols appear
881 without @samp{\} characters.
883 If the object is a string, its text properties are
884 copied into the output.  The text properties of the @samp{%s} itself
885 are also copied, but those of the object take priority.
887 @item %S
888 Replace the specification with the printed representation of the object,
889 made with quoting (that is, using @code{prin1}---@pxref{Output
890 Functions}).  Thus, strings are enclosed in @samp{"} characters, and
891 @samp{\} characters appear where necessary before special characters.
893 @item %o
894 @cindex integer to octal
895 Replace the specification with the base-eight representation of an
896 unsigned integer.
898 @item %d
899 Replace the specification with the base-ten representation of a signed
900 integer.
902 @item %x
903 @itemx %X
904 @cindex integer to hexadecimal
905 Replace the specification with the base-sixteen representation of an
906 unsigned integer.  @samp{%x} uses lower case and @samp{%X} uses upper
907 case.
909 @item %c
910 Replace the specification with the character which is the value given.
912 @item %e
913 Replace the specification with the exponential notation for a
914 floating-point number.
916 @item %f
917 Replace the specification with the decimal-point notation for a
918 floating-point number.
920 @item %g
921 Replace the specification with notation for a floating-point number,
922 using either exponential notation or decimal-point notation.  The
923 exponential notation is used if the exponent would be less than @minus{}4 or
924 greater than or equal to the precision (default: 6).  By default,
925 trailing zeros are removed from the fractional portion of the result
926 and a decimal-point character appears only if it is followed by a
927 digit.
929 @item %%
930 Replace the specification with a single @samp{%}.  This format
931 specification is unusual in that its only form is plain
932 @samp{%%} and that it does not use a value.  For example,
933 @code{(format "%% %d" 30)} returns @code{"% 30"}.
934 @end table
936   Any other format character results in an @samp{Invalid format
937 operation} error.
939   Here are several examples, which assume the typical
940 @code{text-quoting-style} settings:
942 @example
943 @group
944 (format "The octal value of %d is %o,
945          and the hex value is %x." 18 18 18)
946      @result{} "The octal value of 18 is 22,
947          and the hex value is 12."
949 (format-message
950  "The name of this buffer is ‘%s’." (buffer-name))
951      @result{} "The name of this buffer is ‘strings.texi’."
953 (format-message
954  "The buffer object prints as `%s'." (current-buffer))
955      @result{} "The buffer object prints as ‘strings.texi’."
956 @end group
957 @end example
959   By default, format specifications correspond to successive values from
960 @var{objects}.  Thus, the first format specification in @var{string}
961 uses the first such value, the second format specification uses the
962 second such value, and so on.  Any extra format specifications (those
963 for which there are no corresponding values) cause an error.  Any
964 extra values to be formatted are ignored.
966 @cindex field numbers in format spec
967   A format specification can have a @dfn{field number}, which is a
968 decimal number immediately after the initial @samp{%}, followed by a
969 literal dollar sign @samp{$}.  It causes the format specification to
970 convert the argument with the given number instead of the next
971 argument.  Field numbers start at 1.  A format can contain either
972 numbered or unnumbered format specifications but not both, except that
973 @samp{%%} can be mixed with numbered specifications.
975 @example
976 (format "%2$s, %3$s, %%, %1$s" "x" "y" "z")
977      @result{} "y, z, %, x"
978 @end example
980 @cindex flags in format specifications
981   After the @samp{%} and any field number, you can put certain
982 @dfn{flag characters}.
984   The flag @samp{+} inserts a plus sign before a positive number, so
985 that it always has a sign.  A space character as flag inserts a space
986 before a positive number.  (Otherwise, positive numbers start with the
987 first digit.)  These flags are useful for ensuring that positive
988 numbers and negative numbers use the same number of columns.  They are
989 ignored except for @samp{%d}, @samp{%e}, @samp{%f}, @samp{%g}, and if
990 both flags are used, @samp{+} takes precedence.
992   The flag @samp{#} specifies an alternate form which depends on
993 the format in use.  For @samp{%o}, it ensures that the result begins
994 with a @samp{0}.  For @samp{%x} and @samp{%X}, it prefixes the result
995 with @samp{0x} or @samp{0X}.  For @samp{%e} and @samp{%f}, the
996 @samp{#} flag means include a decimal point even if the precision is
997 zero.  For @samp{%g}, it always includes a decimal point, and also
998 forces any trailing zeros after the decimal point to be left in place
999 where they would otherwise be removed.
1001   The flag @samp{0} ensures that the padding consists of @samp{0}
1002 characters instead of spaces.  This flag is ignored for non-numerical
1003 specification characters like @samp{%s}, @samp{%S} and @samp{%c}.
1004 These specification characters accept the @samp{0} flag, but still pad
1005 with @emph{spaces}.
1007   The flag @samp{-} causes any padding inserted by the width,
1008 if specified, to be inserted on the right rather than the left.
1009 If both @samp{-} and @samp{0} are present, the @samp{0} flag is
1010 ignored.
1012 @example
1013 @group
1014 (format "%06d is padded on the left with zeros" 123)
1015      @result{} "000123 is padded on the left with zeros"
1017 (format "'%-6d' is padded on the right" 123)
1018      @result{} "'123   ' is padded on the right"
1020 (format "The word '%-7s' actually has %d letters in it."
1021         "foo" (length "foo"))
1022      @result{} "The word 'foo    ' actually has 3 letters in it."
1023 @end group
1024 @end example
1026 @cindex field width
1027 @cindex padding
1028   A specification can have a @dfn{width}, which is a decimal number
1029 that appears after any field number and flags.  If the printed
1030 representation of the object contains fewer characters than this
1031 width, @code{format} extends it with padding.  Any padding introduced by
1032 the width normally consists of spaces inserted on the left:
1034 @example
1035 (format "%5d is padded on the left with spaces" 123)
1036      @result{} "  123 is padded on the left with spaces"
1037 @end example
1039 @noindent
1040 If the width is too small, @code{format} does not truncate the
1041 object's printed representation.  Thus, you can use a width to specify
1042 a minimum spacing between columns with no risk of losing information.
1043 In the following two examples, @samp{%7s} specifies a minimum width
1044 of 7.  In the first case, the string inserted in place of @samp{%7s}
1045 has only 3 letters, and needs 4 blank spaces as padding.  In the
1046 second case, the string @code{"specification"} is 13 letters wide but
1047 is not truncated.
1049 @example
1050 @group
1051 (format "The word '%7s' has %d letters in it."
1052         "foo" (length "foo"))
1053      @result{} "The word '    foo' has 3 letters in it."
1054 (format "The word '%7s' has %d letters in it."
1055         "specification" (length "specification"))
1056      @result{} "The word 'specification' has 13 letters in it."
1057 @end group
1058 @end example
1060 @cindex precision in format specifications
1061   All the specification characters allow an optional @dfn{precision}
1062 after the field number, flags and width, if present.  The precision is
1063 a decimal-point @samp{.} followed by a digit-string.  For the
1064 floating-point specifications (@samp{%e} and @samp{%f}), the
1065 precision specifies how many digits following the decimal point to
1066 show; if zero, the decimal-point itself is also omitted.  For
1067 @samp{%g}, the precision specifies how many significant digits to show
1068 (significant digits are the first digit before the decimal point and
1069 all the digits after it).  If the precision of %g is zero or
1070 unspecified, it is treated as 1.  For @samp{%s} and @samp{%S}, the
1071 precision truncates the string to the given width, so @samp{%.3s}
1072 shows only the first three characters of the representation for
1073 @var{object}.  For other specification characters, the effect of
1074 precision is what the local library functions of the @code{printf}
1075 family produce.
1077 @node Case Conversion
1078 @section Case Conversion in Lisp
1079 @cindex upper case
1080 @cindex lower case
1081 @cindex character case
1082 @cindex case conversion in Lisp
1084   The character case functions change the case of single characters or
1085 of the contents of strings.  The functions normally convert only
1086 alphabetic characters (the letters @samp{A} through @samp{Z} and
1087 @samp{a} through @samp{z}, as well as non-@acronym{ASCII} letters); other
1088 characters are not altered.  You can specify a different case
1089 conversion mapping by specifying a case table (@pxref{Case Tables}).
1091   These functions do not modify the strings that are passed to them as
1092 arguments.
1094   The examples below use the characters @samp{X} and @samp{x} which have
1095 @acronym{ASCII} codes 88 and 120 respectively.
1097 @defun downcase string-or-char
1098 This function converts @var{string-or-char}, which should be either a
1099 character or a string, to lower case.
1101 When @var{string-or-char} is a string, this function returns a new
1102 string in which each letter in the argument that is upper case is
1103 converted to lower case.  When @var{string-or-char} is a character,
1104 this function returns the corresponding lower case character (an
1105 integer); if the original character is lower case, or is not a letter,
1106 the return value is equal to the original character.
1108 @example
1109 (downcase "The cat in the hat")
1110      @result{} "the cat in the hat"
1112 (downcase ?X)
1113      @result{} 120
1114 @end example
1115 @end defun
1117 @defun upcase string-or-char
1118 This function converts @var{string-or-char}, which should be either a
1119 character or a string, to upper case.
1121 When @var{string-or-char} is a string, this function returns a new
1122 string in which each letter in the argument that is lower case is
1123 converted to upper case.  When @var{string-or-char} is a character,
1124 this function returns the corresponding upper case character (an
1125 integer); if the original character is upper case, or is not a letter,
1126 the return value is equal to the original character.
1128 @example
1129 (upcase "The cat in the hat")
1130      @result{} "THE CAT IN THE HAT"
1132 (upcase ?x)
1133      @result{} 88
1134 @end example
1135 @end defun
1137 @defun capitalize string-or-char
1138 @cindex capitalization
1139 This function capitalizes strings or characters.  If
1140 @var{string-or-char} is a string, the function returns a new string
1141 whose contents are a copy of @var{string-or-char} in which each word
1142 has been capitalized.  This means that the first character of each
1143 word is converted to upper case, and the rest are converted to lower
1144 case.
1146 The definition of a word is any sequence of consecutive characters that
1147 are assigned to the word constituent syntax class in the current syntax
1148 table (@pxref{Syntax Class Table}).
1150 When @var{string-or-char} is a character, this function does the same
1151 thing as @code{upcase}.
1153 @example
1154 @group
1155 (capitalize "The cat in the hat")
1156      @result{} "The Cat In The Hat"
1157 @end group
1159 @group
1160 (capitalize "THE 77TH-HATTED CAT")
1161      @result{} "The 77th-Hatted Cat"
1162 @end group
1164 @group
1165 (capitalize ?x)
1166      @result{} 88
1167 @end group
1168 @end example
1169 @end defun
1171 @defun upcase-initials string-or-char
1172 If @var{string-or-char} is a string, this function capitalizes the
1173 initials of the words in @var{string-or-char}, without altering any
1174 letters other than the initials.  It returns a new string whose
1175 contents are a copy of @var{string-or-char}, in which each word has
1176 had its initial letter converted to upper case.
1178 The definition of a word is any sequence of consecutive characters that
1179 are assigned to the word constituent syntax class in the current syntax
1180 table (@pxref{Syntax Class Table}).
1182 When the argument to @code{upcase-initials} is a character,
1183 @code{upcase-initials} has the same result as @code{upcase}.
1185 @example
1186 @group
1187 (upcase-initials "The CAT in the hAt")
1188      @result{} "The CAT In The HAt"
1189 @end group
1190 @end example
1191 @end defun
1193   Note that case conversion is not a one-to-one mapping of codepoints
1194 and length of the result may differ from length of the argument.
1195 Furthermore, because passing a character forces return type to be
1196 a character, functions are unable to perform proper substitution and
1197 result may differ compared to treating a one-character string.  For
1198 example:
1200 @ifnottex
1201 @example
1202 @group
1203 (upcase "fi")  ; note: single character, ligature "fi"
1204      @result{} "FI"
1205 @end group
1206 @group
1207 (upcase ?fi)
1208      @result{} 64257  ; i.e. ?fi
1209 @end group
1210 @end example
1211 @end ifnottex
1212 @iftex
1213 @example
1214 @group
1215 (upcase "@r{fi}")  ; note: single character, ligature "fi"
1216      @result{} "FI"
1217 @end group
1218 @group
1219 (upcase ?@r{fi})
1220      @result{} 64257  ; i.e. ?@r{fi}
1221 @end group
1222 @end example
1223 @end iftex
1225   To avoid this, a character must first be converted into a string,
1226 using @code{string} function, before being passed to one of the casing
1227 functions.  Of course, no assumptions on the length of the result may
1228 be made.
1230   Mapping for such special cases are taken from
1231 @code{special-uppercase}, @code{special-lowercase} and
1232 @code{special-titlecase} @xref{Character Properties}.
1234   @xref{Text Comparison}, for functions that compare strings; some of
1235 them ignore case differences, or can optionally ignore case differences.
1237 @node Case Tables
1238 @section The Case Table
1240   You can customize case conversion by installing a special @dfn{case
1241 table}.  A case table specifies the mapping between upper case and lower
1242 case letters.  It affects both the case conversion functions for Lisp
1243 objects (see the previous section) and those that apply to text in the
1244 buffer (@pxref{Case Changes}).  Each buffer has a case table; there is
1245 also a standard case table which is used to initialize the case table
1246 of new buffers.
1248   A case table is a char-table (@pxref{Char-Tables}) whose subtype is
1249 @code{case-table}.  This char-table maps each character into the
1250 corresponding lower case character.  It has three extra slots, which
1251 hold related tables:
1253 @table @var
1254 @item upcase
1255 The upcase table maps each character into the corresponding upper
1256 case character.
1257 @item canonicalize
1258 The canonicalize table maps all of a set of case-related characters
1259 into a particular member of that set.
1260 @item equivalences
1261 The equivalences table maps each one of a set of case-related characters
1262 into the next character in that set.
1263 @end table
1265   In simple cases, all you need to specify is the mapping to lower-case;
1266 the three related tables will be calculated automatically from that one.
1268   For some languages, upper and lower case letters are not in one-to-one
1269 correspondence.  There may be two different lower case letters with the
1270 same upper case equivalent.  In these cases, you need to specify the
1271 maps for both lower case and upper case.
1273   The extra table @var{canonicalize} maps each character to a canonical
1274 equivalent; any two characters that are related by case-conversion have
1275 the same canonical equivalent character.  For example, since @samp{a}
1276 and @samp{A} are related by case-conversion, they should have the same
1277 canonical equivalent character (which should be either @samp{a} for both
1278 of them, or @samp{A} for both of them).
1280   The extra table @var{equivalences} is a map that cyclically permutes
1281 each equivalence class (of characters with the same canonical
1282 equivalent).  (For ordinary @acronym{ASCII}, this would map @samp{a} into
1283 @samp{A} and @samp{A} into @samp{a}, and likewise for each set of
1284 equivalent characters.)
1286   When constructing a case table, you can provide @code{nil} for
1287 @var{canonicalize}; then Emacs fills in this slot from the lower case
1288 and upper case mappings.  You can also provide @code{nil} for
1289 @var{equivalences}; then Emacs fills in this slot from
1290 @var{canonicalize}.  In a case table that is actually in use, those
1291 components are non-@code{nil}.  Do not try to specify
1292 @var{equivalences} without also specifying @var{canonicalize}.
1294   Here are the functions for working with case tables:
1296 @defun case-table-p object
1297 This predicate returns non-@code{nil} if @var{object} is a valid case
1298 table.
1299 @end defun
1301 @defun set-standard-case-table table
1302 This function makes @var{table} the standard case table, so that it will
1303 be used in any buffers created subsequently.
1304 @end defun
1306 @defun standard-case-table
1307 This returns the standard case table.
1308 @end defun
1310 @defun current-case-table
1311 This function returns the current buffer's case table.
1312 @end defun
1314 @defun set-case-table table
1315 This sets the current buffer's case table to @var{table}.
1316 @end defun
1318 @defmac with-case-table table body@dots{}
1319 The @code{with-case-table} macro saves the current case table, makes
1320 @var{table} the current case table, evaluates the @var{body} forms,
1321 and finally restores the case table.  The return value is the value of
1322 the last form in @var{body}.  The case table is restored even in case
1323 of an abnormal exit via @code{throw} or error (@pxref{Nonlocal
1324 Exits}).
1325 @end defmac
1327   Some language environments modify the case conversions of
1328 @acronym{ASCII} characters; for example, in the Turkish language
1329 environment, the @acronym{ASCII} capital I is downcased into
1330 a Turkish dotless i (@samp{ı}).  This can interfere with code that requires
1331 ordinary @acronym{ASCII} case conversion, such as implementations of
1332 @acronym{ASCII}-based network protocols.  In that case, use the
1333 @code{with-case-table} macro with the variable @var{ascii-case-table},
1334 which stores the unmodified case table for the @acronym{ASCII}
1335 character set.
1337 @defvar ascii-case-table
1338 The case table for the @acronym{ASCII} character set.  This should not be
1339 modified by any language environment settings.
1340 @end defvar
1342   The following three functions are convenient subroutines for packages
1343 that define non-@acronym{ASCII} character sets.  They modify the specified
1344 case table @var{case-table}; they also modify the standard syntax table.
1345 @xref{Syntax Tables}.  Normally you would use these functions to change
1346 the standard case table.
1348 @defun set-case-syntax-pair uc lc case-table
1349 This function specifies a pair of corresponding letters, one upper case
1350 and one lower case.
1351 @end defun
1353 @defun set-case-syntax-delims l r case-table
1354 This function makes characters @var{l} and @var{r} a matching pair of
1355 case-invariant delimiters.
1356 @end defun
1358 @defun set-case-syntax char syntax case-table
1359 This function makes @var{char} case-invariant, with syntax
1360 @var{syntax}.
1361 @end defun
1363 @deffn Command describe-buffer-case-table
1364 This command displays a description of the contents of the current
1365 buffer's case table.
1366 @end deffn