【发布时间】:2016-05-19 21:05:51
【问题描述】:
我通常在编写 git 提交时更改字典,但是因为我有一个映射来更改字典并在我看到 flyspell 超出提交消息以检查以 # 开头的注释行后立即运行 (flyspell-buffer)。
如何告诉“flyspell,请忽略以# 符号开头的行”?
我读到我可以使用 flyspell-generic-check-word-predicate 但是我的 elisp 远非好 :(,我想出了这个:
(defun flyspell-ignore-comments ()
"Used for 'flyspell-generic-check-word-predicate' to ignore comments."
(not (string-match "^ *#" (thing-at-point 'line t))))
(put 'git-commit-mode 'flyspell-mode-predicate 'flyspell-ignore-comments)
但是它不起作用。我做错了什么?
【问题讨论】:
-
git-commit-setup-hook中有git-commit-turn-on-flyspell吗?如果是这样,那应该将flyspell-generic-check-word-predicate设置为git-commit-flyspell-verify,这会忽略 cmets。 -
确实@kyle-meyer,我有那个设置,检查
(describe-variable flyspell-generic-check-word-predicate)给出类似Its value is git-commit-flyspell-verify Local in buffer COMMIT_EDITMSG; global value is nil但仍然注释的行被标记为flyspell 错误(文件名,目录名,Untracked files部分,等) -
使用
emacs -Q、Magit 2.7.0 和(add-hook 'git-commit-setup-hook #'git-commit-turn-on-flyspell),我无法重现该问题(即,提交消息中的 cmets 被忽略,如预期的那样)。