在 react-mode 下编辑 js 文件里的 html 标签非常卡

用的是ThinkPad x260 非SSD

OS: Arch Linux 
Kernel: x86_64 Linux 4.13.5-1-ARCH
WM: dwm
CPU: Intel Core i5-6200U @ 4x 2.8GHz [48.0°C]
GPU: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
RAM: 11198MiB / 15485MiB

profiler-report:

- command-execute                                                7597  71%
 - call-interactively                                            7597  71%
  - funcall-interactively                                        7597  71%
   - self-insert-command                                         7006  65%
    - font-lock-after-change-function                            7006  65%
     - font-lock-fontify-region                                  7006  65%
      - font-lock-default-fontify-region                         7006  65%
       - font-lock-fontify-keywords-region                       5858  55%
        - web-mode-font-lock-highlight                           5565  52%
         - web-mode-highlight-region                             5565  52%
          - web-mode-part-highlight                              5522  51%
           - web-mode-fontify-region                             3264  30%
            - font-lock-fontify-region                           3261  30%
             - font-lock-default-fontify-region                  3249  30%
              - font-lock-fontify-keywords-region                3143  29%
               + font-lock-compile-keywords                        32   0%
                font-lock-unfontify-region                          4   0%
           - web-mode-part-highlight                             1974  18%
            - web-mode-fontify-region                            1890  17%
             - font-lock-fontify-region                          1890  17%
              - font-lock-default-fontify-region                 1867  17%
               - font-lock-fontify-keywords-region               1786  16%
                + font-lock-compile-keywords                       28   0%
                 #<compiled 0x267787>                               3   0%
              web-mode-interpolate-javascript-string                  9   0%
           + web-mode-highlight-tags                              129   1%
             web-mode-jsx-expression-next                          32   0%
             web-mode-jsx-element-next                              7   0%
          + web-mode-process-blocks                                 6   0%
        + rainbow-delimiters--propertize                          207   1%
        + #<lambda 0x328021f>                                      18   0%
       - web-mode-extend-region                                  1136  10%
        - web-mode-propertize                                    1136  10%
         - web-mode-invalidate-part-region                       1136  10%
          + web-mode-scan-region                                 1103  10%
            web-mode-javascript-rsf                                33   0%
   + counsel-M-x                                                  490   4%

现在禁用 font-lock-mode 后就不卡了,但 js文件里的 html 代码就没有颜色高亮了 有什么办法可以兼顾可以代码高亮,又不会太卡? 先谢过^^

我这里没有你说对问题,profiler-report 里找不到 web-mode,可见其消耗资源很少:

(测试文件来自 electron-react-boilerplate 例子,总共几十行,也说明不了所有问题)

浏览了一下 spacemacs 的 react-mode,只是简单继承自 web-mode,应该不至于会有很大影响。如果是 font-lock-mode 这么基础的问题,估计全世界早就不能忍了。你可以试试把这个 layer 里的其它的包逐一屏蔽再观察。

每个人环境不同,提问最好附上相关的文件/脚本,让别人能一键重现你的问题。

  • 2011年的 Macbook Pro,CPU 2.3G
  • 原声 Emacs +web-mode + js-jsx-mode + flycheck …
1 个赞

你把smactparens-mode关了试试