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

可以把文件发给我吗? wucuo-spell-check-buffer-max设置了最大buffer size。

好的,我传到gist上了:

原来有这个设定,我看了一下,xdisp.c是1136133,比默认值少一点点。我建议把这个值调低一点,比如一半甚至1/4。

查了一下,flyspell速度很快。wucuo-flyspell-start-mode如果是"fast"的话,性能可以的。建议你(setq wucuo-debug t)再看一下。

wucuo-flyspell-start-modefast。可能我没说清楚,编辑时没问题,只有保存的时候卡。我把wucuo-spell-check-buffer-max调低了。

我是保存的时候一点也不卡,编辑的时候卡。卡的原因我测试了一下,和我使用evil-mode有关联。和wucuo没有关系。可以把wucuo-debug设置为t,看一下输出,是否确实只检查了可见区域。如果只检查可见区域的话,性能不受buffer大小影响。我显示器1920x1200的分辨率,可见区域48行的高度。实际检查的区域应该翻倍,也就96行而已。

似乎和font-lock有关:

- command-execute                                                3605  90%
 - call-interactively                                            3605  90%
  - funcall-interactively                                        3605  90%
   - save-buffer                                                 2875  71%
    - basic-save-buffer                                          2875  71%
     - run-hooks                                                 2871  71%
      - wucuo-spell-check-buffer                                 2803  70%
       - flyspell-region                                         2803  70%
        - flyspell-large-region                                  2772  69%
         - flyspell-check-region-doublons                        2659  66%
          - flyspell-word                                        2659  66%
           - wucuo-generic-check-word-predicate                  2658  66%
            - font-lock-ensure                                   2654  66%
             - jit-lock-fontify-now                              2654  66%
              - jit-lock--run-functions                          2653  66%
               - run-hook-wrapped                                2653  66%
                + #<compiled 0x1ff037bba2bd>                     2653  66%
            + message                                               3   0%
           + flyspell-accept-buffer-local-defs                      1   0%
         + flyspell-external-point-words                          103   2%
         + flyspell-accept-buffer-local-defs                        9   0%
         + apply                                                    1   0%
        + ispell-set-spellchecker-params                           31   0%
      + eglot--signal-textDocument/didSave                         66   1%
      + diff-hl-update                                              1   0%
        luna-smart-format-buffer                                    1   0%
     + basic-save-buffer-1                                          2   0%
     + verify-visited-file-modtime                                  1   0%
     + vc-after-save                                                1   0%
   + counsel-M-x                                                  730  18%
+ ...                                                             386   9%
+ #<compiled 0x1ff037a71465>                                        5   0%
+ redisplay_internal (C function)                                   3   0%

jit-lock-function里就是font-lock函数。无责任猜测:cc-mode我记得用了parser,可能导致重新着色整个buffer很慢之类的?

这是wucuo的log:

好东西,能鼠标中键修改~~~ :smiley:

谢谢,这个我得检查一下,font-lock-ensure 是后来从哪里抄来的,我也没有理解其意义。性能方面处处是陷阱啊

问题已在0.2.4修正, 这是font-lock-ensure的定义,(defun font-lock-ensure (&optional beg end),默认要检查整个buffer。我也没仔细看代码,就抄过来了。:wink:

1 个赞

请问有没有 hunspell 的中文字典啊?好想要w

中文有啥拼写啊orz

还是会有的吧 拼写 写成 写拼 什么的(

wucuo只是hunspell的前端,对于语言没有任何假定。问题是hunspell。我搜索了一下, 看到 爱奇艺发布FASPell:最强简繁中文拼写检查工具-爱奇艺,FASPell,简体,繁体,中文,拼写检查 ——快科技(驱动之家旗下媒体)--科技改变未来 不过hunspell是否实现了我不知道。

支持一下 前两天刚玩过wucuo

谢谢,大概还是没有

果然,中文分词还是难啊