Emacs-在ess模式下添加abbrevs

Emacs-在ess模式下添加abbrevs,emacs,ess,Emacs,Ess,在编辑R文件时,我似乎无法使abbrevs在ess模式下工作 我有ess模式钩子来激活abbrev模式,但是我的全局abbrev没有扩展。当我执行添加模式abbrev时,我可以添加一个abbrev,但它不会写入我的abbrev文件,当然也不会被扩展(在读取abbrev文件后或重新启动) 如果我手动将类似的内容添加到我的abbrev文件并重新加载: (define-abbrev-table 'ess-mode-abbrev-table '( ("-=" "<-" nil 0) ))

在编辑R文件时,我似乎无法使abbrevs在ess模式下工作

我有ess模式钩子来激活abbrev模式,但是我的全局abbrev没有扩展。当我执行添加模式abbrev时,我可以添加一个abbrev,但它不会写入我的abbrev文件,当然也不会被扩展(在
读取abbrev文件后或重新启动)

如果我手动将类似的内容添加到我的abbrev文件并重新加载:

(define-abbrev-table 'ess-mode-abbrev-table
'(
    ("-=" "<-" nil 0)
))
(定义abbrev表的ess模式abbrev表
'(

(“-=”缩略语应具有单词语法-
正向单词
在内部使用


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

我正在使用一种变通方法在本地设置ess模式Abbrev表。首先,我定义Abbrev表,以防我稍后加载我的abbrev表,并且不希望在启动ESS时出错:

(define-abbrev-table 'ess-mode-abbrev-table nil)
(add-hook 'ess-mode-hook
          (lambda ()
            (setq local-abbrev-table ess-mode-abbrev-table)))
我更喜欢在解释器中使用相同的abbrev,因此这很方便:

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

这是正确的,但不是我的问题-我调用read abbrev文件,但它仍然不工作。abbrev在其他模式下工作正常。ess模式和abbrev模式之间存在断开连接,这就是我需要解决的问题…欢迎使用stackoverflow。没有更多解释。谢谢!这看起来很有希望:
列出abbrev
现在显示(ess mode abbrev table)“-=”0“define abbrev table
的docstring说明了您的问题:“如果:regexp为nil,默认行为使用向后单词和向前单词提取abbrev的名称,因此只能是一个单词。”因此将缩写的名称更改为“u”例如,下划线可以解决您的问题。