jit-lock-function ハングアップ emacs

jit-lock-function ハングアップ emacs

jit-lock-function は CPU を大量に消費し、emacs が頻繁にハングアップします。同じ問題に遭遇した人はいますか? どうすれば解決できますか?

OS は archlinux x64、CPU intel i7 4790、RAM 16GB です。システム サービス以外は emacs のみが稼働しています。

ありがとう!

プロファイラーレポートには次のように表示されます。

- redisplay_internal (C function)                                2728  90%
 - jit-lock-function                                             2724  89%
  - jit-lock-fontify-now                                         2724  89%
   - jit-lock--run-functions                                     2724  89%
    - run-hook-wrapped                                           2724  89%
     - #<compiled 0x40f2001>                                     2724  89%
      - font-lock-fontify-region                                 2724  89%
       - c-font-lock-fontify-region                              2724  89%
        - font-lock-default-fontify-region                       2716  89%
         - font-lock-fontify-keywords-region                     2712  89%
          - c-font-lock-declarations                             1932  63%
           - c-find-decl-spots                                   1912  63%
            - #<compiled 0x22af545>                              1148  37%
             - c-get-fontification-context                        732  24%
              - c-looking-at-or-maybe-in-bracelist                504  16%
               + c-backward-token-2                               472  15%
              - c-back-over-member-initializers                   108   3%
               + c-back-over-compound-identifier                   56   1%
               + c-parse-state                                     32   1%
                 c-backward-sws                                     8   0%
              + c-back-over-compound-identifier                    68   2%
              + c-backward-token-2                                 16   0%
                c-backward-sws                                      4   0%
             + c-forward-decl-or-cast-1                           240   7%
             + c-forward-label                                     60   1%
             + c-backward-token-2                                  16   0%
             + c-backward-sws                                      12   0%
             + c-font-lock-single-decl                              8   0%
               c-syntactic-re-search-forward                        4   0%
            + c-bs-at-toplevel-p                                  672  22%
            + c-beginning-of-macro                                 28   0%
              c-forward-sws                                         8   0%
              c-backward-token-2                                    4   0%
            c-font-lock-<>-arglists                               304  10%
          + #<compiled 0x22b6359>                                  92   3%
            #<compiled 0x22b6381>                                  68   2%
            #<compiled 0x22b5fbd>                                  32   1%
            #<compiled 0x22b62b9>                                  32   1%
            #<compiled 0x22b625d>                                  28   0%
            #<compiled 0x22b62fd>                                  28   0%
            #<compiled 0x22b631d>                                  28   0%
            #<compiled 0x22b63d5>                                   8   0%
          + c-font-lock-enclosing-decls                             4   0%
            c-font-lock-enum-body                                   4   0%
            #<compiled 0x22b6669>                                   4   0%
           font-lock-fontify-syntactically-region                   4   0%
        + c-before-context-fl-expand-region                         8   0%

答え1

あなたの指摘は少し間違っています。時間の 89% は で費やされていますjit-lock-functionが、この時間はすべてc-font-lock-fontify-region( から間接的に呼び出されるjit-lock-function)でも費やされています。

したがって、問題は jit-lock ではなく c-font-lock にあります。

これをバグとして から報告してくださいM-x report-emacs-bug。おそらく、このエラーが現れるバッファの内容の詳細を知らせる必要があるでしょう (C++ ファイルであると想定します)。

これが 26.3 より古い Emacs の場合、c++ モードのフォントロックのパフォーマンスは長年にわたって定期的に改善されているため、バグを報告する前に Emacs-26.3 で試してみる価値があるでしょう。

関連情報