首页
学习
活动
专区
工具
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")方法触发自动补全。

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

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

相关·内容

9分0秒

使用VSCode和delve进行golang远程debug

6分27秒

083.slices库删除元素Delete

48秒

DC电源模块在传输过程中如何减少能量的损失

1分1秒

BOSHIDA 如何选择适合自己的DC电源模块?

1分18秒

如何解决DC电源模块的电源噪声问题?

53秒

DC电源模块如何选择定制代加工

1分30秒

基于强化学习协助机器人系统在多个操纵器之间负载均衡。

5分33秒

JSP 在线学习系统myeclipse开发mysql数据库web结构java编程

领券