2

我正在尝试通过替换 CodeMirror v3 中选择的令牌

var obj = editor.getTokenAt(currLine);
var currLine = editor.getCursor(true);  

但似乎唯一的选择是

replaceRange

它考虑了新字符串和起始位置,但是当新字符串比原始字符串短或长时会发生奇怪的事情。

有什么更好的方法呢?

currLinereplace 

似乎对我不起作用。

谢谢!

4

2 回答 2

4
var pos = editor.getCursor() // or {line , ch };
var tok = editor.getTokenAt(pos);
editor.replaceRange("string", {line: pos.line , ch:tok.start},{line:pos.line , ch:tok.end});
于 2012-12-06T14:31:36.437 回答
0

我必须显示自定义提示列表以替换选择时的加入令牌。用正确的参数调用 replaceRange 方法是不够的。它粘贴了新标记,但在初始标记内部,具体取决于光标位置。如果我们有自定义提示选项,我们还需要在提示选项中指定 from 和 to 位置,以使 replaceRange 正常工作,例如:

const options = {
    hint: () => ({
      from: token.start, // without this replaceRange didn't work not correctly
      to: token.end, // without this replaceRange didn't work not correctly
      list: ['left join', 'right join', 'inner join', 'outer join'] // custom list of options
    })
  };
  cm.showHint(options); // this is to show custom hint
于 2020-07-29T02:38:15.403 回答