GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Making-Buttons.html ・ emacs-doc.conao3.com

42.20.3 ボタンの作成

ボタンはテキスト領域に関連付けられており、オーバーレイやテキストプロパティを用いてボタン固有の情報を保持します。これらはすべて、ボタンのタイプ(デフォルトは組み込みのボタンタイプ button)から初期化されます。他のすべてのEmacsテキストと同様に、ボタンの外観は face プロパティによって制御されます。デフォルトでは(button ボタンタイプから継承された face プロパティにより)、これは一般的なウェブページのリンクのようなシンプルな下線となります。

便宜上、ボタン作成関数には、バッファの既存領域にボタンプロパティを追加するmake-...buttonと、ボタンテキストも併せて挿入するinsert-...buttonの2種類があります。

The button-creation functions all take the &rest argument properties, which should be a sequence of property value pairs, specifying properties to add to the button; see Button Properties. In addition, the keyword argument :type may be used to specify a button-type from which to inherit other properties; see Button Types. Any properties not explicitly specified during creation will be inherited from the button’s type (if the type defines such a property).

以下の関数は、ボタンのプロパティを保持するためのオーバーレイ(オーバーレイを参照)を使用してボタンを追加します。

関数: make-button beg end &rest properties

これにより、現在のバッファ内に beg から end までのボタンが作成され、それが返されます。

関数: insert-button label &rest properties

これは、ポイントに label というラベルのボタンを挿入し、それを返します。

以下の関数は似ていますが、ボタンのプロパティを保持するためにテキストプロパティ(テキストプロパティを参照)を使用します。このようなボタンはバッファにマーカーを追加しないため、ボタンの数が極めて多くても、バッファ内での編集が遅くなることはありません。ただし、テキストに既存のフェイステキストプロパティ(例:Font Lockモードによって割り当てられたフェイス)がある場合、ボタンのフェイスが表示されないことがあります。これら両方の関数は、新しいボタンの開始位置を返します。

関数: make-text-button beg end &rest properties

これにより、テキストプロパティを使用して、現在のバッファ内に beg から end までのボタンが作成されます。

関数: insert-text-button label &rest properties

これにより、テキストプロパティを用いて、ポイントに label というラベルのボタンが挿入されます。

関数: buttonize string callback &optional data

バッファに即座に挿入することなく、文字列をボタンとして作成する方が便利な場合があります。例えば、後でバッファに挿入される可能性のあるデータ構造を作成する場合などです。この関数は string をそのような文字列に変換し、ユーザーがボタンをクリックすると callback が呼び出されます。オプションの data パラメータは、callback が呼び出される際のパラメータとして使用されます。nil が指定されている場合は、代わりにボタンがパラメータとして使用されます。

関数: buttonize-region start end callback &optional data help-echo

新しいテキストを挿入するよりも、バッファ内の既存のテキストをボタンに変換する方が便利な場合があります。この関数は、start と end の間の領域をボタンに変換します。引数 callback と data の意味は buttonize と同様です。オプション引数 help-echo は、ボタンの help-echo プロパティとして使用されます。

関数: unbuttonize-region start end

この関数は、現在のバッファ内にある start から end までのすべてのボタン(オーバーレイおよびテキストプロパティの両方)を削除します。