4

CEDET では、マイナー モードsemantic-idle-summary-modeは、エコー領域のポイントの下にあるシンボルに関する情報を表示します。私はこのモードがとても気に入っています。たとえば、呼び出している関数がどの引数を必要としているかを覚えておくのに役立つからです。

問題は、エコー領域での表示について少しバグがあることです。ポイントの下にシンボルがある場合は常に自動的にアクティブになるため、エコー領域に表示されている有用な情報が隠されることがあります (結局のところ、これは emacs が情報を伝えるために使用する領域です)。

要約情報を別の場所に表示する方法はありますか? ツールチップが理想的ですが、ecb フレームの 1 つも使用できます。

4

3 に答える 3

0

semantic-idle-summary-mode関数eldoc-messageと他のいくつかのeldocクエリを使用して、メッセージを表示するタイミングを決定します。これは、有用な情報を隠さないのがかなり得意であることを意味します。

eldoc-messageeldocはEmacsLispバッファーで同様の要約情報を提供するための推奨モードであるため、eldocを構成するのが最善ですが、常にメッセージを呼び出すように構成されているように見えるため、それを行う方法がわかりませんでした。

とにかく、それが意味するのは、ツールチップを使用するdefadviceためにオーバーライドするために使用できるというeldoc-messageことです。そうすれば、ソリューションが得られます。

以下の抜粋は、defadviceの使用方法の推測ですが、私は試してみませんでした。

(defadvice eldoc-message (around bruce-mode activate)
  "Make eldoc display messages as a tooltip."
  (if (some condition that means I want to use a tooltip)
      (bruce-eldoc-message (ad-get-arg 0))
    ad-do-it))

(require 'tooltip)

(defun bruce-eldoc-message (&rest args)
  "My version of displaying a message for eldoc."
  (if (null (cdr args))
      ;; One argument
      (tooltip-show (car args))
    ;; Else, use format
    (tooltip-show (apply 'format args)))
  )
于 2012-04-03T00:50:04.930 に答える
0

私はあなたと同様のニーズがあり、この拡張機能で対処しました。

このスクリーンショットでわかるように、エコー領域を変更せずに、呼び出しの時点で関数の引数を示しています。

いくつかの優れた機能は次のとおりです。

  1. 必要に応じてコンストラクターを含む、オーバーロードされたすべての関数を表示します。
  2. 現在の引数を太字で強調表示します。
  3. 現在の機能バリアントの定義機能にジャンプします。
于 2013-07-21T15:56:52.640 に答える
0

最初に頭に浮かぶのは、tooltip-use-echo-areaツールチップがどこにどのように表示されるかを制御する変数です。に設定するとt、すべてのツールチップがエコー領域に表示されます。あなたのシステムでのその価値は何ですか? その変数を nil に設定することで、cedet に実際の (ポップアップ) ツールチップを使用させることができるかもしれません。

于 2012-03-31T10:39:07.110 に答える