MonacoEditor 主动触发代码提示功能

简介: MonacoEditor是微软提供的代码编辑器 vscode即是使用它作为编辑器。 它的开发语言是ts,可以嵌入到浏览器中。   代码提示或者说代码补全功能是我们经常需要定制的部分。 目前它提供的快捷键是ctrl+space,和win10以下的操作系统的默认中英文切换是冲突的。

MonacoEditor是微软提供的代码编辑器

vscode即是使用它作为编辑器。

它的开发语言是ts,可以嵌入到浏览器中。

 

代码提示或者说代码补全功能是我们经常需要定制的部分。

目前它提供的快捷键是ctrl+space,和win10以下的操作系统的默认中英文切换是冲突的。

检查源码发现,TriggerSuggestAction的触发快捷键已经写死:

 

        function TriggerSuggestAction() {
            return _super.call(this, {
                id: 'editor.action.triggerSuggest',
                label: nls.localize(0, null),
                alias: 'Trigger Suggest',
                precondition: contextkey_1.ContextKeyExpr.and(editorCommon_1.EditorContextKeys.Writable, editorCommon_1.ModeContextKeys.hasCompletionItemProvider),
                kbOpts: {
                    kbExpr: editorCommon_1.EditorContextKeys.TextFocus,
                    primary: 2048 /* CtrlCmd */ | 10 /* Space */,
                    mac: { primary: 256 /* WinCtrl */ | 10 /* Space */ }
                }
            }) || this;
        }

 

既然没法改快捷键,它的run方法实现如下:

        TriggerSuggestAction.prototype.run = function (accessor, editor) {
            SuggestController.get(editor).triggerSuggest();
        };

 

即是说,只要有办法调用这个triggerSuggest即可,但是SuggestControll而是个私有对象,要如何调用呢?

继续看源码:

        SuggestController.get = function (editor) {
            return editor.getContribution(SuggestController_1.ID);
        };
        SuggestController.prototype.getId = function () {
            return SuggestController_1.ID;
        };

    SuggestController.ID = 'editor.contrib.suggestController';
    SuggestController = SuggestController_1 

可以得出结论

editor.getContribution('editor.contrib.suggestController').triggerSuggest

这个就是我们所需要的调用代码。

 

当然,还有一种更推荐的形式:

editor.trigger('随便写点儿啥', 'editor.action.triggerSuggest', {});

 

目录
相关文章
|
Windows
万能脚本录制器(支持鼠标/键盘的前台和后台,支持多种绑定模式)
本人现承接各种脚本/程序。包括:网页脚本(网页数据读取,post提交,自动下注等。)办公脚本(Word Excel Xls操作等)安卓模拟器脚本游戏脚本(自动喊话等简单功能,复杂暂不接)等其他脚本各种程序。
14866 0
万能脚本录制器(支持鼠标/键盘的前台和后台,支持多种绑定模式)
|
3月前
|
传感器 自然语言处理 自动驾驶
自动执行与反馈
自动执行与反馈
18 1
|
7月前
|
消息中间件 架构师 数据处理
处理数据时点按钮,数据完数据时会自动执行的问题
处理数据时点按钮,数据完数据时会自动执行的问题
|
7月前
|
Java 编译器
即时编译的触发
即时编译的触发
|
12月前
SAP DALOG开发-代码触发回车事件
对于指定输入框:触发屏幕回车事件
184 0
|
前端开发
前端工作小结89-按钮禁用
前端工作小结89-按钮禁用
100 0
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
|
Web App开发
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
634 0
Chrome 插件开发-桌面通知设置实战演示,设置通知显示、存在时间
|
API Windows
万能脚本录制工具VIP版本(支持鼠标/键盘 前台/后台按键 支持模式更多更强大)
前言:鉴于很多朋友没有编程基础,无法自己制作脚本。本人编写了一款集录制脚本与执行脚本于一体的程序,并调用了大漠插件免费版本。使没有编程基础的同学也能制作自己的脚本。并引起了很多朋友的喜爱。并希望兼容更多的绑定模式。
4855 0
万能脚本录制工具VIP版本(支持鼠标/键盘 前台/后台按键 支持模式更多更强大)
|
监控
【新功能发布】定时暂停应用分组报警规则的通知发送
云监控的应用分组,旨在帮助用户按照业务维护管理监控报警。这次推出的报警规则定时暂停功能,可以在您的业务执行变更、升级,造成指标符合预期的波动时,定时关闭报警,不发送报警通知。
1460 0