首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在emacs中为所有文件和所有主要模式启用flyspell-mode?

如何在emacs中为所有文件和所有主要模式启用flyspell-mode?
EN

Stack Overflow用户
提问于 2011-07-28 22:34:30
回答 5查看 8.1K关注 0票数 17

如何在Emacs启动时自动为每个文件和每个主要模式使用flyspell-mode?

另外,有没有XML字典不将XML标记标记为拼写错误的单词?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-20 01:41:31

这个问题的答案对我很有效:

How to enable automatic spell check by default?

此外,与其他先前的答案相比,它似乎更通用。将以下代码行添加到.emacsinit.el中。

代码语言:javascript
复制
(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'prog-mode-hook 'flyspell-prog-mode)
票数 22
EN

Stack Overflow用户

发布于 2011-07-28 23:02:47

您可能并不是真的希望在所有模式下都启用flyspell-mode,而是希望在主要处理文本的模式(文本模式、消息模式等)中启用flyspell-mode,在编程模式(C/C++、Java、Ruby、Lisp等)中启用flyspell-prog-mode。这两种模式的不同之处在于,第一种模式检查所有单词,而flyspell-prog-mode只检查注释和字符串中的单词(从而避免检查代码,因为代码通常不是单词)。

无论哪种方式,都没有一个地方可以在所有文件/缓冲区中启用flyspell,因为它已被写入始终为缓冲区本地。一个非常接近的例子是

代码语言:javascript
复制
(defun turn-on-flyspell () (flyspell-mode 1))
(add-hook 'find-file-hooks 'turn-on-flyspell)

这不包括没有关联文件的buffers,我也不建议使用它,因为它不区分编程模式和非编程模式--我认为这很有用。

因为无法知道某些模式是否是编程模式,所以您需要手动为您关心的所有编程模式添加自定义,如下所示:

代码语言:javascript
复制
(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode))
        '(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook 
          ruby-mode-hook java-mode-hook))

注意:这两段代码可能不能很好地结合在一起。

而且,关于XML,flyspell已经对sgml-modehtml-modenxml-mode进行了定制,不会对标签进行拼写检查(从Emacs23.2开始)。如果您使用的是旧版本的Emacs (回到21.1),您应该能够将此代码添加到您的.emacs中以获得对nxml-mode的支持

代码语言:javascript
复制
(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)
票数 17
EN

Stack Overflow用户

发布于 2011-07-28 23:01:56

您可以将以下内容添加到Emacs init文件中:

(flyspell all-mode)

函数描述说明如下:

在所有主要模式下都使用Flyspell。既适用于现有缓冲区,也适用于您随后创建的缓冲区。如果打开,则关闭‘`flyspell text-modes’。

编辑:显然,上面的函数只包含在Emacs 24中的flyspell版本中。如果您不能使用该版本,那么您应该使用Trey建议的解决方案来“半全局”启用flyspell。要使用NXML禁用XML标记检查,可以将以下行添加到Emacs init文件中:

代码语言:javascript
复制
(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)

注意:这一行已经包含在Emacs 24中的flyspell.el中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6860750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档