gpt4 book ai didi

emacs - *几乎*总是启用某些 emacs 模式或功能

转载 作者:行者123 更新时间:2023-12-01 09:08:51 25 4
gpt4 key购买 nike

有几个 emacs 功能,例如 flyspell-modehighlight-beyond-fill-columnauto-fill-mode,我觉得非常有用,我希望它们几乎一直启用。然而,总有确定的在没有多大意义的情况下。

highlight-beyond-fill-column,例如,我倾向于非常想要我自己编辑的所有东西,但为了阅读其他人写的东西,比如在 Gnus 或看内置文档的时候,其实挺烦的。

类似地,auto-fill-mode 在只编写文本时非常方便。然而,编程时完全没有帮助。

由于这些原因,我不能只在全局范围内启用类似的功能。总是手动启用它们也不是很实用,但是必须编写显然,我在 emacs 中使用的每种模式或应用程序的 Hook 无法涵盖所有​​这些功能,但最终仍启用了这些功能手动。

我相信我正在寻找的是一种全局启用某些功能的方法,但是根据各种条件(例如哪个专业),有选择地再次关闭它们或次要模式正在使用,如果缓冲区是只读或可写的,或者取决于包含文本或源代码的缓冲区。我确实意识到至少最后一件事对于 emacs 来说可能不容易回答,但至少对于我相信我会很好地使用我使用的“编程模式”的硬编码列表定期。

最佳答案

因此,您希望完全控制在打开特定模式或特定类型的文件时执行的操作...好吧,这就是您所需要的:

;; The function where you could put all your customization
(defun my-func ()
(turn-on-auto-fill))

;; This is an example, customize it like you need it.
(defvar functions-to-call
`(((c-mode c++-mode) ".h$" (my-func))
((cperl-mode perl-mode) nil (my-func)))
"A list of triples, used for storing functions.
A triplet is composed of a symbol for the major mode (or a list of symbols),
a regular expression to match against the buffer's file name,
and the functions to call when both the major mode and regular expr match.")

(defun call-mode-functions ()
"call functions, based on major mode and buffer name regexp matching"
(interactive)
(let ((l functions-to-call))
(while l
(let* ((elt (car l))
(modes (if (listp (car elt)) (car elt) (list (car elt))))
(re (cadr elt))
(fcts (caddr elt)))
(when (and (member major-mode modes)
(or (null re)
(string-match re (buffer-file-name))))
(while fcts
(funcall (car fcts))
(setq fcts (cdr fcts)))
(setq l nil)))
(setq l (cdr l)))))

(add-hook 'after-change-major-mode-hook 'call-mode-functions)

使用此代码,您可以进行所需的细粒度自定义。这只是一个示例,您可以根据自己的需要进行调整。

关于emacs - *几乎*总是启用某些 emacs 模式或功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674637/

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