]> code.delx.au - gnu-emacs/blobdiff - lispref/strings.texi
(Modifying Strings): Clarify that `clear-string' always
[gnu-emacs] / lispref / strings.texi
index 46c01982f32abc3d57e94961afc407ca0813d18b..4a8531cd6ce7f9fd9ff6e85968c47b33b057c322 100644 (file)
@@ -1,7 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2002, 2003,
-@c   2004, 2005, 2006 Free Software Foundation, Inc.
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
+@c   2002, 2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/strings
 @node Strings and Characters, Lists, Numbers, Top
@@ -390,9 +390,8 @@ character currently present at that point in @var{string}.
 @code{clear-string}:
 
 @defun clear-string string
-This clears the contents of @var{string} to zeros.
-It may also change @var{string}'s length and convert it to
-a unibyte string.
+This makes @var{string} a unibyte string and clears its contents to
+zeros.  It may also change @var{string}'s length.
 @end defun
 
 @need 2000
@@ -700,8 +699,8 @@ in the copy with encodings of the corresponding @var{objects}.  The
 arguments @var{objects} are the computed values to be formatted.
 
 The characters in @var{string}, other than the format specifications,
-are copied directly into the output; if they have text properties,
-these are copied into the output also.
+are copied directly into the output, including their text properties,
+if any.
 @end defun
 
 @cindex @samp{%} in format
@@ -719,6 +718,17 @@ For example:
 @end group
 @end example
 
+  Since @code{format} interprets @samp{%} characters as format
+specifications, you should @emph{never} pass an arbitrary string as
+the first argument.  This is particularly true when the string is
+generated by some Lisp code.  Unless the string is @emph{known} to
+never include any @samp{%} characters, pass @code{"%s"}, described
+below, as the first argument, and the string as the second, like this:
+
+@example
+  (format "%s" @var{arbitrary-string})
+@end example
+
   If @var{string} contains more than one format specification, the
 format specifications correspond to successive values from
 @var{objects}.  Thus, the first format specification in @var{string}