2012-03-30 38 views
4

在CEDET中,次要模式semantic-idle-summary-mode显示有关echo区域中点下的符号的信息。我非常喜欢这种模式,因为它有助于我记住,例如,我正在调用的函数需要哪些参数。更改显示语义摘要的位置

问题是,这是一个有关显示在回声区域的小错误。由于每当点下有符号时它都会自动激活,它有时会隐藏在echo区域中显示的有用信息(毕竟,这是emacs用来告诉你的东西的区域)。

有没有办法在其他地方显示摘要信息?工具提示是理想的,但ecb框架之一也是可以接受的。

+0

+1我需要知道为好。 – kindahero 2012-03-31 05:58:50

回答

0

首先想到的是变量tooltip-use-echo-area,它控制显示工具提示的位置/方式。设置为t时,所有工具提示都会显示在回声区中。它在你的系统上的价值是什么?也许可以强制cedet通过将该变量设置为零来使用实际(弹出式)工具提示。

0

semantic-idle-summary-mode使用函数eldoc-message和一些其他eldoc查询来确定何时显示消息。这意味着它不应该遮盖有用的信息。

由于eldoc是在Emacs Lisp缓冲区中提供类似摘要信息的首选模式,所以最好的办法是配置eldoc,但我没有找到办法做到这一点,因为eldoc-message看起来被配置为始终调用消息。

无论如何,这意味着您可以使用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))) 
) 
0

我也有类似的需求,因为你, 我这个extension解决它。

正如你可以在这个screenshot, 中看到的那样,它在调用时显示函数参数,而不改变回声区域。

一些整齐的特点是:

  1. 显示所有重载函数,包括构造在适当情况下。
  2. 亮点粗体当前参数。
  3. 跳转到定义功能的当前功能的变体。