この節では、テキストを挿入するための上位レベルのコマンドや、主にユーザー向けでありながらLispプログラムにおいても有用なコマンドについて説明します。
このコマンドは、from-buffer-or-name(存在している必要があります)のアクセス可能な内容全体を、ポイント以降の現在のバッファに挿入します。挿入されたテキストの後にマークを残します。値はnilとなります。
このコマンドは、文字 char(最後に入力された文字)を挿入します。ポイントより前で count 回この処理を行い、nil
を返します。ほとんどの印刷文字はこのコマンドにバインドされています。日常的な使用において、self-insert-command は Emacs
で最も頻繁に呼び出される関数ですが、キーマップに設定する場合を除き、プログラムがこれを使用することは稀です。
インタラクティブコールにおいて、countは数値のプレフィックス引数です。
自己挿入では、入力文字をtranslation-table-for-input経由で変換します。文字の変換を参照してください。
This command calls auto-fill-function whenever
that is non-nil and the character inserted is in
the table auto-fill-chars (see Auto Filling).
このコマンドは、Abbrevモードが有効で、挿入された文字が単語構成要素の構文を持たない場合に、略語展開を行います。(略語と略語展開、および構文クラス表を参照してください。)また、挿入された文字が閉じ括弧の構文を持つ場合にblink-paren-functionを呼び出す役割も担っています(点滅する括弧を参照してください)。
このコマンドが最後に行う処理は、フック post-self-insert-hook
の実行です。例えば、これを利用して、テキストの入力に合わせて自動的にインデントを再設定するといった使い方ができます。このフック内の関数では、last-command-event(コマンドループからの情報を参照)を使用して、直前に挿入された文字にアクセスできます。
このフック内の関数でリージョン(リージョンを参照)を操作する必要がある場合は、post-self-insert-hook 関数が呼び出される前に、Delete Selection
モード(The GNU Emacs Manual の Delete
Selection を参照)がリージョンを削除しないようにする必要があります。その方法は、nil から self-insert-uses-region-functions
を返す関数を追加することです。これは、Delete Selection モードに対してリージョンを削除しないよう指示する特殊なフックとなります。
標準の self-insert-command
を独自の定義で置き換えようとしないでください。エディタのコマンドループでは、この関数を特別に処理しています。
このコマンドは、ポイントより前の現在のバッファに改行を挿入します。number-of-newlines を指定すると、その数だけ改行文字が挿入されます。対話的な呼び出しでは、number-of-newlines は数値のプレフィックス引数となります。
このコマンドは self-insert-command
を呼び出して改行を挿入しますが、これによりその後 auto-fill-function
が呼び出され、直前の行が途切れることがあります(自動補完
を参照)。通常、auto-fill-function
は改行を挿入します。したがって、この場合の全体的な結果として、異なる2箇所(ポイントと、行のより前の位置)にそれぞれ改行が挿入されます。number-of-newlines が nil
でない場合、newline は自動補完を行いません。
このコマンドは、対話的に呼び出された場合、または interactive が nil でない場合を除き、フック post-self-insert-hook を実行しません。
このコマンドは、左マージンが0でない場合に左マージンに合わせてインデントします。余白の設定を参照してください。
返される値は nil です。
このコマンドを使用すると、ポイントの前に指定した数の空行があることを確実にできます。(ここでの「空行」とは、文字が一切含まれていない行と定義されます。スペース文字が含まれる行は空行ではありません。)デフォルトでは、ポイントの前に1行の空行があることが保証されます。
ポイントが行頭にない場合、まず改行文字が挿入されます。ポイントの前に指定数より多い空行がある場合は、空行の数が減らされます。そうでない場合は、指定数まで増やされます。
この変数は、上書きモードが有効かどうかを制御します。値は overwrite-mode-textual、overwrite-mode-binary、または nil
のいずれかである必要があります。overwrite-mode-textual
はテキスト上書きモード(改行やタブを特別に扱う)を指定し、overwrite-mode-binary
はバイナリ上書きモード(改行やタブを他の文字と同様に扱う)を指定します。