为什么模式没有启用?

时间:2012-05-17 13:13:18

标签: emacs dot-emacs

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

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

和我的init.el

(require 'whatever)

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

谢谢

3 个答案:

答案 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 )期间启用缓冲区中的缩写模式,但不会在随后的缓冲区中。