我有一个emacs配置文件whatever.el
:
(abbrev-mode +1)
(provide 'whatever)
和我的init.el
:
(require 'whatever)
但是当我启动emacs时,abbrev-mode
未启用。为什么?
谢谢
答案 0 :(得分:3)
引自http://emacswiki.org/emacs/AbbrevMode:
如果需要,您还可以将以下内容放在〜/ .emacs文件中 永远在:
(setq default-abbrev-mode t)
如果你只想在文本和派生模式中使用它,你可以这样做 像这样的东西:
(add-hook 'text-mode-hook (lambda () (abbrev-mode 1)))
对于多种模式,请使用以下内容:
(dolist (hook '(erc-mode-hook emacs-lisp-mode-hook text-mode-hook)) (add-hook hook (lambda () (abbrev-mode 1))))
答案 1 :(得分:2)
每个缓冲区启用缩写模式。
一种方法是创建一个钩子函数,您可以将其添加到您想要使用它的主模式钩子中。
例如:
(defun my-enable-abbrev-mode ()
(abbrev-mode 1))
(add-hook 'c-mode-hook 'my-enable-abbrev-hook)
(add-hook 'java-mode-hook 'my-enable-abbrev-hook)
另一种方法是使用change-major-mode-hook
。
答案 2 :(得分:1)
虽然其他人解释了如何获得你想要的东西,但我只是指出你的实际问题(“为什么?”),原因很简单:abbrev-mode是一个缓冲区本地的小模式,因此,当您在启动时运行(缩写模式+1)时,它将仅在评估~/.emacs
(通常是 scratch )期间启用缓冲区中的缩写模式,但不会在随后的缓冲区中。