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.