Emacsの入力フィールド用のライブラリはありますか?


10

かなりの数のEmacsモードが(何かに似た)フォームを使用します。カスタマイズインターフェイスはその1つであり、メッセージモード(読み取り:ヘッダー部分)は別のモードです。それらはもっとたくさんありますが、残念ながらいつも似ているわけではありません。「フォーム」とは、ここでは、テキストを入力するように指定された読み取り専用の部分と場所を持つバッファを意味します。ボタンが含まれている場合と含まれていない場合があります([ OK ]ボタンのC-c C-c有無に関係なく、確認/コミットキーとして受け入れる必要があります)。

私は特にフィールドのオートコンプリートに興味があります(特に、指定されたセットからの値のリストを使用してフィールドを有効にする、たとえばコンマ区切り)。私の質問は、そのようなフォームを簡単に(「簡単に」、つまり再発明しないという意味で)作成できるEmacsライブラリがあるか、それともすべて自分でコーディングする必要があるか?

(後者の場合にすべきことは、(1)バッファーの一部を読み取り専用に設定する、(2)特別なメジャーモードを準備して、たとえば「フィールド」TABS-TAB切り替える、(3)オートコンプリートには、おそらくIciclesやHelmなどを使用してください。)


1
タイトルを入力フィールドと言うように変更しました。フォームはelispでは非常に特別な意味を持ち、混乱を招く可能性があります。
Malabarba 2014年

2
そして、はい、ビルトインウィジェットライブラリがあります。しかし、私はそれについて何も知りません。
Malabarba 2014年

@Malabarba:ありがとう、多分もっと良い言い回しだろう。
mbork 2014年

(Emacs自体がこの意味で「フォーム」という単語を使用していますが、Drewの回答に記載されているウィジェットのマニュアルを参照してください!)
mbork

回答:


8

ライブラリを参照cus-edit.elし、wid-edit.el(およびそれらのトップレベルライブラリcustom.elwidget.elGNU Emacsのに含まれており、関連するコンポーネントライブラリ)。前者は後者を利用します。後者は、「ウィジェット」と呼ばれる基本的な(そしてそれほど基本的ではない)フォームエントリを階層的に定義します。ライブラリのこれらの事前定義されたウィジェットと関数を使用して、独自のウィジェットとウィジェットタイプを作成できます。

ただし、これらのライブラリのコード、特にのコードを理解するのは簡単wid-edit.elではないことに注意してください。あなたの最善の策は、既存のウィジェットを再利用するか、既存のウィジェット定義コードをガイドとして使用することから始めることです。

(このための2つのマイナー拡張ライブラリはcus-edit+.elおよびwid-edit+.elです。これらはいくつかの使用例も示しています。)

GNU Emacsで配布されている「Emacs Widget Library」というタイトルのウィジェットのInfoマニュアルがあります。

ライブラリもありforms.el、GNU Emacsに含まれていますが、私はよく知りません。たぶん他の誰かがそれについて何か言いたいことがあるでしょう。GNU Emacsで配布されている、「フォームモード」というタイトルのフォームのマニュアルがあります



1
@Drew:回答ありがとうございます!\(custom\|widget\).el\(cus\|wid\)-edit.el少しの関係を明確にしていただけませんか?特に、この部分はウィジェットのマニュアルでは理解できません(require 'widget) (eval-when-compile (require 'wid-edit))
mbork 2014年

1
まず、私はこれについての専門家ではありません。私はカスタマイズI WRT何かを変更するのに必要な時間はに浸漬cus-edit.elしてwid-edit.el。あなたが言及する他のファイルはトップレベルのファイルです。*-edit.elファイルは、私が興味を持ったことのコードを持っている知らんはるかにそれよりも。ごめんなさい。実際の難しさは、コード自体です。これは、Emacsセルフドキュメント(控えめに言うと)またはEmacsデバッガーには適さない特定のセミOOPスタイルを使用しています。自分で調査することも、作者に連絡することもできます(頑張ってください!)。多分ここに他の人がいくつかの助けになります。
2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.