如何让Emacs的flyspell/ispell支持Unicode单引号U+2019的拼写检查?
如何让Emacs flyspell/ispell识别带Unicode单引号(U+2019)的单词?
问题背景
日常写作中我越来越多地使用Unicode字符,比如用“我’m”而非“I'm”,这样无需依赖输出转换就能获得美观的排版效果,且已配置好键盘可轻松输入这类撇号和引号。但这导致在Emacs中使用flyspell/ispell进行拼写检查时出现问题:能识别“isn't”,却无法识别“isn’t”。
想请教如何解决这个问题,让使用Unicode标准6.2节推荐的U+2019单引号的单词能被正常识别。必要时我可以编写Elisp代码,但不知从何入手。
已尝试的临时方案
深入研究ispell.el后,发现关键在于ispell-dictionary-alist的第3个元素(OTHERCHARS)。加载ispell后执行以下代码:
(nth 3 (assoc "english" ispell-dictionary-alist))
得到的结果是"[']",即仅匹配ASCII打字机单引号的正则表达式。为了同时支持Unicode单引号,我在.emacs中添加了以下代码:
(ispell-change-dictionary "english") (setf (nth 3 (assoc "english" ispell-dictionary-alist)) "['’]")
这个方法简单有效,但略显粗糙。若有人知道更规范的修改字典OTHERCHARS字段的方法,烦请告知。
内容的提问来源于stack exchange,提问作者njlarsson
相关产品推荐
相关产品推荐

