首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用(.)触发两个不同的自定义自动补全程序ace编辑器中的句号和Ctrl_space

在ace编辑器中,可以通过使用.触发两个不同的自定义自动补全程序。下面是一种实现方式:

  1. 首先,需要在ace编辑器中注册两个自定义的自动补全程序。可以使用setCompleters方法来实现,该方法接受一个包含自动补全程序的数组作为参数。
代码语言:txt
复制
var editor = ace.edit("editor");

// 自定义自动补全程序1
var completer1 = {
  getCompletions: function(editor, session, pos, prefix, callback) {
    // 自定义自动补全逻辑1
    // ...
    // 返回自动补全结果
    callback(null, completions);
  }
};

// 自定义自动补全程序2
var completer2 = {
  getCompletions: function(editor, session, pos, prefix, callback) {
    // 自定义自动补全逻辑2
    // ...
    // 返回自动补全结果
    callback(null, completions);
  }
};

// 注册自动补全程序
editor.completers = [completer1, completer2];
  1. 接下来,需要监听.键的按下事件,并根据光标位置判断触发哪个自动补全程序。可以使用on("keydown")方法来实现。
代码语言:txt
复制
editor.on("keydown", function(e) {
  if (e.keyCode === 190 && e.getCompletions() === null) {
    var cursorPos = editor.getCursorPosition();
    var line = editor.session.getLine(cursorPos.row);
    var prefix = line.slice(0, cursorPos.column).split(/[^\w.$]+/).pop();

    // 根据光标位置判断触发哪个自动补全程序
    if (prefix === ".") {
      editor.execCommand("startAutocomplete");
    } else {
      editor.execCommand("startAutocomplete");
    }
  }
});

以上代码中,通过监听键盘按下事件,当按下.键时,获取光标位置和当前行的内容,提取出.之前的字符串作为前缀。然后根据前缀判断触发哪个自动补全程序,调用execCommand("startAutocomplete")方法触发自动补全。

需要注意的是,以上代码只是一种实现方式,具体的自动补全逻辑和触发方式可以根据实际需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券