CodeMirrorのカスタムモードで、ユーザーが単語で始まる行を入力したときに、electricInputイベントを発生させたいbank
(オプションの先頭の空白を含む)。
私はelectricInputを次のように設定しています: electricInput: /\s*bank$/i
イベントは、ユーザーbank
が行の先頭に入力したときに発生します。単語の前にスペースがある場合は起動しませんbank
。どうして?
(RegExは問題ないようです。同じRegExを使用するそのモードの文法ルールがあり、先頭の空白に関係なく、期待どおりにトークンと一致します。
CodeMirror.defineSimpleMode("myMode", {
start: [
{regex: /\s*bank$/i, token: 'bank', sol: true, indent: true}
CodeMirrorディスカッションフォーラムでのMarijnの親切なヘルプのおかげで、私はこれを解決することができました。カスタムindent
関数をに渡す必要がありますdefineSimpleMode
。次に、設定する必要がありますelectricInput
(そうしないと、入力時にインデント関数が呼び出されないためbank
)。ただし、のイベントハンドラonElectricInput
は必要ありません。
CodeMirror.defineSimpleMode("myMode", {
start: [
...
],
meta: {
electricInput: /\s*bank$/i,
indent: function (state, textAfter, line) {
if (textAfter.substring(0, 4).toLowerCase() === 'bank') return 0
return 2;
}
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加