Emacs - 在ess-mode中添加缩写

时间:2015-01-17 22:42:11

标签: emacs ess

在编辑R文件时,我似乎无法在ess模式下使用缩写。

我有ess-mode hook来激活缩写模式,但我的全局缩写没有扩展。当我add-mode-abbrev时,我可以添加一个缩写,但它不会写入我的缩写文件,当然也不会被扩展(在read-abbrev-file之后或重新启动)。

如果我手动将这样的内容添加到我的缩写文件中并重新加载:

(define-abbrev-table 'ess-mode-abbrev-table
'(
    ("-=" "<-" nil 0)
))

它也不起作用。

如何让ess-mode识别我的缩写?

2 个答案:

答案 0 :(得分:2)

我正在使用在本地设置ess-mode-abbrev-table的解决方法。首先我定义了缩写表,以防我稍后加载我的缩写表并且在启动ESS时不希望出错:

(define-abbrev-table 'ess-mode-abbrev-table nil)
(add-hook 'ess-mode-hook
          (lambda ()
            (setq local-abbrev-table ess-mode-abbrev-table)))

我更喜欢在解释器中使用相同的缩写,因此这很方便:

(dolist (hook '(ess-mode-hook inferior-ess-mode-hook))
  (add-hook hook
        (lambda ()
          (setq local-abbrev-table ess-mode-abbrev-table))))

答案 1 :(得分:0)

缩写词应具有单词语法 - 内部使用forward-word

编写/重新定义缩写是一项代价高昂的操作,需要几秒钟。因此,在任何编辑/定义之后都不会这样做 - 除非明确要求 C-x C-s 。通常在会话结束时写入缩写文件。