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

33.4 テキストの挿入

挿入とは、バッファに新しいテキストを追加することを指します。挿入されたテキストはポイント—ポイント前の文字とポイント後の文字の間—に配置されます。挿入関数によっては、ポイントを挿入後のテキストの前に残すものもあれば、後に残すものもあります。前者の挿入をポイント後、後者の挿入をポイント前と呼びます。

挿入処理では、挿入位置より後ろにあるマーカーを移動させ、周囲のテキストと共に配置します(マーカーを参照)。マーカーが挿入位置を指している場合、挿入処理によってマーカーが再配置されるかどうかは、そのマーカーの挿入タイプによって異なります(マーカー挿入タイプを参照)。insert-before-markers などの特定の特殊機能は、マーカーの挿入タイプに関わらず、こうしたすべてのマーカーを挿入後のテキストの後ろを指すように再配置します。

挿入関数は、現在のバッファが読み取り専用である場合(読み取り専用バッファを参照)、または読み取り専用テキスト内に挿入する場合(特殊な意味を持つプロパティを参照)に、エラーを通知します。

これらの関数は、文字列やバッファからテキスト文字を、そのプロパティとともにコピーします。挿入された文字は、コピー元の文字とまったく同じプロパティを持ちます。これに対し、文字列やバッファの一部ではなく、個別の引数として指定された文字は、隣接するテキストからテキストプロパティを継承します。

挿入関数は、テキストをユニバイトからマルチバイトに変換してマルチバイトバッファに挿入し、またその逆(テキストが文字列またはバッファから提供される場合)も行います。ただし、現在のバッファがマルチバイトバッファであっても、ユニバイト文字コード 128 から 255 をマルチバイト文字に変換することはありません。テキスト表現の変換を参照してください。

関数: insert &rest args

この関数は、文字列および/または文字 args を現在のバッファのポイント位置に挿入し、ポイントを前方に移動させます。言い換えれば、ポイントより前のテキストを挿入します。すべての args が文字列または文字でない限り、エラーが報告されます。戻り値は nil です。

関数: insert-before-markers &rest args

この関数は、文字列および/または文字 args を現在のバッファのポイント位置に挿入し、ポイントを前方に移動させます。すべての args が文字列または文字でない限り、エラーが報告されます。戻り値は nil です。

この関数は、挿入箇所を指していたマーカーを、挿入後のテキストの後へと再配置するという点で、他の挿入関数とは異なります。オーバーレイが挿入箇所から始まる場合、挿入後のテキストはオーバーレイの外側に位置します。一方、空でないオーバーレイが挿入箇所で終わる場合、挿入後のテキストはそのオーバーレイの内側に位置します。

コマンド: insert-char character &optional count inherit

このコマンドは、ポイントより前の現在のバッファに character の count 個のインスタンスを挿入します。引数 count は整数、character は文字である必要があります。

対話的に呼び出された場合、このコマンドは character の Unicode 名またはコードポイントを用いて入力を求めます。The GNU Emacs Manual の テキストの挿入 を参照してください。

この関数は、現在のバッファがマルチバイトバッファである場合であっても、ユニバイト文字コード 128 から 255 をマルチバイト文字に変換しません。テキスト表現の変換を参照してください。

inherit が nil でない場合、挿入された文字は、挿入位置の前後2文字からスティッキーなテキストプロパティを継承します。テキストプロパティのスティッキネスを参照してください。

関数: insert-buffer-substring from-buffer-or-name &optional start end

この関数は、バッファ from-buffer-or-name の一部をポイント前の現在のバッファに挿入します。挿入されるテキストは、start(含む)から end(含まない)までの領域です。(これらの引数のデフォルト値は、そのバッファのアクセス可能な領域の先頭と末尾となります。)この関数は nil を返します。

この例では、バッファ ‘bar’ を現在のバッファとしてフォームが実行されます。バッファ ‘bar’ は初期状態で空であると想定します。

---------- Buffer: foo ----------
We hold these truths to be self-evident, that all
---------- Buffer: foo ----------

(insert-buffer-substring "foo" 1 20)
     ⇒ nil

---------- Buffer: bar ----------
We hold these truth∗
---------- Buffer: bar ----------
関数: insert-buffer-substring-no-properties from-buffer-or-name &optional start end

これは insert-buffer-substring と同様ですが、テキストプロパティは一切コピーされません。

関数: insert-into-buffer to-buffer &optional start end

これは insert-buffer-substring に似ていますが、逆の方向に動作します。現在のバッファから to-buffer へテキストがコピーされます。テキストのブロックは to-buffer のバッファポイント(Point を参照)にコピーされ、バッファポイントはコピーされたテキストの末尾の後に進みます。start/end が nil の場合、現在のバッファ内のテキスト全体がコピーされます。

挿入に加えて、周辺のテキストからテキストプロパティを継承するその他の挿入機能については、テキストプロパティの粘着性を参照してください。インデント機能によって挿入される空白文字も、テキストプロパティを継承します。