本節では、主にユーザー向けでありながら、Lispプログラムにおいても有用な、ヤンク用の上位レベルコマンドについて説明します。yank と yank-pop はいずれも、変数 yank-excluded-properties とテキストプロパティ yank-handler に従います(ヤンク を参照)。
このコマンドは、キルリングの先頭にあるテキストをポイントの前に挿入します。push-mark(マークを参照)を用いてそのテキストの先頭にマークを設定し、ポイントを末尾に配置します。
arg が nil
以外のリストである場合(ユーザーが数字を含まずに C-u
と入力した際にインタラクティブに発生します)、yank
は上述の通りにテキストを挿入しますが、ポイントをヤンクしたテキストの前に置き、マークをその後ろに設定します。
arg が数値の場合、yank は直近に削除された
arg 番目のテキスト――先頭から循環的に数えてキルリングリストの arg 番目の要素(この目的においては最初の要素とみなされる)――を挿入します。
yank
は、別のプログラムから提供されたテキストを使用している場合を除き、キルリングの内容を変更しません。その場合、当該テキストをキルリングにプッシュします。ただし、arg が 1 以外の整数である場合、キルリングを回転させてヤンクした文字列を先頭に配置します。
yank は nil を返します。
yank または別の yank-pop
の直後にこのコマンドを呼び出すと、キルリングから直前にヤンクされたエントリを、キルリング内の別のエントリで置き換えます。このようにコマンドを呼び出した場合、リージョンには別のヤンクコマンドによって挿入されたばかりのテキストが含まれています。yank-pop
はそのテキストを削除し、代わりにキルリング内の別のテキストを挿入します。削除されたテキストはすでにキルリングのどこかに存在するため、キルリングに追加することはありません。ただし、新しくヤンクされた文字列を先頭に配置するため、キルリングを回転させます。
arg が nil
の場合、置換テキストはキルリングの直前の要素となります。arg が数値の場合、置換内容は arg 番目の直前のキルとなります。arg
が負の値の場合、より最近のキルが置換内容となります。
キルリングのキル順は循環するため、yank-pop
が繰り返し呼び出されて最古のキルに到達した場合、その後に続くものが最新となり、最新のキルの直前にあるものが最古となります。
このコマンドは、ヤンクコマンドではないコマンドの後でも実行できます。その場合、ミニバッファにキルリングのエントリを補完付きでプロンプト表示し、キルリングの要素をミニバッファの履歴として使用します(ミニバッファ履歴を参照)。これにより、ユーザーはキルリングに記録された過去のキル履歴の中から、対話的に一つを選択できます。
戻り値は常に nil です。
この変数が nil 以外の場合、関数 yank-pop は delete-region
の代わりにその値を使用して、直前の yank または yank-pop
コマンドで挿入されたテキストを削除します。この値は、現在の領域の開始位置と終了位置という2つの引数をとる関数である必要があります。
関数 insert-for-yank は、yank-handler テキストプロパティに undo
要素が存在する場合、それに応じてこの変数を自動的に設定します。