我没有使用 autoyas,因为我发现自动完成集成是一种更好的方法。
插入先前定义的符号是一种通用的 emacs 功能,称为“dabbrev-expand”,并且绑定到M-/. 我在我的 .emacs 中有这个,以使其在完整符号上完整:
(setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_\\|s.")
(setq dabbrev-case-fold-search t)
我广泛使用的另一件事是imenu-based-jump-to-symbol-definition。它提供与 emacs 标签类似的功能,但仅适用于与当前缓冲区模式相同的打开缓冲区。它还使用 IDO 进行查询:
放入imenu-anywhere.el
您的 emacs 加载路径并添加以下内容:
(require 'imenu-anywhere)
(global-set-key [?\M-o] 'imenu-anywhere)
现在,如果我执行 M-ofoo RET,只要在其中一个打开的缓冲区中定义了“foo”,emacs 就会跳转到“foo”的函数/类/方法/通用定义。这当然适用于模式定义 imenu-tags 时。ESS 定义了这些,因此您不需要添加更多。
还有一些 R-yas 模板的集合。我没有开始使用它们,但我的猜测是它是一种非常有效的模板插入机制。
[编辑] 激活 tracebug:
(setq ess-use-tracebug t)