Retard de mouvement du point Emacs (curseur)

12

Lors de l'exécution previous-line, C-pou <up>le curseur saute sur une ligne sans aucun problème ou retard. Lors de l'exécution next-line, C-nou <down>le curseur saute correctement sur une ligne, mais avec un décalage important. Lorsque je maintiens la touche enfoncée, je ne vois même pas le point bouger, il apparaît juste quelque part en dessous. J'ai couru le profileur Emacs et il semble que le coupable soit cl-position. Ce que cela previous-linesignifie, c'est que bouge littéralement le curseur, tout en next-lineexécutant beaucoup de fonctions.

Sortie du profileur

Quel est le problème et comment le résoudre?

Damian Chrzanowski
la source
Utilisez-vous visual-line-mode? Avez-vous de très longues files d'attente?
Drew
Je n'utilise pas visual-line-modeet je n'ai pas de longues files d'attente.
Damian Chrzanowski

Réponses:

23

J'ai trouvé une réponse à ma question en réduisant le peu vilain et googler. J'ai réussi à réduire le décalage 10 fois !!!! Je veux dire ... C'est fou de voir combien de puissance de calcul next-lineutilisait pour déplacer un curseur vers le bas?!?!

La solution:

Mettez ce code dans votre init.el: (setq auto-window-vscroll nil)

La preuve:

Lag considérablement réduit

Maintenant next-linene déclenche line-move-partialdonc pas la réduction du décalage. Je ne me souviens pas de la mise en place auto-window-vscrollde t. Ce n'était nulle part dans aucun de mes .elfichiers, je ne sais pas comment cela a été configuré tpour commencer. Donc, si quelqu'un a des problèmes de performances avec le mouvement du curseur, la correction ci-dessus réduira le décalage d'environ 50% à 80% du temps de processeur à 5% du temps de processeur !!!

Pour vérifier rapidement si vous êtes affecté, lancez-le C-h v auto-window-vscroll. S'il est défini sur tvous, il se peut que vous rencontriez des problèmes de performances majeurs. Vérifiez avec le profileur Emacs si le mouvement du curseur provoque effectivement un décalage.

Bonne chance à mes amis Emacs !!!

Source de correction

Damian Chrzanowski
la source
S'il vous plaît envisager de déposer un bug Emacs (ou demande d'amélioration) pour cela: M-x report-emacs-bug.
Drew
2
Je le ferai, car je peux voir que c'est un problème pour beaucoup de gens.
Damian Chrzanowski
1
Merci, Damian, cela améliore les performances mais je me sens toujours un peu insensible
Neeraj Verma
3

Je ne sais pas vraiment quel est le problème, mais votre rapport de profileur semble indiquer que posn-at-point effectue plus de réaffichage que prévu, ce qui entraîne à son tour le recalcul de la ligne de mode, et que le courant porteur devrait faire plus d'efforts pour mémoriser son calcul pour la modeline.

IOW, je vous suggère M-x report-emacs-buget vous pourriez également signaler un bogue aux mainteneurs Powerline.

Stefan
la source
0

Il semble que vous utilisiez Powerline. En particulier, vous affichez le nom du projet projectile dans votre modélisation. Il y a eu récemment des améliorations au paquet de projectiles qui ont atténué une partie de cela. Assurez-vous que vous êtes à jour.

https://github.com/bbatsov/projectile/issues/1212

https://github.com/bbatsov/projectile/pull/1213

Il est également possible de mémoriser des fonctions que la modeline appelle. J'ai fait beaucoup de choses sur ma modeline pour le rendre très rapide.

Aaron Jensen
la source
Le problème a déjà été résolu, le projectile ou la ligne électrique n'étaient pas le problème
Damian Chrzanowski
Je suis content que vous l'ayez trié. Votre profil indiquait un ralentissement provenant du projectile. Il se peut que le fait de définir auto-window-vscroll sur nil ne fasse qu'emacs ignorer les calculs de ligne de mode inutiles. Quoi qu'il en soit, je suis content que vous l'ayez trié!
Aaron Jensen
C'est un bon point. Je n'ai vraiment pas eu le temps de vérifier quel paquet était le problème. Merci pour les suggestions!
Damian Chrzanowski
0

J'ai remarqué que mon doom-modelinecontribue également au retard. En fait, il est dit dans le doc de doom-modeline:

 ;; If it brings the sluggish issue, disable `doom-modeline-enable-word-count' or
 ;; remove the modes from `doom-modeline-continuous-word-count-modes'.

Après le réglage, (setq doom-modeline-enable-word-count nil)j'ai eu une accélération notable des mouvements du curseur.

Jason
la source