flyspell-mode的替代品 wucuo(无错) 0.2.0 发布了

https://github.com/redguardtoo/wucuo

是目前最快最强大的拼写检查方案,完全取代了flyspell-modeflyspell-prog-mode

特点

  • 原生完美支持camel case word检查,用hunspell和aspell都可以,不需要任何额外设置
  • 性能极佳
  • 功能强大,给用户充分定制的权限和工具

使用就是两行代码,

(add-hook 'prog-mode-hook #'wucuo-start)
(add-hook 'text-mode-hook #'wucuo-start)
13 个赞

给大佬点个赞 我发现我的hunspell还没配置过,有空试试看。

应该加上链接。我准备试用下,flyspell有点慢,谢谢大佬

编译报错啦, emacs27,大佬看看?

另外有个问题,怎么感觉ultralite 检查的更少,效率更高呢?是不是应该换一下更好?或者改个名字?


Compiling file ~/.emacs.d/elpa/wucuo-20200516.1526/wucuo.el at Sat May 30 16:42:45 2020
Entering directory ‘/Users/vincent/.emacs.d/elpa/wucuo-20200516.1526/’

In wucuo-split-camel-case:
wucuo.el:235:26:Error: ‘add-to-list’ can’t use lexical var ‘rlt’; use ‘push’
    or ‘cl-pushnew’

In wucuo-generic-check-word-predicate:
wucuo.el:293:36:Warning: ‘font-lock-fontify-buffer’ is for interactive use
    only; use ‘font-lock-ensure’ or ‘font-lock-flush’ instead.

In end of data:
wucuo.el:433:1:Warning: the function ‘symobol’ is not known to be defined.

修掉了,不好意思,我只测了源代码版本,ultra就是速度飞快的意思。随便起的名字了。原来还有full版本和flyspell-mode纠缠不清。昨天终于想通了不再依赖flyspell-mode

改成normal和fast了。

有gif 没

Gif太麻烦了,弄张截屏吧

总体来说,挺好用的。变量名大部分不会被检查了。
有个小问题请教下,对于camel case word 是怎么分割检查的?
像下图中的ftrName 是 featureName的缩写,这种情况是ftrName被当成一整个词来检查吗? image

直接去抄了go的一个项目的算法把camel case word解析出来(我把他的go代码翻译成了lisp代码),

把sub word取出来。然后再起一个命令行程序检查。速度非常关键。由于Emacs Lisp单线程的原因,加更多功能就卡编辑器,所以为了提高性能我是绞尽脑汁了。

ftr命令行认为是非法单词。你可以定义个人词典包含ftr这个单词。 image

1 个赞

创建个人词典,这个问题解决了。赞 :+1:

能否自己定义个人字典的位置?我看源码中是直接定义在home目录下的。
我是因为需要将个人字典放在icloud的盘上现实跨平台共享。 我通过下面的设置并没有生效:
(setq ispell-personal-dictionary "~/Documents/aspell/personal-dictionary") ;设置个人词典

更新:在 @Youmu 的帮助下,按照下面的设置,可以正常指定个人字典的路径了。

(setq ispell-dictionary "en_US"
      ispell-program-name "aspell"
      ispell-personal-dictionary (expand-file-name "~/Org/aspell/personal-dictionary/.aspell.en.pws"))
2 个赞

你可以看看ispell,flyspell怎么传参数给命令行的。可以参考 Posts about spell | Chen's blog

我个人不会使用云盘共享这些数据,牵涉到个人隐私。使用私有git repository更有效。

多谢,我去仔细看看。网盘安全性确实是值得考虑,特别icloud在前几年是出过事情的。

还有关于ispell的小问题请教一下,如下图中的featureName并没有被识别为错误,但是执行 M-x ispell ,按空格进行跳转的时候还是会进入这些词条。不知道是哪里的问题?
下图中的文字是在Org-mode,其他的prog-mode也是一样。

image

ispell和flyspell是两回事。

flyspell只不过利用了ispell的部分api。

你只能在ispell和flyspell中二选一。

我对ispell没有什么研究。

wucuo利用了flyspell的api,但是和flyspell-mode是两回事,只能二选一。

我只用flyspell-goto-next-error,偶尔使用flyspell-buffer。

明白了,谢谢。第一次用这个功能,以为二者是一回事。感谢解惑

哦,那用ultra、lite也无妨了。我记得以前为了速度,用过这个参数,不知道有用没有。

(setq ispell-extra-args '("--sug-mode=ultra" "--lang=en_US" "--run-together"))

这两者是可以混合使用的,flyspell-mode来提示哪里错了,修正时可以使用flyspell-correct-word-before-point或者ispell-word

这里有个问题,有没有办法设置flyspell-correct-word-before-point 弹出窗口的颜色,或者用让它显示在minibuffer,不然它的颜色跟主题不一致,很突兀。

比较喜欢ispell那种,一直按空格就跳转修改,挺方便的,而且主题和emacs主题一致。

直接用

1 个赞