我有一个 emacs 配置文件whatever.el
:
(abbrev-mode +1)
(provide 'whatever)
在我的init.el
:
(require 'whatever)
但是当我启动 emacs 时,abbrev-mode
没有启用。为什么 ?
谢谢你
引用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))))
每个缓冲区启用缩写模式。
一种方法是创建一个挂钩函数,您可以将其添加到您想要使用它的主要模式挂钩中。
例如:
(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
.
虽然其他人解释了如何获得您可能想要的东西,但我只是针对您的实际问题(“为什么?”)指出这一点,原因很简单:abbrev-mode 是一种缓冲区本地次要模式,所以当您在启动时运行 (abbrev-mode +1) 它只会在缓冲区中启用 abbrev-mode,该缓冲区在评估~/.emacs
(通常是scratch)期间恰好是当前的,但不会在后续缓冲区中。