このセクションではyank用の高レベルなコマンドを説明します。これらのコマンドは主にユーザー用に意図されたものですが、Lispプログラム内での使用にたいしても有用です。yank
とyank-pop
はいずれも、変数yank-excluded-properties
とテキストプロパティyank-handler
にしたがいます(yankを参照)。
このコマンドはkillリングの先頭にあるテキストをポイントの前に挿入する。これはpush-mark
(マークを参照)を使用して、そのテキストの先頭にマークをセットする。
argが非nil
のリスト(これはユーザーがインタラクティブに数字を指定せずにC-uタイプ時に発生する)なら、yank
は上述のようにテキストを挿入するがポイントはyankされたテキストの前、マークはyankされたテキストの後に置かれる。
argが数字ならyank
はarg番目に最近killされたテキスト、すなわちkillリングリストのarg番目の要素を挿入する。この順番はコマンドの目的にたいして1番目の要素としてみなされるリスト先頭の要素から巡回的に数えられる。
yank
は、それが他のプログラムから提供されるテキストを使用しないかぎり(使用する場合はそのテキストをkillリングにpushする)、killリングのコンテンツを変更しない。しかしargが非1の整数なら、killリングを転回(rotate)してyankされるテキストをリング先頭に置く。
yank
はnil
をリターンする。
yank
や別のyank-pop
の直後に呼び出されると、このコマンドはkillリングからyankしたばかりのエントリーを、killリングの別のエントリーに置き換える。このようにコマンドが呼び出されたときは、リージョンには別のyankコマンドが挿入したばかりのテキストが含まれる。yank-pop
はそのテキストを削除して、killされた別のテキスト片をその位置に挿入する。そのテキスト片はすでにkillリング内のどこか別の箇所にあるので、これは削除されたテキストをkillリングに追加しない。しかし新たにyankされたテキストが先頭になるように、killリングの転回は行う。
argがnil
なら置換テキストはkillリングの1つ前の要素。argが数字なら置換テキストはkillリングのarg個前の要素である。argが負なら、より最近のkillが置換される。
killリング内のkillされたエントリーの順序はラップするので、繰り返しyank-pop
を呼び出してもっとも古いkillに達すると、その後はもっとも新しいkillとなり、もっとも新しいkillの前がもっとも古いkillとなる。
このコマンドはyank以外のコマンドの後でも呼び出せる。この場合にはミニバッファーでkillリングエントリーにたいする入力を求めて、ミニバッファーヒストリー(ミニバッファーのヒストリーを参照)としてkillリング要素を使用する。これによりユーザーはkillリング内に記録されている以前のkillをインタラクティブに選択できる。
リターン値は常にnil
である。
この変数が非nil
なら、関数yank-pop
は前のyank
やyank-pop
により挿入されたテキストを削除するために、delete-region
のかわりにこの変数の値を使用する。値はカレントリージョンの開始と終了という2つの引数をとる関数でなければならない。
関数insert-for-yank
はテキストプロパティyank-handler
の要素undoに対応して、この変数を自動的にセットする。