【问题标题】:Emacs auto-complete for ESS in tooltip instead of bufferEmacs 在工具提示而不是缓冲区中为 ESS 自动完成
【发布时间】:2014-04-13 18:51:44
【问题描述】:

我从以下资源中了解到:

...在使用 ESS 进行 R 开发时,我应该可以访问 emacs 中自动完成帮助的工具提示。最后一个链接还指定它应该使用最新的 ESS 开箱即用,并且:

从 12.03 版开始,ESS 集成了开箱即用的自动完成功能 包。

三个来源“ac-source-R-args”、“ac-source-R-objects”和 “ac-source-R”包含在 ESS 发行版中。最新的结合 前两个,让他们一起玩得很好。

我知道,一般来说,我的 emacs 工具提示是可能的,因为它们在我的 emacs 中的 python jedi 设置中正确显示。

但是,我的 emacs 自动完成功能不起作用。相反,底部有一个缓冲区:

代替这个,在工作缓冲区上叠加帮助:

我的 init.el 中有以下内容:

(require 'auto-complete)
(setq ess-use-auto-complete t)
(ess-toggle-underscore nil)

我有以下版本:

  ess                20131207.1141  installed  No description available.
  ess-R-data-view    20130509.458   installed  Data viewer for GNU R
  ess-R-object-popup 20130302.336   installed  popup description of R object
  auto-complete      20140208.653   installed  Auto Completion for GNU Emacs

我错过了什么?

更新 1

这是我对 ESS 的初始化。这会在缓冲区中生成完成,但不会在工具提示中生成,其中添加了手册中的一些配置选项。 (我现在已经尝试了评论的所有排列,而不是评论所有这些):

(require 'auto-complete)
(global-auto-complete-mode)
(require 'auto-complete-config)
(ac-config-default)
(require 'ess-site)
(setq ess-use-auto-complete t)
(setq ac-auto-start 2)
(setq ac-auto-show-menu 0.2)
(ess-toggle-underscore nil)

更新 2

类似的问题here,但提出了相同的解决方案,但实际上并没有在我的设置中产生工具提示。但它向我暗示这可能是一个平台问题?那里的海报也像我一样在 Ubuntu 12.04 上——是否有可能为 VitoshKa、Alex Vorobiev 和 Iqbal Ansari 工作的解决方案在不同的平台上?你们用的是 OS X 吗?

更新 3

也许其他诊断:

ac-source-R is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-ac-start)
 (candidates . ess-ac-candidates)
 (document . ess-ac-help))


Documentation:
Combined ad-completion source for R function arguments and R objects

ac-source-R-objects is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-symbol-start)
 (candidates . ess-ac-objects)
 (document . ess-ac-help-object))


Documentation:
Auto-completion source for R objects

ac-source-R-args is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-ac-start-args)
 (candidates . ess-ac-args)
 (document . ess-ac-help-arg))


Documentation:
Auto-completion source for R function arguments

[back]

ess-ac[TAB] 的变量只有...

Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
ess-ac-R-argument-suffix
ess-ac-sources

所以问题可能是我的 ESS 安装缺少上面定义的所有 ess-ac-* 内容,例如 ess-ac-args 等?

【问题讨论】:

  • 我希望我也知道。我也尝试过设置此设置,但从未成功。
  • 我能够完成函数参数。 ac-auto-start 的值是多少?也可以尝试按C-M-i
  • M-x describe-variable ac-auto-start 说:ac-auto-start's value is 2 Documentation: Non-nil means completion will be started automatically.
  • C-M-i 好像没有效果。
  • @Mittenchops 我猜所以请耐心等待。在write.table( 输入fi 后它会自动完成吗,也可以尝试按C-M-i 至少应该发生一些事情,我得到了完成

标签: r emacs tooltip ess


【解决方案1】:

我的自动完成配置也有

(require 'auto-complete-config)
(ac-config-default)

然后设置ess-use-auto-complete 使ESS 显示弹出菜单。

【讨论】:

    【解决方案2】:

    因此,根据您的 cmets,您的 emacs 配置中未启用 auto-complete。所以只需在你的初始化文件中添加类似这样的东西来启用auto-complete

    (load "auto-complete")
    (global-auto-complete-mode)
    

    对于 ESS,您还需要将 ess-use-auto-complete 设置为 t,如下所示

    (setq ess-use-auto-complete t)
    

    编辑ess-use-auto-complete 默认设置为t,所以这一步并不是真正需要的。

    此外,由于您发现此选项令人困惑,我建议您在 github 存储库上打开一个问题,以便维护人员可以改进文档(或代码),以减少混淆。

    自动完成有很多配置选项,有时间请阅读manual

    很高兴我能帮上忙

    【讨论】:

    • 奇怪的是,尽管做出了这些更改,但直到我第一次运行 C-c C-c 时,自动完成功能才启动。它必须运行缓冲才能将 .R 文件识别为 R 文件。
    • 这太奇怪了。我在另一台机器上做了同样的安装,又遇到了和上面一样的问题。
    • 和你没有自动完成一样?
    • the auto-complete never kicks in until the first time I run C-c C-c 这可能是因为(我猜)ess 使用 repl 进行自动完成。
    • 不,我在 Ubuntu 12.04 上。 My running theory ... don't get referenced anywhere.。查看您的UPDATE 3,来源引用ess-r-d.el。此外,我也只有带有前缀ess-ac 的变量,所以这似乎不是问题。我刚刚注意到,除非我执行eval 命令之一(例如C-c C-c),否则我不会在文件中获得补全。
    【解决方案3】:

    不要将eldoc 与自动完成混淆。 Eldoc 是您在屏幕截图中所拥有的,它显示了函数的所有参数而不会造成干扰。当您开始输入内容并在ac-auto-start 个字符后激活时,会弹出自动完成功能。

    【讨论】:

    • 我了解 eldoc 是我的屏幕截图中的内容,但据我了解,我 /also/ 应该具有自动完成功能以及开箱即用的组件ESS;这是不工作的部分,尽管有 ESS。这甚至来自您的链接,对吗?
    • @Mittenchops,你是对的。只要您加载了自动完成,它就应该默认工作。检查它是否在 elisp 等其他模式下工作。
    • 很奇怪,它确实适用于任何事情,例如当我编辑我的 init.el 时,我在工具提示中获得了完美的自动完成,例如 setq 在“设置”之后自动完成。只是 R/ESS 没有获得成功的自动完成功能。就好像它不知道在哪里寻找定义或其他东西。我在 UPDATE 后将 init.el 中的项目添加到问题中。
    • @Mittenchops 尝试调查,迷你缓冲区中可能显示一些错误。查看ac-sources的值,检查是否启用了自动完成,尝试直接使用ess-ac源等
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多