この関数を使うと、バッファ内のテキストの一部を、あらかじめ文字列にコピーすることなく比較できます。
この関数を使用すると、同一バッファ内の2つの部分文字列、または異なる2つのバッファを比較できます。最初の3つの引数で一方の部分文字列を指定し、バッファ(またはバッファ名)とバッファ内の2つの位置を指定します。最後の3つの引数で、もう一方の部分文字列を同様に指定します。nil を buffer1、buffer2、またはその両方に使用することで、現在のバッファを表すことができます。
最初の部分文字列が小さい場合は値が負、大きい場合は正、等しい場合は0となります。結果の絶対値は、部分文字列内で最初に異なる文字が現れるインデックスに1を加えた値となります。
この関数は、case-fold-search が nil でない場合、文字の比較時に大文字小文字を区別しません。また、テキストプロパティは常に無視されます。
現在のバッファにテキスト ‘foobarbar haha!rara!’ があるとします。この例では、2つの部分文字列は ‘rbar ’ と ‘rara!’ になります。最初の部分文字列の方が2文字目で大きいため、値は2となります。
(compare-buffer-substrings nil 6 11 nil 16 21)
⇒ 2