在noweb-mode中禁用自动填充模式

7
请你帮我,如何让Emacs停止自动换行?我使用visual-line-mode,不想要自动换行。我可以通过M-x auto-fill-mode RET关闭它,但在Noweb模式下,当我进入代码块并再次退出时,它会重新开启。请全局关闭自动换行模式,这让我疯狂了。
我已经尝试过:
(auto-fill-mode 0)

还有许多疯狂的事情,比如

(add-hook 'Rnw-mode-hook '(lambda () (auto-fill-mode 0)))
(add-hook 'latex-mode-hook '(lambda () (auto-fill-mode 0)))

但是似乎什么都没起作用。请帮忙。
3个回答

6

不要再给您的系统添加更多的钩子,您应该检查是否可以删除一些以禁用自动填充。

如果您查看noweb-mode的源代码,大约在第211行附近,您会发现这个代码块:

(add-hook 'noweb-select-doc-mode-hook 'noweb-auto-fill-doc-mode)
(add-hook 'noweb-select-code-mode-hook 'noweb-auto-fill-code-mode)

要禁用自动填充,请在您的dotemacs中添加以下一到两行代码(取决于您是否想同时禁用代码和文档的自动填充)。

(remove-hook 'noweb-select-doc-mode-hook 'noweb-auto-fill-doc-mode)
(remove-hook 'noweb-select-code-mode-hook 'noweb-auto-fill-code-mode)

4

好的,我想出了一个技巧来实现这个目标:

(setq auto-fill-mode -1)
(setq-default fill-column 99999)
(setq fill-column 99999)

如果我无法关闭自动填充模式,那么至少我可以通过将其设置为仅在第99999列中填充来使其变得无害。如果我输入的段落超过了99999个字符,我会感到烦恼,但如果发生这种情况,我会有更重要的事情需要担心......


3
如果你查看 simple.el,在顶部定义了 text-mode-hook,这最终负责打开这个可恶的功能(或者至少对我来说是这样的)。
要找到 simple.el 并自己查看:(C-h f, auto-fill-mode, 点击/跟随 simple.el 链接)
要禁用,M-x customize-variable text-mode-hook 屏幕截图 取消勾选 turn-on-auto-fill。一定要在顶部点击“保存以供将来使用”。

这是一个好建议,但如果您想在text-mode及其衍生模式中默认保留 auto-fill-mode,但只是想在某些特定模式下禁用它,比如 noweb-modelatex-mode,该怎么办? - Supernormal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接