Next: , Previous: , Up: The Kill Ring   [Contents][Index]


31.8.4 yankのための関数

このセクションではyank用の高レベルなコマンドを説明します。これらのコマンドは主にユーザー用に意図されたものですが、Lispプログラム内での使用にたいしても有用です。yankyank-popはいずれも、変数yank-excluded-propertiesとテキストプロパティyank-handlerにしたがいます(Yankingを参照)。

Command: yank &optional arg

このコマンドはkillリングの先頭にあるテキストをポイントの前に挿入する。これはpush-mark(The Markを参照)を使用して、そのテキストの先頭にマークをセットする。

argが非nilのリスト(これはユーザーがインタラクティブに数字を指定せずにC-uタイプ時に発生する)なら、yankは上述のようにテキストを挿入するがポイントはyankされたテキストの前、マークはyankされたテキストの後に置かれる。

argが数字ならyankarg番目に最近killされたテキスト、すなわちkillリングリストのarg番目の要素を挿入する。この順番はコマンドの目的にたいして1番目の要素としてみなされるリスト先頭の要素から巡回的に数えられる。

yankは、それが他のプログラムから提供されるテキストを使用しないかぎり(使用する場合はそのテキストをkillリングにpushする)、killリングのコンテンツを変更しない。しかしargが非1の整数なら、killリングを転回(rotate)してyankされるテキストをリング先頭に置く。

yanknilをリターンする。

Command: yank-pop &optional arg

このコマンドはkillリング上の正にyankされたばかりのエントリーをkillリングの別エントリーで置き換える。

このコマンドはyankか別のyank-popの直後のみ許される。そのような際にそのリージョンには、yankにより正に挿入されたテキストが含まれる。yank-popはそのテキストを削除して、killされた別のテキスト片をその位置に挿入する。そのテキスト片はすでにkillリング内のどこか別の箇所にあるので、これは削除されたテキストをkillリングに追加しない。しかし新たにyankされたテキストが先頭になるように、killリングの転回は行う。

argnilなら置換テキストはkillリングの1つ前の要素。argが数字なら置換テキストはkillリングのarg個前の要素である。argが負なら、より最近のkillが置換される。

killリング内のkillされたエントリーの順序はラップする。すなわちもっとも古いkillの次にもっとも新しいkill、もっとも新しいkillの前はもっとも古いkillとなる。

リターン値は常にnilである。

Variable: yank-undo-function

この変数が非nilなら、関数yank-popは前のyankyank-popにより挿入されたテキストを削除するために、delete-regionのかわりにこの変数の値を使用する。値はカレントリージョンの開始と終了という2つの引数をとる関数でなければならない。

関数insert-for-yankはテキストプロパティyank-handlerの要素undoに対応して、この変数を自動的にセットする。