2012-03-30 5 views
4

In CEDET zeigt der untergeordnete Modus semantic-idle-summary-mode Informationen über das Symbol unter Punkt im Echobereich an. Ich mag diesen Modus sehr, da er mir zum Beispiel hilft zu erinnern, welche Argumente die Funktion, die ich anrufe, benötigt.Ändern, wo die semantische Zusammenfassung angezeigt wird

Das Problem ist, es ist ein wenig Buggy über die Anzeige im Echobereich. Da es automatisch aktiviert wird, wenn sich ein Symbol unter einem Punkt befindet, versteckt es manchmal nützliche Informationen, die im Echobereich angezeigt werden (schließlich ist dies der Bereich, in dem emacs Ihnen Dinge erzählt).

Gibt es eine Möglichkeit, die Zusammenfassungsinformationen woanders anzuzeigen? Ein Tooltip wäre ideal, aber einer der ecb-Frames ist auch akzeptabel.

+0

+1 Ich musste es auch wissen. – kindahero

Antwort

0

Das erste, was Ihnen in den Sinn kommt, ist die Variable tooltip-use-echo-area, die steuert, wo/wie Tooltips angezeigt werden. Bei Einstellung auf t werden alle QuickInfos im Echobereich angezeigt. Welchen Wert hat Ihr System? Vielleicht wäre es möglich, Cedet zu zwingen, aktuelle (Pop-up-) Tooltips zu verwenden, indem man diese Variable auf Null setzt.

0

semantic-idle-summary-mode verwendet die Funktion eldoc-message und einige andere eldoc-Abfragen, um zu bestimmen, wann Nachrichten angezeigt werden sollen. Dies bedeutet, dass es ziemlich gut sein sollte, nützliche Informationen nicht zu verdecken.

Da eldoc der bevorzugte Modus für die Bereitstellung ähnlicher zusammenfassender Informationen in Emacs Lisp-Puffern ist, würde die beste Sache wäre, eldoc zu konfigurieren, aber ich sah keine Möglichkeit, dies zu tun, da eldoc-message konfiguriert konfiguriert ist, immer Nachricht zu rufen.

Wie auch immer das ist, Sie können defadvice verwenden, um eldoc-message zu überschreiben, um einen Tooltip zu verwenden, und Sie werden Ihre Lösung haben.

Der folgende Snippit ist eine Vermutung, wie man defadvice verwendet, aber ich habe es nicht versucht.

(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))) 
) 
0

Ich hatte ein ähnliches Bedürfnis, wie Sie, und ich adressiert es mit diesem extension.

Wie Sie auf diesem screenshot, sehen können, zeigt es die Funktionsargumente an der Stelle seines Aufrufs, ohne den Echobereich zu ändern.

Einige nette Features sind:

  1. Zeigt Ihnen alle überladenen Funktionen, einschließlich der Konstrukteurs angemessen wo.
  2. Highlights in Fettdruck das aktuelle Argument.
  3. Sprung zur Definitionsfunktionalität für die aktuelle Funktionsvariante.