Disentangle 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表达式的真值或假值测试检查缓冲区的大小。这样做的原因是,旧版本的Emacs使用的数字不超过八百万左右,在随后的计算中,程序员担心如果缓冲区很大,Emacs可能会尝试使用过大的数字。注释中提到的术语“溢出”意味着数字过大。更近期的Emacs版本使用更大的数字,但由于人们现在查看的缓冲区远远大于以往,这段代码没有被更改。

有两种情况:如果缓冲区很大,如果不大。