Il pacchetto con più cursori rallenta l'emacs


9

Sto usando il pacchetto Cursori multipli in un file html ed è fantastico per alcuni cursori, ma se creo più di 30 o 50 cursori diventa terribilmente lento e ci vogliono circa cinque o sei secondi solo per spostare i cursori.
Lo sto usando in modo sbagliato o è solo che non è preparato per creare tanti cursori ?.


2
Dipende da cosa sta succedendo nel buffer - alcuni buffer sono solo più difficili per i cursori multipli di Magnar. A volte posso avere alcune centinaia senza un rallentamento significativo, altre volte (diciamo wdired-mode) solo un rallentamento. Esiste una richiesta di funzionalità aperta - debbugs.gnu.org/cgi/bugreport.cgi?bug=22873 - per spostare più funzionalità del cursore nel codice sorgente C, ma al momento è ancora in discussione. Uno dei miei punti di vendita proposti al team di sviluppo di Emacs era un potenziale aumento della velocità se fosse inserito nella base di codice C.
— elenco delle leggi

3
Non ho una soluzione ma volevo confermare la stessa lentezza anche per me. Non sarei sorpreso se il problema fosse ricondotto a problemi di blocco dei caratteri. Quando disattivo il blocco caratteri a livello globale, i cursori diventano di nuovo scattanti.
— Utente Emacs

1
... nel qual caso i cursori multipli non causerebbero direttamente i rallentamenti (anche se la lentezza risulta essere solo un fattore quando lo stai usando). Vorrei M-x profiler-startfare un sacco di cose lente e poi M-x profiler-report, e continuare a eseguire il drill-down degli elementi occupando la maggior parte del tempo della CPU fino a quando non è possibile isolarlo in qualche libreria particolare (se presente); quindi prova a disabilitare quella libreria. Non dimenticare di interrompere il profiler quando hai finito.
— phils,

Risposte:


5

È possibile impostare un elenco di modalità secondarie che non funzionano bene con la modalità a cursori multipli mc/unsupported-minor-modes. Qualsiasi modalità aggiunta a questo elenco verrà disabilitata quando si accede alla modalità a cursori multipli, verranno riattivati ​​una volta usciti dalla modalità a cursori multipli.

È possibile aggiungere un elemento a questo elenco in questo modo

(add-to-list 'mc/unsupported-minor-modes 'flyspell-mode)

Questo fa una grande differenza per la reattività della modalità cursori multipli. Ho scoperto che le due modalità minori che hanno avuto il maggiore impatto sono state la modalità linum e flyspell.


Se qualcuno potesse provare a spiegare perché flyspell rallenta le cose (o fornisce una ricetta concisa per riprodurre la lentezza con flyspell), forse potremmo provare a risolvere il problema.
— Stefan,

1
Ho provato a profilare la lentezza, ma non sono stato in grado di trovare alcun modello coerente. Detto questo, la lentezza introdotta da flyspell non è poi così male, il modulo che trovo di gran lunga peggiore è la modalità linum. La disattivazione della modalità linum mi ha permesso di passare da 30 cursori alla volta a oltre 600.
— Charles Ritchie il

Una ricetta riproducibile farebbe molto.
— Stefan,

1
Grazie per l'aiuto!. sembra che questo fosse il problema. Indent-guide-mode e Linum-mode dove quelli che devo disabilitare (ho disabilitato indent-guide e ho sostituito Linum con nlinum). Ora sono in grado di avere centinaia di cursori senza alcun ritardo.
— Fabman,

0

... più di 30 o 50 cursori diventa terribilmente lento ....

Ecco una soluzione temporanea: regola questa variabile

mc/max-cursors

a un valore inferiore a 30 come soluzione alternativa. L'impostazione predefinita è zero, il che significa nessun limite. Il numero effettivo per ripristinare la velocità dipende dal tipo di buffer, dai caratteri utilizzati e da qualsiasi altra cosa sia in esecuzione al momento. In ogni caso, il problema riscontrato è stato ampiamente segnalato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.