GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-Gap.html ・ emacs-doc.conao3.com

28.13 バッファギャップ

Emacsのバッファは、挿入や削除を高速化するため、不可視のギャップを用いて実装されています。挿入はギャップの一部を埋めることで行われ、削除はギャップに領域を追加することで行われます。当然ながら、これはまずギャップを挿入または削除の位置に移動させる必要があることを意味します。Emacsは、挿入や削除を試みたときにのみギャップを移動させます。そのため、大きなバッファの一方の部分で編集を行った後、遠く離れた別の部分で編集を行うと、最初の編集コマンドに顕著な遅延が生じることがあります。

この仕組みは目に見えない形で動作しており、Lispコードがギャップの現在位置に影響を受けることは決してありませんが、ギャップの状態に関する情報を取得するための関数が用意されています。

関数: gap-position

この関数は、現在のバッファにおける現在のギャップ位置を返します。

関数: gap-size

この関数は、現在のバッファの現在のギャップサイズを返します。