【问题标题】:ESS (R) Auto-completeESS (R) 自动完成
【发布时间】:2014-10-21 00:19:01
【问题描述】:

我尝试在 Emacs 中获得一个实用的 R 开发环境,希望能够像 http://www.emacswiki.org/emacs/ESSAuto-complete 中所示实现自动完成功能。

但是,即使在最小的配置中,我也无法让它工作。

看看我在http://screencast.com/t/qcyVwkECX 上得到了什么。事实上,虽然 AC 确实 工作(见完成菜单出现),就像没有来自 R 语言本身的信息,而 ac-source-R 很好地添加到了 ac-sources。 p>

你明白发生了什么吗?

最好的问候。

PS- 这是我用于演示的最小 Emacs 配置文件:

;; Auto Completion
(add-to-list 'load-path "~/.emacs.d/elpa/auto-complete-20140824.1658/")
(add-to-list 'load-path "~/.emacs.d/elpa/popup-20140815.629/")
(when (require 'auto-complete-config)

(ac-config-default)

;; use `C-n/C-p' to select candidates
(setq ac-use-menu-map t)
(define-key ac-menu-map (kbd "C-n") 'ac-next)
(define-key ac-menu-map (kbd "C-p") 'ac-previous)

;; unbind some keys (inconvenient in iESS buffers)
(define-key ac-completing-map (kbd "M-n") nil)
(define-key ac-completing-map (kbd "M-p") nil)

;; set default sources
(setq ac-sources
      (append '(ac-source-features
        ac-source-functions
        ac-source-yasnippet
        ac-source-variables
        ac-source-symbols)
          ac-sources))

(setq ac-delay 0)               ; faster than default 0.1
(setq ac-auto-show-menu 0.2)
(setq ac-quick-help-delay 0.5)
(setq ac-quick-help-height 10)
(setq ac-candidate-limit 100)

;; completion by TAB
(define-key ac-completing-map
  (kbd "<tab>") 'ac-complete)

;; avoid Flyspell processes when auto completion is being started
(ac-flyspell-workaround))

;; ESS: Emacs Speaks Statistics
(add-to-list 'load-path "~/.emacs.d/elpa/ess-20140824.1452/lisp/")

  (setq shell-file-name "zsh.exe")

(add-to-list 'auto-mode-alist '("\\.[rR]\\'" . R-mode))

(autoload 'R "ess-site" "Call 'R', the 'GNU S' system from the R Foundation." t)
(autoload 'R-mode "ess-site" "Major mode for editing R source." t)

(setq ess-ask-for-ess-directory nil)
(setq inferior-ess-same-window nil)
(setq ess-default-style 'DEFAULT)

(with-eval-after-load "ess-site"

  ;; use eldoc to report R function names
  (require 'ess-eldoc)
  (add-hook 'inferior-ess-mode-hook 'ess-use-eldoc))

PPS- 事实上,ElDoc 似乎也不起作用!

更新

  1. 我刚刚发现它几乎可以在创建 iESS 缓冲区时工作,而不是在自己的缓冲区中编辑 R 代码时。见http://screencast.com/t/fKRjLmIC6K0

    如何解释 iESS 必须先运行才能最终运行?

  2. 不过,函数参数的补全仍然不起作用(例如 http://www.emacswiki.org/emacs/ESSAuto-complete 页面上的 cat 函数)。

    为什么这不起作用?

【问题讨论】:

  • ess-use-auto-complete 是 t(默认)。
  • 您是否有一个 R 进程正在运行并与您正在编辑的缓冲区相关联? 消息中的任何内容?
  • 不,正如更新中所写,我没有 iESS 缓冲区。
  • 虽然,即使这是一个功能,我仍然会遇到问题 #2。
  • 你确定你在ac-sources中有ac-source-R-args吗?

标签: r emacs autocomplete ess


【解决方案1】:

使用 emacs 打开 R 文件后,如果您在 emacs 状态栏中描述了此模式:

(ESS[S] [none] ElDoc AS)

您可以运行此快捷方式 C-c C-s 将 R 会话附加到您的 ESS[S] 编辑器模式。

如果您已经打开了一个或一些 R 会话,emacs 会要求您选择要使用的 R 会话。否则,如果您尚未打开 R 会话,那么 emacs 将为您打开一个新会话。

接下来,您应该在状态栏中包含以下信息:

(ESS[S] [R db -] ElDoc AS)

并且完成应该工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 2018-08-20
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多