我在让 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
}
正如您从我的示例链接中看到的那样,语法突出显示工作正常,但您也会注意到缩进没有按预期工作。
此代码镜像模式的代码在 github 上。它非常基于codemirror 的 html 混合模式。
我尝试将 copyState 添加到我的代码中,再次遵循 html 混合模式——
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
};
},
- 但这会导致另一种奇怪的缩进行为,并且最终无法正常工作。
很长一段时间以来,我一直在努力解决这个问题,但我无法通过谷歌、api 文档和论坛将它拼凑起来,所以任何帮助都将不胜感激!谢谢!