禁用填充xml模式

时间:2015-01-28 19:09:23

标签: emacs elisp hook mode dot-emacs

我尝试将Emacs配置为在编辑XML文档时不激活自动填充。

在我的.emacs文件中,我添加了一个钩子,以便文本模式默认启用自动填充:

(add-hook 'text-mode-hook 'turn-on-auto-fill)

我已在我的加载路径中添加了一个目录:

(add-to-list 'load-path "~/.emacs.d/lisp/")

在该目录中,我为此工作站编写了一个文件xml.el,我已经尝试了以下各项,但无济于事:

(add-hook 'xml-mode-hook 'turn-off-auto-fill)
(add-hook 'xml-mode-hook 'auto-fill-mode)
(remove-hook 'xml-mode-hook 'turn-on-auto-fill)
(remove-hook 'xml-mode-hook 'auto-fill-mode)

如何禁用XML模式下的自动填充?

编辑:看来这是由我上面提到的text-mode-hook引起的。如何在nxml-mode中覆盖此挂钩?

1 个答案:

答案 0 :(得分:1)

啊,nxml-mode来自text-mode。这对我来说有点令人惊讶(虽然仔细观察,它确实似乎是Emacs中标记语言模式的标准)。

在这种情况下,您可以在nxml-mode-hook中再次停用(因为text-mode-hook已经在该点运行了):

(add-hook 'nxml-mode-hook 'turn-off-auto-fill)

(n.b。你在评论中说这对你没有用,但它确实适合我)。

或者只是将您的text-mode-hook代码更改为以下内容,以便在启用自动填充之前捕获此案例:

(defun my-text-mode-hook ()
  "Custom behaviours for `text-mode'."
  ;; Enable `auto-fill-mode', except in `nxml-mode' (which is derived
  ;; from `text-mode').
  (unless (eq major-mode 'nxml-mode)
    (turn-on-auto-fill)))

(add-hook 'text-mode-hook 'my-text-mode-hook)