問題タブ [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.

0 投票する
1 に答える
324 参照

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 以降