Next: Yank Commands, Previous: Kill Functions, Up: The Kill Ring [Contents][Index]
yankとはkillリングからテキストを挿入しますが、それが単なる挿入ではないことを意味します。yankとそれに関連するコマンドは、テキスト挿入前に特別な処理を施すためにinsert-for-yankを使用します。
この関数はinsertと同様に機能するが、結果をカレントバッファーに挿入する前にテキストプロパティyank-handler、同様に変数yank-handled-propertiesとyank-excluded-propertiesに応じてstring内のテキストを処理する点が異なる。
この関数はinsert-buffer-substringと似ているが、yank-handled-propertiesとyank-excluded-propertiesに応じてテキストを処理する点が異なる(これはyank-handlerプロパティを処理しないが、いずれにせよバッファー内のテキストでは通常は発生しない)。
文字列の一部またはすべてにテキストプロパティyank-handlerをputすると、insert-for-yankが文字列を挿入する方法が変更されます。文字列の別の箇所が異なるyank-handlerの値をもつ場合(比較はeq)、部分文字列はそれぞれ個別に処理されます。プロパティ値は以下の形式からなる1から4要素のリストでなければなりません(2番目以降の要素は省略可):
(function param noexclude undo)
これらの要素が何を行うかを以下に示します:
functionが非nilなら、insertのかわりに文字列を挿入するために、挿入する文字列を単一の引数として、その関数が呼び出される。
非nilのparamが与えられた場合には、それはstring
(または処理されるstringの部分文字列)を置き換えるオブジェクトとしてfunction
(またはinsert)に渡される。たとえばfunctionがyank-rectangleなら、paramは矩形(rectangle)として挿入されるべき文字列のリスト。
非nilのnoexcludeが与えられたら、挿入される文字列にたいするyank-handled-propertiesとyank-excluded-propertiesの通常の動作を無効にする。
非nilのundoが与えられたら、それはカレントオブジェクトの挿入をundoするためにyank-popが呼び出す関数。この関数はカレントリージョンのstartとendという2つの引数で呼び出される。functionはyank-undo-functionをセットすることによりundoの値をオーバーライドできる。
この変数はyankされるテキストの状態を処理するスペシャルテキストプロパティを指定する。これは(通常の方法、またはyank-handlerを通じた)テキストの挿入後、yank-excluded-propertiesが効力をもつ前に効果を発揮する。
値は要素が(prop
.
fun)であるようなalistであること。alistの各要素は順番に処理される。挿入されるテキストはテキスト範囲にたいして、テキストプロパティがpropとeqなものがスキャンされる。そのような範囲にたいしてプロパティの値、そのテキストの開始と終了の位置という3つの引数によりfunが呼び出される。
この変数の値は挿入されるテキストから削除するためのプロパティのリスト。デフォルト値にはマウスに応答したりキーバインディングの指定を引き起こすテキストのような、煩わしい結果をもたらすかもしれないプロパティが含まれる。これはyank-handled-propertiesの後に効果を発揮する。