禁用填写 xml-mode

Posted

技术标签:

【中文标题】禁用填写 xml-mode【英文标题】:Disable fill in xml-mode 【发布时间】:2015-01-28 19:09:22 【问题描述】:

我正在尝试将 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 中覆盖这个钩子?

【问题讨论】:

“我写了一个文件xml.el”是什么意思?您是否编写了自己的主要模式来编辑 XML?它实际上有xml-mode-hook 吗?通常我希望看到nxml-mode 用于编辑XML 文件,它有自己的nxml-mode-hook 不,xml.el~/.emacs.d/lisp 中。 将我的钩子调用更改为使用 nxml-mode-hook 也不起作用。 好吧,只有当你同时调用nxml-mode时它才会起作用。 xml.el 是标准 Emacs 库的名称。你不应该在你的load-path 下放置一个冲突的文件名,因为它可能会影响标准库,破坏任何依赖它的东西。我建议对所有自定义 elisp 库使用不冲突的前缀。例如,我使用my- 作为前缀(用于文件名和函数名)。 【参考方案1】:

啊,nxml-mode 派生自 text-mode。这让我有点吃惊(尽管仔细观察,它似乎是 Emacs 中标记语言模式的标准)。

在这种情况下,您可以在nxml-mode-hook 中再次禁用它(因为此时text-mode-hook 已经运行):

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

(请注意,您在 cmets 中说过这对您不起作用,但它确实对我有用)。

或者只需将您的 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)

【讨论】:

将第一个 sn-p 添加到我的.emacs 有效,所以看来真正的问题是我在加载路径中的 elisp 文件没有运行。 你是怎么加载它的? 我在~/.emacs.d/lisp 中有一个文件my-xml.el,它在我的load-path 列表中。 如果仅此而已,那么您没有加载它。 load-path 告诉 Emacs 在被要求加载库时在哪里寻找库,但 Emacs 不会在没有被告知的情况下加载任何内容。您需要致电(load "my-xml"),或者,如果您的文件包含(provide 'my-xml),您可以使用(require 'my-xml)

以上是关于禁用填写 xml-mode的主要内容,如果未能解决你的问题,请参考以下文章

禁用按钮,直到所有表单字段都填写在 Formik

html 禁用提交按钮,直到填写完所有字段

禁用表单按钮,直到所有字段都填写完 rails 5.1

Formik,多步表单制作按钮禁用

有一个禁用的onClick?

firefox 开启安全禁用端口