2

我正在使用带有模式 模式缩进的Codemirror编辑器工作正常,除了在一个地方。javascriptJavascript

当我在光标位于右括号之前按 Enter 时,缩进不起作用。

function myFunction(){
}

光标停留在右括号之前。请帮忙

4

1 回答 1

4

如果我理解正确,您将光标放在“|”的位置 在这段代码中:

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;
            }
        }
    });
});
于 2013-05-12T23:15:05.673 回答