【问题标题】:Change where semantic summary is displayed更改语义摘要的显示位置
【发布时间】:2012-03-30 15:00:40
【问题描述】:

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

问题是,在回显区域显示有点问题。由于它会在点下方有符号时自动激活,因此它有时会隐藏回显区域中显示的有用信息(毕竟,那是 emacs 用来告诉您信息的区域)。

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

【问题讨论】:

    标签: emacs cedet


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        正如您在screenshot 上看到的, 它在调用点显示函数参数,而不改变回显区域。

        一些简洁的功能是:

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

        【讨论】:

          猜你喜欢
          • 2019-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-26
          • 1970-01-01
          • 1970-01-01
          • 2016-12-08
          相关资源
          最近更新 更多