Monaco Editor获取插入符号

时间:2018-04-29 17:20:31

标签: monaco-editor

有没有办法将插入符号位置作为源代码字符串中的索引? 我知道我可以得到这个位置,它会给我一个包含行和列的对象,但有没有办法获取或转换line + column到string char index?

例如,如果我有:

using System;
using System.Data;

我将插入符号放在" .Data"之前,我知道如何获取行+ col坐标(第1行,第13列),但是如何获取char数组索引(应该有点像25)?

2 个答案:

答案 0 :(得分:1)

好的,不确定这是否是最好的方式,但以下似乎可以正常工作:

  1. 获取编辑位置(行+列)。
  2. 获取文字直到该位置。
  3. 获取该文字的长度
  4. 以下是一个示例代码:

    var line = window.editor.getPosition().lineNumber;
    var col = window.editor.getPosition().column;
    var textUntilPosition = window.editor.model.getValueInRange({ startLineNumber: 1, startColumn: 1, endLineNumber: line, endColumn: col });
    var currentPos = textUntilPosition.length;
    

答案 1 :(得分:1)

您可以使用Monaco Playground中的以下示例代码进行尝试。

您正在寻找的功能是ITextModel' getOffsetAt(IPosition)功能。

var model = monaco.editor.createModel(
    "using System;\n" +
    "using System.Data;",
    "csharp"
); 

var editor = monaco.editor.create(document.getElementById("container"), {
    model
});

var offset = model.getOffsetAt({ lineNumber: 2, column: 13 });
alert(offset);