![jit-lock-function зависание emacs](https://rvso.com/image/1711472/jit-lock-function%20%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%20emacs.png)
jit-lock-function потребляет слишком много ресурсов процессора и часто вешает мой emacs. Кто-нибудь сталкивался с такой же проблемой? Как решить?
ОС archlinux x64, процессор intel i7 4790, 16 ГБ ОЗУ. Работает только 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
).
Так что ваша проблема связана с c-font-lock, а не с jit-lock.
Пожалуйста, сообщите об этом как об ошибке через M-x report-emacs-bug
. Вероятно, вы захотите предоставить подробности о содержимом буфера, в котором она появляется (я предполагаю, что это файл C++).
Если это происходит в Emacs старше версии 26.3, то, вероятно, стоит попробовать Emacs-26.3, прежде чем сообщать об ошибке, поскольку производительность блокировки шрифтов в режиме C++ за последние годы регулярно улучшалась.