問題タブ [qscintilla]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - QScintilla lexer の setAutoIndentStyle() が機能しない
自動インデントは、QScintilla が提供する非常に優れた機能です。新しい行を挿入すると、自動インデントによってカーソルが前の行と同じインデント レベルに移動します。
1.レクサーなし レクサー
をインストールしていない場合は、次のように簡単にこの機能をオンにすることができます。
self.__editor
このコードラインの は のインスタンスでQsciScintilla()
あるため、コード内の実際のエディターを表します。
2.レクサー
を使用
する レクサーをアクティブにしても、以前のアプローチは引き続き機能します。ただし、レクサーがその設定をオーバーライドする可能性があるため、これはあまり良い方法ではありません。したがって、以前のコードラインを削除し、レクサーで自動インデントをオンにすることをお勧めします。
このアプローチのもう 1 つの利点は、柔軟性が高いことです。レクサーで自動インデントをオンにすると、次のいずれかを選択できます (または組み合わせることもできます)。
QsciScintilla.AiOpening
QsciScintilla.AiClosing
QsciScintilla.AiMaintain
3. 問題
最初の段落で説明した方法は、レクサーを使用せずに機能します。lexer を使用した 2 番目の段落で説明したアプローチはそうではありません。へのパラメータとしてどの設定を選択してsetAutoIndentStyle(..)
も、何も変わりません。
なんで?
4. 実験する完全な例
ここに実験する例があります。コピーして.py
ファイルに貼り付けて実行するだけです。簡単な構文強調表示を備えた作業用エディターを取得する必要があります。これを使用して、自動インデントを試すことができます。
QScintilla の私の Web サイトからこの例を取り上げました (そして、この質問のニーズに合わせて少し調整しました): https://qscintilla.com/custom-lexer-example/
5. メモ
完全を期すために、これは私のシステムです。
- ウィンドウズ10
- パイソン3.6
- QScintilla 2.10 以降