私がやっていること
現在、swipl-win ウィンドウにタブ補完機能を追加する SWI-Prolog モジュールの作成に取り組んでいます。これまでのところ、タブ文字が入力されるまで何も停止/返さずに、一度に1文字ずつ読み取るところまで実際に到達しました。current_functor/2
また、現在の用語のリスト ( 、current_arithmetic_function/1
、current_predicate/2
などを介して取得される [使用される述語は最終的にはコンテキストに基づく]) の部分文字列一致を使用して、不完全に型付けされた用語の可能なすべての補完を返す述語を既に作成しました。
私のコードを見たい場合は、ここにあります...私はまだPrologの達人ではないことを覚えておいてください(親切なヒントは大歓迎です)。
私が考えていること
XPCE を使用して swipl-win ウィンドウで popup-dropdown-completion を実行することは、長い間断念してきました (最終的には、これを Pce-Emacs に取り込もうとします [Visual Studio ほど洗練されたものにはなりません --picture PythonのIDLEに似たもの]ですが、最近では実際のEmacsをより多く使用し始めているため、それが本当に実用的かどうかはわかりません)が、swipl-winウィンドウで出力色を変更する方法はありますか? ? 構文の強調表示が他の Prolog システムのコマンド プロンプト ウィンドウに既に実装されていることは知っていますが、tabber.pl が補完を提案したときにアリティ (およびおそらく部分的に残りの部分) も表示されるようにしたいだけです。入力された用語) が明るい灰色で表示されます。システムからのカラー出力が既にあることは知っていますが (起動時のように)、出力を自分で制御するためにフックする方法がわかりません。(明らかに、私はおそらく定義しますprint/1
が...) ある人が C# で行ったように、独自の SWI-Prolog コンソールを作成できることは知っていますが、(私を含む) 人々がどこかに tabber モジュールをロードできるように、それが本当に欲しかったのです。完全に異なる実行可能ファイルにするのではなく、構成ファイルでswipl-winウィンドウを引き続き使用します...ある種のC APIを使用する必要がありますか?
注:実際の実装は、この質問 に対する回答によって影響を受ける可能性があります。これは、このプロジェクトでの文字列やアトムの使用に基づいて決定を下すためです。
私が求めていること
swipl-winウィンドウで出力を色付けするために実装できる方法や何か(それが本当に低レベルであっても)はありますか?