在Sweave文档中豁免代码块不受emacs拼写检查的影响

16
在Sweave文档中,R语言的代码块与主文本分开显示,如下所示:
Catz are well known for their fur & pur. 

<<echo = false>>=
catz <- 1 + 2 
@

我想要对LaTeX部分运行拼写检查(并标记“Catz”),但是跳过代码块(不要标记“catz”)。在长文档中,针对代码段中的每个“拼写错误”按下“SPC”变得很繁琐。

1个回答

16

尝试将以下内容添加到您的emacs init文件中:

(add-to-list 'ispell-skip-region-alist '("^<<.*>>=" . "^@"))

编辑(针对迈克尔·霍夫曼的评论):

如果启用了Flyspell,则还需要这两个附加表达式:

(defun flyspell-eligible ()
  (let ((p (point)))
    (save-excursion
      (cond ((re-search-backward (ispell-begin-skip-region-regexp) nil t)
             (ispell-skip-region (match-string-no-properties 0))
             (< (point) p))
            (t)))))

(put 'latex-mode 'flyspell-mode-predicate 'flyspell-eligible)

对于其他模式,请将最后一个表达式中的 latex-mode 替换为相应的主要模式名称。


这对于ispell非常有效(根据问题)。对于任何想要为Flyspell做到这一点的人来说,不幸的是,它似乎不起作用,因为flyspell逐个检查单词。我认为需要编辑解析器函数才能使其适用于Flyspell。 - Michael Hoffman
太棒了!一个优雅而通用的解决方案。 - Michael Hoffman

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