gpt4 book ai didi

emacs - 禁止 emacs 自动填充选定区域

转载 作者:行者123 更新时间:2023-12-04 15:37:57 27 4
gpt4 key购买 nike

我使用 emacs 来编辑所有内容。在我的一些 LateX 文档中,我想在编辑表格和代码时自动禁用自动填充模式。基本上,我想要两个标签,例如:

   %%% BEGIN NO FILL
%%% END NO FILL

并且它们之间的任何内容都不会自动填充。

任何人都可以想出一种方法来做到这一点吗?我需要弄清楚光标是否在区域内,然后必须切换模式,并且每次光标移动时都需要这样做。或者有没有更好的方法来做到这一点?

最佳答案

如果您正在使用 AUCTeX(您应该使用),那么您可能需要查看 LaTeX-indent-environment-list .向该变量添加环境将使(除其他外)M-q 不会重新填充该段落。不幸的是,它似乎不适用于自动填充模式。以下大部分未经测试的代码添加到 LaTeX-mode-hook可能会做你想做的。

(setq auto-fill-function
(lambda ()
(unless (> (save-excursion (or (search-backward "%%% BEGIN NO FILL" (point-min) t) 0))
(save-excursion (or (search-backward "%%% END NO FILL" (point-min) t) 0)))
(do-auto-fill))))

它非常愚蠢且效率低下,但在我的机器上似乎足够快。它不允许嵌套,并要求您手动标记所有不想填充的部分。我想添加到我的 .emacs 中(直到我读到你的问题,我才意识到这给我带来了多大的困扰)低于当前环境中的哪些键,因此不需要特殊标记(尽管它只查看最内部的环境(我不确定在实践中会导致多少问题))。将两者结合作为练习留给感兴趣的读者。
;; You can use the following to unset the variables and play around with them
;; (makunbound 'auto-fill-ignore-environments)
;; (makunbound 'auto-fill-ignore-environments-regexp)
(defcustom auto-fill-ignore-environments
(mapcar 'car LaTeX-indent-environment-list)
"List of environments for which `auto-fill-mode' should be
disabled. Used to generate `auto-fill-ignore-environments-regexp'."
:type '(sexp)
)
(defcustom auto-fill-ignore-environments-regexp
(regexp-opt auto-fill-ignore-environments)
"Regexp matching LaTeX environments for which `auto-fill-mode'
should be disabled. If not set, automatically generated from
`auto-fill-ignore-environments'"
:type '(string)
:set-after '(auto-fill-ignore-environments)
)
(add-hook 'LaTeX-mode-hook
(lambda ()
(setq auto-fill-function
(lambda ()
(unless (string-match auto-fill-ignore-environments-regexp
(LaTeX-current-environment))
(do-auto-fill))))))

我以前从未使用过 defcustom,所以我确信这部分可以改进很多。

关于emacs - 禁止 emacs 自动填充选定区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com