更改显示语义摘要的位置

时间:2012-03-30 15:00:41

标签: emacs cedet

在CEDET中,次要模式semantic-idle-summary-mode显示有关回波区域中点下符号的信息。我真的很喜欢这种模式,因为它帮助我记住,例如,我正在调用的函数需要哪些参数。

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

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

3 个答案:

答案 0 :(得分:0)

首先想到的是变量tooltip-use-echo-area,它控制工具提示的显示位置和方式。设置为t时,所有工具提示都显示在回显区域中。它对您的系统有何价值?也许有可能通过将该变量设置为nil来强制cedet使用实际(弹出)工具提示。

答案 1 :(得分:0)

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

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

无论如何,这意味着您可以使用defadvice覆盖eldoc-message来使用工具提示,并且您将获得解决方案。

下面的snippit是对如何使用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)))
  )

答案 2 :(得分:0)

我和你有类似的需求, 我用这个extension解决了这个问题。

正如您在此screenshot所见, 它在调用时显示函数参数,而不改变回显区域。

一些简洁的功能是:

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