0

混合モードの内部モードに正しい自動インデントを適用するために codemirror を取得するのに問題があります。

ここでモードのライブバージョン (およびそれがどのように機能しないか) を確認できます: https://extremely-alpha.iodide.io/notebooks/216/しかし、要するに、アイデアは matlab スタイルのブロック区切り記号を使用して次のように言語を切り替えます。

%% js
[1,2,3].forEach(i => {
  console.log(i)
})

%% py
for i in range(5):
    for j in range(10):
        print i+j

%% css
div#foo {
    border: 1px solid pink
}

私のリンク例からわかるように、構文の強調表示は問題なく機能しますが、インデントが期待どおりに機能していないことにも気付くでしょう。

この codemirror モードのコードはgithub にあります。これは、 codemirror の html 混合モードに非常に基づいています。

html混合モードに続いて、コードにcopyStateを追加しようとしました-

copyState: state => {
    let local;
    if (state.localState) {
      console.log("state.localState copied");
      local = CodeMirror.copyState(state.localMode, state.localState);
    }
    return {
      token: state.token,
      localMode: state.localMode,
      localState: local
    };
  },

-- しかし、これは別の種類の奇妙なインデント動作を引き起こし、最終的には機能しません。

私はかなり長い間これに頭を悩ませてきました.Google、APIドキュメント、フォーラムを介してそれをまとめることができなかったので、どんな助けも大歓迎です! ありがとうございました!

4

1 に答える 1