MonacoEditor 主动触发代码提示功能

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', {});

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React-Monaco-Editor是一个基于React的代码编辑器组件,它使用了Monaco Editor作为底层编辑器。代码补全是React-Monaco-Editor的一个重要功能,可以帮助开发者在编写代码时提供自动补全的建议。 要实现React-Monaco-Editor代码补全功能,你需要进行以下几个步骤: 1. 安装React-Monaco-Editor:首先,在你的React项目中安装React-Monaco-Editor依赖包。你可以使用npm或者yarn进行安装,具体命令如下: ``` npm install react-monaco-editor ``` 或者 ``` yarn add react-monaco-editor ``` 2. 导入React-Monaco-Editor组件:在你的代码文件中,导入React-Monaco-Editor组件,并将其作为一个React组件来使用。具体代码如下: ```jsx import React from 'react'; import MonacoEditor from 'react-monaco-editor'; class CodeEditor extends React.Component { render() { return ( <MonacoEditor language="javascript" // 设置编辑器语言 theme="vs-dark" // 设置编辑器主题 options={{ // 设置编辑器选项 automaticLayout: true, // 自动调整布局 suggestOnTriggerCharacters: true, // 在输入特定字符时触发建议 wordBasedSuggestions: true, // 基于单词的建议 suggestSelection: 'first', // 选择第一个建议 ...其他选项 }} // 其他属性 /> ); } } ``` 3. 配置代码补全:在上述代码中的`options`属性中,你可以配置编辑器的各种选项,包括代码补全相关的选项。具体来说,你可以设置`suggestOnTriggerCharacters`为`true`,以在输入特定字符时触发建议。你还可以设置`wordBasedSuggestions`为`true`,以基于单词进行建议。此外,你还可以设置其他相关的选项来自定义代码补全的行为。 以上就是使用React-Monaco-Editor实现代码补全的基本步骤。你可以根据自己的需求进行进一步的配置和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值