python-modeが時々すべてを文字列としてハイライト表示しないようにするにはどうすればよいですか


7

python-modeは自分のPythonコードに使用しています。構文ハイライターが時々混乱し、バッファー内のすべてが文字列リテラルであると思います。これは通常、docstringを作成するときに発生するようです。引用符を入力してから数秒間、カーソルの後のすべてが文字列として強調表示されます。

これを完全に防ぐ方法はありますか?または、そうでない場合、emacs / python-modeをより迅速に回復させる方法はありますか?

ed:明確にするために、引用符が閉じられてバッファが保存された後でも、誤った強調表示が持続します。しかし、これは毎回ではなく、時々です。


5
冒頭の引用符を入力した後ですか?なぜなら、その場合には、バッファの残りがある(DOC)文字列が。Emacsにカーソルなどの後に自動的に閉じる引用符を挿入させることで、これを解決できます。
Tikhon Jelvis 2014年

いいえ、ハイライトは、見積もりが閉じられた後、数秒間持続する場合があります(現在、emacsで挿入されていません)
abingham

うーん、REPLを使用していて、誤って大量のテキストを印刷すると、いつも同じようなことが起こります。関連しているかどうかはわかりませんが、この問題は単なる問題ではない可能性がありpython-modeます。
purple_arrows 2014年

興味深い点。私はc ++モードを少しテストしましたが、動作は同じようです。文字列リテラルを十分に「開いた」ままにしておくと、バッファの残りの部分が文字列の一部として強調表示されます(これは完全に理にかなっています)。リテラルを閉じた後、強調表示が回復するまで数秒かかる場合があります。すると、バッファを再解析/強調表示するようにemacsに指示するタイマーがあるようです。
アビンガム2014年

このバグを報告してみましたか?
ドミトリー

回答:


6

バッファを変更すると、変更した行だけがすぐに再強調表示されます。変更がさらに下の行の強調表示に影響を与える場合、これらは後でアイドルタイマーを介して再強調表示されます(つまり、入力を停止した後に発生します)。

この遅延はjit-lock-context-time、デフォルトで0.5秒に制御されます。これは「Emacsが0.5秒間アイドル状態であった」ことを意味することに注意してください。コマンドの間隔が0.5秒を超えずにEmacsコマンドを続けている限り、再強調表示は行われません。

0.5秒以上かかり、この過度の遅延をトリガーするレシピが考えられる場合は、を使用してくださいM-x report-emacs-bug

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