摩纳哥编辑器获取插入符号的源代码索引
Monaco Editor get source code index of caret
有没有办法在源代码字符串中获取插入符号位置作为索引?
我知道我可以获得位置,这将给我一个包含行和列的对象,但是有没有办法获取或将行 + 列转换为字符串字符索引?
例如,如果我有:
using System;
using System.Data;
我将插入符号放在“.Data”之前,我知道如何获取行 + col 坐标(第 1 行,第 13 行),但如何获取 char 数组索引(应该类似于25)?
好的,不确定这是否是最好的方法,但以下方法似乎可以正常工作:
- 获取编辑位置(行+列)。
- 获取该位置之前的文本。
- 获取该文本的长度
这是一个示例代码:
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;
您可以使用 Monaco Playground 中的以下示例代码进行尝试。
您要找的函数是ITextModel's 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);
有没有办法在源代码字符串中获取插入符号位置作为索引? 我知道我可以获得位置,这将给我一个包含行和列的对象,但是有没有办法获取或将行 + 列转换为字符串字符索引?
例如,如果我有:
using System;
using System.Data;
我将插入符号放在“.Data”之前,我知道如何获取行 + col 坐标(第 1 行,第 13 行),但如何获取 char 数组索引(应该类似于25)?
好的,不确定这是否是最好的方法,但以下方法似乎可以正常工作:
- 获取编辑位置(行+列)。
- 获取该位置之前的文本。
- 获取该文本的长度
这是一个示例代码:
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;
您可以使用 Monaco Playground 中的以下示例代码进行尝试。
您要找的函数是ITextModel's 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);