Xのようなウィンドウシステムでは、異なるアプリケーション間のデータ転送は選択(selections)により行われます。ウィンドウシステムはそれぞれ任意の数の選択タイプ(selection types)を定義し、すべてのウィンドウシステムが独自にデータを格納できますが、一般的に使用されるのはクリップボード(clipboard)、プライマリー選択(primary selection)、セカンダリー選択(secondary selection)の3つだけです。これら3つの選択を使用するEmacsコマンドについてはCut and Paste in The GNU Emacs Manualを参照してください。このセクションではウィンドウシステムによる選択の読み取りとセットを行う低レベル関数について説明します。特定のウィンドウシステムにおける選択タイプとデータフォーマットについては選択へのアクセスを参照してください。
この関数はウィンドウシステムの選択をセットする。これは選択タイプtype、それに割り当てる値dataという2つの引数を受け取る。
typeはシンボルであること。通常はPRIMARY、SECONDARY、CLIPBOARDのいずれかである。これらは一般的にはXウィンドウシステムの慣例に対応する大文字のシンボル名である。typeがnilならそれはPRIMARYを意味する。
dataがnilなら、それはその選択をクリアーすることを意味する。それ以外ならdataは文字列、シンボル、整数、オーバーレイ、同じバッファーを指す2つのマーカーのコンスを指定できる。オーバーレイとマーカーのペアは、そのオーバーレイまたはマーカー間のテキストを意味する。引数dataには有効な非ベクターの選択のベクターも指定できる。
dataが文字列なら、そのテキストプロパティによって個々のデータタイプに使用する値を指定できる。たとえばdataがtext/uri-listという名前のテキストプロパティを保有していれば、データタイプtext/uri-listとともにgui-get-selectionを呼び出すことによって、data自身のかわりにそのプロパティの値が使用される。
この関数はdataをリターンする。
この関数はEmacsや他のプログラムによりセットアップされた選択にアクセスする。これはtypeとdata-typeの2つの引数を受け取る。typeは選択のタイプでありデフォルトはPRIMARY。
data-type引数は別プログラムからLispデータに取得したrawデータの変換に用いるデータ変換のフォームを指定する。Xで有効なデータタイプの一覧はX選択、それ以外についてはその他の選択を参照のこと。
これは選択データのエンコーディングに用いるコーディングシステム(コーディングシステムを参照)を提供する変数であり、MS-WindowsおよびXで効果がある。MS-Windowsで実行中のMS-DOSポートでも用いられ、Windowsのクリップボードのテキストにアクセスできる。
Xではこの変数の値はテキストデータタイプのサブセットにたいする選択データのデコードに用いられる、gui-get-selectionのコーディングシステムを提供する。ポリモーフィックTEXTデータタイプ(polymorphic
type:
多様型)にたいする選択要求にたいして、Unicodeではなくcompound-text-with-extensionsによるエンコーディングで応答するよう強制も行う。
MS-Windowsではクリップボードデータの一部としてMS-Windowsのクリップボードがデコーディングに関する情報を提供する上、必要に応じてUTF-16かlocale固有のエンコーディングが自動的に使用されるので、この変数は一般的には無視される。わたしたちは古いWindows 9Xでのみこの変数の値をセットすることをお勧めする。それ以外で使用するとしたら、クリップボードが提供する情報が何らかの理由により使用できないような、非常に稀な場合だけだろう。
この変数のデフォルト値はMS-Windows 95、98、Meではシステムコードページ、 Windows
NT/W2K/XP/Vista/7/8/10/11ではutf-16le-dos、MS-DOSではiso-latin-1-dos、それ以外の場合はnil。
後方互換性のためにgui-get-selectionとgui-set-selectionにたいして、Emacs
25.1以前の名前x-get-selectionとx-set-selectionが時代遅れのエイリアスとして存在します。