複数のカーソルパッケージにより、emacsの実行が遅くなる


9

私はhtmlファイルでMultiple Cursorsパッケージを使用しており、いくつかのカーソルに最適ですが、30または50を超えるカーソルを作成すると、非常に遅くなり、カーソルを移動するだけで約5秒または6秒かかります。
私はそれを間違って使用していますか、それともそれだけ多くのカーソルを作成する準備ができていないだけですか?


2
それはバッファで何が起こっているかに依存します-いくつかのバッファはマグナーのマルチカーソルにとってはもっと難しいです。大幅な速度低下なしで数百人になることもあれば、数パーセント(としましょうwdired-mode)で速度低下が発生することもあります。複数のカーソル機能をCソースコードに移動するというオープン機能リクエスト-debbugs.gnu.org/cgi/bugreport.cgi?bug=22873-がありますが、それは現時点ではまだ議論中です。Emacs開発チームに提案したセールスポイントの1つは、Cコードベースに組み込んだ場合に速度が向上する可能性があることです。
法律家、2016年

3
解決策はありませんが、同じように遅いことも確認したいと思います。問題の原因がフォントロックの問題であることに驚かされません。フォントロックをグローバルにオフにすると、カーソルが再びきびしくなります。
Emacsユーザー

1
...その場合、複数のカーソルが直接スローダウンの原因になることはありません(使用しているときの速度が要因であることが判明した場合でも)。私はいくつかM-x profiler-startの遅いことを行いM-x profiler-report、その後、特定のライブラリー(存在する場合)に分離できるまで、CPU時間の大部分を占めている項目をドリルダウンし続けます。次に、そのライブラリを無効にしてみてください。使い終わったらプロファイラーを停止することを忘れないでください。
phils 2016年

回答:


5

マルチカーソルモードではうまく機能しないマイナーモードのリストは、を介して設定できますmc/unsupported-minor-modes。このリストに追加されたモードは、複数カーソルモードに入ると無効になり、複数カーソルモードを終了すると再び有効になります。

このリストにアイテムを追加できます

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

これは、複数カーソルモードの応答性に大きな違いをもたらします。最大の影響を与える2つのマイナーモードは、リナムモードとフライスペルでした。


誰かがflyspellが物事を遅くする理由を試して説明できる場合(またはflyspellで遅延を再現するための簡潔なレシピを提供する場合)、問題を解決することができます。
ステファン

1
私は遅さをプロファイルしようとしましたが、一貫したパターンを見つけることができませんでした。flyspellによって導入された速度低下はそれほど悪くはないと言われていると私がはるかに悪いことに見つけたモジュールはlinumモードです。アマモードをオフにすると、私は600を超えるまでの時間で30カーソルから行くことを許さ
チャールズ・リッチー

再現可能なレシピは長い道のりになります。
ステファン

1
お手伝いありがとう!。これが問題だったようです。Indent-guide-modeとLinum-modeを無効にしなければなりません(私はindent-guideを無効にしてLinumをnlinumに置き換えました)。今、私は何百ものカーソルを遅れることなく持つことができます。
ファブマン2018

0

... 30または50を超えるカーソルは、非常に遅くなります....

これが一時的な解決策です:この変数を調整してください

mc/max-cursors

回避策として、30未満の値にしてください。デフォルトはnilで、制限がないことを意味します。速度を元に戻す実際の数は、バッファタイプ、使用されているフォント、およびその時点で実行されている他のすべてのものによって異なります。いずれにせよ、あなたが抱えている問題は広く報告されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.