beginning-of-buffer
¶他の複雑な見た目の式と同様に、beginning-of-buffer
内の条件式も、テンプレート(この場合は if-then-else
式のテンプレート)の構成要素として捉えることで整理できます。骨組みだけを見ると、この式は次のようになります。
(if (buffer-is-large
divide-buffer-size-by-10-and-multiply-by-arg
else-use-alternate-calculation
この内部式 if
の真偽判定は、バッファのサイズを確認しています。その理由は、旧バージョン18のEmacsでは800万程度までの数値を使用しており、その後の計算において、バッファが大きい場合にEmacsが大きすぎる数値を使用しようとするのではないかとプログラマーが懸念したためです。コメントにある「overflow」という用語は、大きすぎる数値のことを指します。近年のEmacsではより大きな数値が使用されていますが、このコードは手つかずのままです。それは単に、現在ではかつてないほど遥かに大きなバッファを扱うようになっているからです。
バッファが大きい場合とそうでない場合の2通りがあります。