Next: , Previous: Comparing Text, Up: Text


31.4 テキストの挿入

挿入(insertion)とは、バッファに新たなテキストを追加することです。 挿入されたテキストはポイント位置に、つまり、 ポイントのまえの文字とポイントのあとの文字のあいだに入ります。 挿入されたテキストのまえにポイントを留める関数もあれば、 そのうしろに留める関数もあります。 前者をポイントのうしろへ挿入と呼び、 後者をポイントのまえへ挿入と呼びます。

挿入により、挿入箇所よりうしろの位置を指すマーカは再配置されて 同じ周りの文字に留まります(see Markers)。 マーカが挿入箇所を指している場合には、 マーカの挿入型(see Marker Insertion Types)に依存して、 挿入するとマーカが再配置されたりされなかったりします。 insert-before-markersなどの特定の特殊な関数は、 マーカの挿入型に関わらず、 挿入されたテキストのうしろを指すように そのようなすべてのマーカを再配置します。

カレントバッファが読み出し専用であると、挿入関数はエラーを通知します。

これらの関数は、テキストの文字群をそれらの属性とともに 文字列からバッファへコピーします。 挿入された文字群は、コピーされるまえとまったく同じ属性を持ちます。 対照的に、文字列やバッファの一部ではない孤立した引数として 指定された文字群は、周りのテキストからテキスト属性を継承します。

挿入関数は、文字列由来やバッファ由来のテキストの場合には、 マルチバイトバッファへ挿入するために ユニバイトからマルチバイトへテキストを変換し、逆向きの変換も行います。 しかし、カレントバッファがたとえマルチバイトバッファであっても、 128から255のユニバイト文字コードはマルチバイト文字には変換しません。 See Converting Representations

— Function: insert &rest args

この関数は、文字列や文字群argsをカレントバッファのポイント位置に挿入し、 ポイントを先へ進める。 いいかえれば、ポイントのまえにテキストを挿入する。 argsが文字列でも文字でもないと、エラーを通知する。 値はnilである。

— Function: insert-before-markers &rest args

この関数は、文字列や文字群argsをカレントバッファのポイント位置に挿入し、 ポイントを先へ進める。 argsが文字列でも文字でもないと、エラーを通知する。 値はnilである。

挿入箇所を指していたマーカを挿入されたテキストのうしろを指すように再配置 する点で、この関数は他の挿入関数と異なる。 挿入箇所でオーバレイが始まるときには、 挿入されたテキストはオーバレイの範囲外に出る。 空でないオーバレイが挿入箇所で終るときには、 挿入されたテキストはオーバレイの範囲内に入る。

— Function: insert-char character &optional count inherit

この関数は、カレントバッファのポイントのまえに 文字charactercount個挿入する。 引数countは数(nilは1を意味する)であり、 characterは文字であること。 値はnilである。

この関数は、カレントバッファがたとえマルチバイトバッファであっても、 128から255のユニバイト文字コードはマルチバイト文字には変換しない。 see Converting Representations

inheritnil以外であると、挿入された文字は、 挿入箇所の前後の2つの文字からスティッキテキスト属性を継承する。

— Function: 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 ----------

挿入に加えて周りのテキストからテキスト属性を継承する他の関数については、 See Sticky Properties。 字下げ関数が挿入した白文字もテキスト属性を継承します。