如何在javascript中的当前光标位置点('。')之前获取令牌,以便在codemirror编辑器中自动完成?

时间:2015-06-10 14:08:52

标签: javascript regex codemirror

function (editor, currentPos) {
    return editor.getTokenAt(currentPos);
}

我正在为自定义语言设计代码编辑器。所以,我想根据模式状态做自动完成。我希望在.之前获取令牌,就像我们在hello期间按 CTRL + space 一样。然后,我的方法应该给我hello所以我可以建议一些与之相关的属性。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

javascript-hint插件执行类似这样的操作,继续在循环中获取前一个标记,直到找到不属于某个属性的内容。您可能希望代码看起来类似。

答案 1 :(得分:0)

我有一个类似的问题,我结束使用一大块代码来获取当前行,然后split'em获取最后一个标记(和。分隔符):

autocomplete(cm) {
   let full_line = cm.getValue();
   let end = cm.getCursor().ch;
   full_line = full_line.substr(0, end);
   let start = full_line.lastIndexOf(" ");

   if (start === -1) {
     start = 0;
   }

   let currentWord = full_line.substr(start, end - start);
   console.log(currentWord);

[...]

您可以在我的ember-plugin中看到完整的代码:https://github.com/hugoruscitti/ember-cli-jsconsole/blob/master/tests/dummy/app/controllers/application.js#L5