Skip to content

Commit

Permalink
* fns.c (Fcompare_strings): Doc fix.
Browse files Browse the repository at this point in the history
* strings.texi (Text Comparison): Doc fix for compare-strings.
  • Loading branch information
Chong Yidong committed Dec 15, 2012
1 parent 0f96594 commit 042daca
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 21 deletions.
4 changes: 4 additions & 0 deletions doc/lispref/ChangeLog
@@ -1,3 +1,7 @@
2012-12-15 Chong Yidong <cyd@gnu.org>

* strings.texi (Text Comparison): Doc fix for compare-strings.

2012-12-09 Stefan Monnier <monnier@iro.umontreal.ca>

* control.texi (Pattern matching case statement): New node.
Expand Down
34 changes: 19 additions & 15 deletions doc/lispref/strings.texi
Expand Up @@ -517,25 +517,29 @@ comparison ignores case differences.
@end defun

@defun compare-strings string1 start1 end1 string2 start2 end2 &optional ignore-case
This function compares the specified part of @var{string1} with the
This function compares a specified part of @var{string1} with a
specified part of @var{string2}. The specified part of @var{string1}
runs from index @var{start1} up to index @var{end1} (@code{nil} means
the end of the string). The specified part of @var{string2} runs from
index @var{start2} up to index @var{end2} (@code{nil} means the end of
the string).

The strings are both converted to multibyte for the comparison
(@pxref{Text Representations}) so that a unibyte string and its
conversion to multibyte are always regarded as equal. If
@var{ignore-case} is non-@code{nil}, then case is ignored, so that
upper case letters can be equal to lower case letters.
runs from index @var{start1} (inclusive) up to index @var{end1}
(exclusive); @code{nil} for @var{start1} means the start of the
string, while @code{nil} for @var{end1} means the length of the
string. Likewise, the specified part of @var{string2} runs from index
@var{start2} up to index @var{end2}.

The strings are compared by the numeric values of their characters.
For instance, @var{str1} is considered ``smaller than'' @var{str2} if
its first differing character has a smaller numeric value. If
@var{ignore-case} is non-@code{nil}, characters are converted to
lower-case before comparing them. Unibyte strings are converted to
multibyte for comparison (@pxref{Text Representations}), so that a
unibyte string and its conversion to multibyte are always regarded as
equal.

If the specified portions of the two strings match, the value is
@code{t}. Otherwise, the value is an integer which indicates how many
leading characters agree, and which string is less. Its absolute value
is one plus the number of characters that agree at the beginning of the
two strings. The sign is negative if @var{string1} (or its specified
portion) is less.
leading characters agree, and which string is less. Its absolute
value is one plus the number of characters that agree at the beginning
of the two strings. The sign is negative if @var{string1} (or its
specified portion) is less.
@end defun

@defun assoc-string key alist &optional case-fold
Expand Down
4 changes: 4 additions & 0 deletions src/ChangeLog
@@ -1,3 +1,7 @@
2012-12-15 Chong Yidong <cyd@gnu.org>

* fns.c (Fcompare_strings): Doc fix (Bug#13081).

2012-12-14 Eli Zaretskii <eliz@gnu.org>

* w32.c (get_name_and_id): Always pass NULL as the first argument
Expand Down
18 changes: 12 additions & 6 deletions src/fns.c
Expand Up @@ -211,12 +211,18 @@ Symbols are also allowed; their print names are used instead. */)

DEFUN ("compare-strings", Fcompare_strings, Scompare_strings, 6, 7, 0,
doc: /* Compare the contents of two strings, converting to multibyte if needed.
In string STR1, skip the first START1 characters and stop at END1.
In string STR2, skip the first START2 characters and stop at END2.
END1 and END2 default to the full lengths of the respective strings.
Case is significant in this comparison if IGNORE-CASE is nil.
Unibyte strings are converted to multibyte for comparison.
The arguments START1, END1, START2, and END2, if non-nil, are
positions specifying which parts of STR1 or STR2 to compare. In
string STR1, compare the part between START1 (inclusive) and END1
\(exclusive). If START1 is nil, it defaults to 0, the beginning of
the string; if END1 is nil, it defaults to the length of the string.
Likewise, in string STR2, compare the part between START2 and END2.
The strings are compared by the numeric values of their characters.
For instance, STR1 is "less than" STR2 if its first differing
character has a smaller numeric value. If IGNORE-CASE is non-nil,
characters are converted to lower-case before comparing them. Unibyte
strings are converted to multibyte for comparison.
The value is t if the strings (or specified portions) match.
If string STR1 is less, the value is a negative number N;
Expand Down

0 comments on commit 042daca

Please sign in to comment.