【问题标题】:ess-execute key binding not working with new ESS versioness-execute 键绑定不适用于新的 ESS 版本
【发布时间】:2013-09-30 23:51:14
【问题描述】:

我最近使用 Vincent Goulet 在http://vgoulet.act.ulaval.ca/en/emacs/ 的 Windows 7 安装程序从 R 2.15 和旧版本的 ESS 升级。这包括 ESS 版本 13.09。我也刚刚安装了 R 版本 3.0.2。

我的旧工作流程是使用 C-c C-t(默认键绑定)通过 ess-execute 运行命令并将结果发送到临时缓冲区。我发现这对我的工作流程和 R 编程风格非常有用。

但是,在新版本中,此键绑定已被删除。我四处搜索,找不到有关此主题的任何其他线程。我查看了 ess-mode.el 并找到了这一行:

;; (define-key map "\C-c\C-t"   'ess-execute-in-tb)

注释掉了。我看到他们添加了很好的功能ess-describe-object-at-point,但这不允许执行命令。

我不是 emacs 高级用户,因此我倾向于将 lisp 片段复制到我的 .emacs 中并对其进行少量编辑。我尝试 (1) 取消注释上面的行和 (2) 在我的 .emacs 文件中定义一个新的键绑定与 ESSShift Enter (http://www.emacswiki.org/emacs/ESSShiftEnter) 中的新键绑定相同的位置。

(add-hook 'ess-mode-hook
   (lambda()
     (local-set-key [(shift return)] 'my-ess-eval)
     ;; added Ctrl-Enter to stay on same line
     (local-set-key [C-return] 'ess-eval-line)
     ;; Newest version of ESS got rid of C-c C-t for ess-execute add back
     (local-set-key "\C-c\C-t" 'ess-execute-in-tb))

但是,这些方法都没有奏效。

我的问题是:在新版本中禁用此键绑定是否有原因? IE。我应该使用一些其他功能来取代它吗?如果没有,再次启用此键绑定的最佳方法是什么?

【问题讨论】:

    标签: r emacs key-bindings ess


    【解决方案1】:

    ESS 密钥在一年前左右进行了改造。 C-c C-t 现在绑定到 dev-map,它提供了一堆你可能想要的有用功能 将来使用。所以最好不要禁用它。您的代码应该可以工作。你可能 从*R* 缓冲区尝试了 C-c C-t,但那个是inferior-ess-mode,而不是 ess-mode.

    你最好在 ess-exta-map 中定义你的键,这样它就可以在 ess 模式和劣质 ess 模式。像这样的:

    (eval-after-load "ess-mode"
      '(progn
         (define-key ess-extra-map "\C-e" 'ess-execute-in-tb)))
    

    eval-after-load 的痛苦是必要的,因为 Vincent 的发行版在加载用户初始化文件后加载 ess。如果您使用 (load "ess-site") 加载 ESS,那么您可以将 (define-key ...) 部分留在 .emacs.el 中。

    现在 C-c C-e C-e 应该执行你的命令了。

    我正在将这个确切的密钥添加到 ESS 开发版本中。所以,在下一个版本中 您可以删除上面的代码。谢谢你弹出这个。

    顺便说一下 C-RET 绑定到 ess-eval-region-or-line-and-step。你可以考虑保持这样。

    【讨论】:

    • 感谢您的回复,我尝试了您的代码,确实有效。我之前犯了一个错误,这就是我的代码不起作用的原因。我真的很喜欢 ess-execute 功能,但我注意到新版本的一件事是完成不起作用。 IE。如果我执行 M-x ess-execute 然后输入 st 和 它说“没有与此缓冲区关联的 ESS 进程”——有没有简单的方法来恢复这个功能?感谢您进行所有改进,此时我无法想象没有 ESS 的编码!
    • @ColeMonnahan 感谢您指出这一点。我刚刚在 ESS 中修复了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2011-03-27
    • 2017-10-24
    • 2020-06-12
    • 1970-01-01
    • 2010-11-09
    • 2017-09-26
    相关资源
    最近更新 更多