これらの関数や変数は、より低レベルでキルリングへのアクセスを提供しますが、ウィンドウシステムの選択とのやり取りを処理してくれるため、Lispプログラムにおいても便利に利用できます(ウィンドウシステムの選択を参照)。
関数 current-kill は、キルリングの先頭を示すヤンクポインタを n 箇所分(新しいキルから古いキルへ)回転させ、リング内のその位置にあるテキストを返します。
オプションの第2引数 do-not-move が nil 以外の場合、current-kill
はヤンクポインタを変更せず、現在のヤンクポインタから数えて n 番目のキルを返すだけです。
n が 0 で、最新のキルを要求していることを示す場合、current-kill はキルリングを参照する前に interprogram-paste-function
の値(後述)を呼び出します。その値が関数であり、呼び出した結果が文字列または複数の文字列のリストである場合、current-kill はそれらの文字列をキルリングにプッシュし、最初の文字列を返します。また、do-not-move の値にかかわらず、ヤンキングポインタを interprogram-paste-function
によって返された最初の文字列のキルリングエントリを指すように設定します。それ以外の場合、current-kill は n の値が 0
であっても特別な処理は行わず、ヤンキングポインタが指すエントリを返し、ヤンキングポインタは移動しません。
この関数は、テキスト string
をキルリングにプッシュし、ヤンクポインタをそれに向けます。必要に応じて、最も古いエントリを破棄します。また、interprogram-paste-function(ユーザーオプション save-interprogram-paste-before-kill に従う)および interprogram-cut-function(後述)の値を呼び出します。
replace が nil でない場合、kill-new は string
をキルリングにプッシュするのではなく、キルリングの先頭要素を string で置き換えます。
この関数は、キルリングの先頭エントリにテキスト string
を追記し、ヤンクポインタを統合後のエントリに向けます。通常、string
はエントリの末尾に配置されますが、before-p が nil 以外の場合は先頭に配置されます。この関数は kill-new をサブルーチンとして呼び出すため、これにより interprogram-cut-function および場合によっては interprogram-paste-function(後述)の値が拡張機能によって呼び出されます。
この変数は、ウィンドウシステムを使用している際に、他のプログラムからキルされたテキストを転送するための手段を提供します。その値は nil または引数を取らない関数である必要があります。
値が関数の場合、current-kill はその関数を呼び出して直近のキルを取得します。関数が
nil 以外の値を返した場合、その値が直近のキルとして使用されます。nil を返した場合は、キルリングの先頭が使用されます。
複数選択をサポートするウィンドウシステムへの対応を容易にするため、この関数は文字列のリストを返す場合もあります。その場合、最初の文字列が直近のキルとして扱われ、それ以外のすべての文字列は
yank-pop から容易にアクセスできるようキルリングにプッシュされます。
この関数の一般的な用途は、選択範囲が別のアプリケーションに属している場合でも、ウィンドウシステムのクリップボードを直近のキル内容として取得することです。ウィンドウシステムの選択範囲を参照してください。ただし、クリップボードの内容が現在のEmacsセッションに由来する場合、この関数はnilを返す必要があります。
この変数は、ウィンドウシステムを使用している際に、終了したテキストを他のプログラムに通知するための手段を提供します。その値は nil または1つの必須引数をとる関数である必要があります。
値が関数の場合、kill-new と kill-append は、キルリングの新しい先頭要素を引数としてその関数を呼び出します。
この関数の一般的な用途は、新たに削除したテキストをウィンドウシステムのクリップボードに格納することです。ウィンドウシステムの選択を参照してください。