この関数により、バッファ内のテキストの部分同士を 文字列にコピーせずに比較できます。
この関数は、同一バッファ内の2つの部分文字列、あるいは、 異なる2つのバッファの部分文字列を比較する。 始めの3つの引数は、バッファとそのバッファ内の2つの位置を与え、 1つの部分文字列を指定する。 残りの3つの引数も同様にして別の部分文字列を指定する。 カレントバッファを表すために、 buffer1とbuffer2のいずれか、あるいは、 両方に
nil
を指定できる。始めの文字列のほうが小さければ値は負であり、 始めのほうが大きければ値は正であり、等しければ0である。 結果の絶対値は、部分文字列の中で最初に異なる文字の添字足す1である。
この関数は、
case-fold-search
がnil
以外であると、 文字の比較では大文字小文字を区別しない。 テキスト属性はつねに無視する。カレントバッファにはテキスト‘foobarbar haha!rara!’があるとする。 すると、この例の2つの部分文字列は‘rbar ’と‘rara!’である。 2番目の文字で最初の文字列のほうが大きいので、結果は2である。
(compare-buffer-substring nil 6 11 nil 16 21) ⇒ 2