【发布时间】:2019-01-15 20:58:40
【问题描述】:
我在让 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
}
从我的示例链接中可以看出,语法高亮工作正常,但您也会注意到缩进没有按预期工作。
此代码镜像模式的代码是here on github。它非常基于codemirror's html mixed mode。
我尝试将 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 文档和论坛将其拼凑起来,因此我们将不胜感激!谢谢!
【问题讨论】:
标签: codemirror codemirror-modes react-codemirror