1

我有一个 emacs 配置文件whatever.el

(abbrev-mode +1)
(provide 'whatever)

在我的init.el

(require 'whatever)

但是当我启动 emacs 时,abbrev-mode没有启用。为什么 ?

谢谢你

4

3 回答 3

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))))
于 2012-05-17T13:28:12.497 回答
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.

于 2012-05-17T13:24:18.423 回答
1

虽然其他人解释了如何获得您可能想要的东西,但我只是针对您的实际问题(“为什么?”)指出这一点,原因很简单:abbrev-mode 是一种缓冲区本地次要模式,所以当您在启动时运行 (abbrev-mode +1) 它只会在缓冲区中启用 abbrev-mode,该缓冲区在评估~/.emacs(通常是scratch)期间恰好是当前的,但不会在后续缓冲区中。

于 2012-05-18T19:27:07.477 回答