Ao executar previous-line
, C-p
ou <up>
o cursor salta uma linha sem problemas ou atrasos. Ao correr next-line
, C-n
ou <down>
o cursor salta corretamente para baixo de uma linha, mas com um atraso significativo. Quando pressiono a tecla para baixo, nem consigo ver o ponto em movimento, ele aparece em algum lugar abaixo. Corri o profiler Emacs e parece que o culpado é cl-position
. O que parece ser que previous-line
literalmente apenas move o cursor, enquanto next-line
executa várias funções.
Qual é o problema e como ele pode ser corrigido?
visual-line-mode
? Você tem algumas linhas muito longas?visual-line-mode
e não tenho longas filas.Respostas:
Eu encontrei uma resposta para a minha pergunta, restringindo a parte desobediente e pesquisando no Google. Eu consegui reduzir o atraso 10 vezes !!!! Quero dizer ... É insano quanto poder de computação
next-line
estava usando para mover um cursor para baixo?!?!O conserto:
Coloque este código no seu init.el:
(setq auto-window-vscroll nil)
A prova:
Agora
next-line
não dispara,line-move-partial
portanto, reduzindo o atraso. Não me lembro de configurarauto-window-vscroll
at
. Não estava em nenhum lugar em nenhum dos meus.el
arquivos, não sei ao certo como foi definidot
para começar. Portanto, se alguém tiver problemas de desempenho com o movimento do cursor, a correção acima reduzirá o atraso de cerca de 50% a 80% do tempo da CPU para 5% do tempo da CPU !!!Para verificar rapidamente se você é afetado, basta executar
C-h v auto-window-vscroll
. Se estiver definido,t
você pode estar tendo problemas importantes de desempenho. Verifique com o criador de perfil Emacs se o movimento do cursor realmente causa um atraso.Boa sorte, companheiros amantes do Emacs !!!
Fonte de correção
fonte
M-x report-emacs-bug
.Não tenho certeza absoluta de qual é o problema, mas seu relatório do profiler parece indicar que o posn-at-point executa mais uma reexibição do que o esperado, o que, por sua vez, causa recomputação da linha de modo e que a linha de força deve fazer mais esforço para memorizar seu cálculo para a modelagem.
IOW, sugiro que
M-x report-emacs-bug
você também possa relatar um bug aos mantenedores da linha de energia.fonte
Parece que você está usando o powerline. Em particular, você exibe o nome do projeto de projétil em sua modelagem. Houve algumas melhorias no pacote de projéteis recentemente que mitigaram parte disso. Verifique se você está atualizado.
https://github.com/bbatsov/projectile/issues/1212
https://github.com/bbatsov/projectile/pull/1213
Também é possível memorizar funções que a modelo chama. Eu fiz muito isso na minha modelagem para torná-la muito rápida.
fonte