Codemirror javascript缩进问题

Codemirror javascript indentation issue

本文关键字:问题 缩进 javascript Codemirror      更新时间:2023-09-26

我使用javascript模式的Codemirror编辑器Javascript模式缩进工作良好,除了一个地方。

当光标位于右括号前时,按回车键,缩进不起作用

function myFunction(){
}

游标停留在右括号前。请帮助

如果我理解正确的话,您将光标放置在代码中"|"所在的位置:

function myFunction() {|}

…,按"Enter"。我猜你期待的是这样的事情?

function myFunction() {
    |
}

这不是CodeMirror的默认行为,但是您可以编写一个相当简单的附加组件来更改它。这是一个粗略的开始:

CodeMirror.defineInitHook(function (codeMirror) {
    codeMirror.addKeyMap({
        name: "fixEnterWithinBraces",
        Enter: function (codeMirror) {
            if (codeMirror.somethingSelected()) return CodeMirror.Pass;
            var cursorPos = codeMirror.getCursor();
            var line = codeMirror.getLine(cursorPos.line);
            if (line.substr(cursorPos.ch - 1, 2) === "{}") {
                codeMirror.replaceRange("'n'n", cursorPos);
                codeMirror.setCursor(cursorPos.line + 1, 0);
                codeMirror.indentLine(cursorPos.line + 1);
            } else {
                return CodeMirror.Pass;
            }
        }
    });
});