首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESS (R)自动完成

ESS (R)自动完成
EN

Stack Overflow用户
提问于 2014-08-27 12:05:22
回答 1查看 1.3K关注 0票数 0

我试图在Emacs中为R提供一个实用的开发环境,希望能像http://www.emacswiki.org/emacs/ESSAuto-complete中所示的那样实现自动完成工作。

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

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

你明白发生了什么事吗?

诚挚的问候。

PS-下面是演示的最小Emacs配置文件:

代码语言:javascript
复制
;; 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))

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

更新

  1. 我刚刚发现,当创建iESS缓冲区时,它几乎可以工作,而不仅仅是在自己的缓冲区中编辑R代码。见http://screencast.com/t/fKRjLmIC6K0。 如何解释iESS必须先运行,然后才能运行呢?
  2. 但是,不起作用的是函数参数的完成(比如页面http://www.emacswiki.org/emacs/ESSAuto-complete上的cat函数)。 为什么不起作用?
EN

回答 1

Stack Overflow用户

发布于 2015-03-17 14:59:25

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

代码语言:javascript
复制
(ESS[S] [none] ElDoc AS)

可以运行此快捷方式C-c C-s将R会话附加到ESSS编辑器模式。

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

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

代码语言:javascript
复制
(ESS[S] [R db -] ElDoc AS)

完成工作应该有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25526732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档