Monaco Editor --Web编辑器 自定义主题、代码提示等

官网: Monaco Editor

JS配置信息:

//相关的包配置需要下载到对应目录
require.config({ paths: { 'vs': './vs' }});
    require(['vs/editor/editor.main'], function() {
        monaco.editor.defineTheme('BlackTheme', {
            base: 'vs-dark',
            inherit: true,
            rules: [{ background: '#3e414a' }],
            colors: {
                // 相关颜色属性配置
                // 'editor.foreground': '#000000',
                'editor.background': '#3e414a',     //背景色
                // 'editorCursor.foreground': '#8B0000',
                // 'editor.lineHighlightBackground': '#0000FF20',
                // 'editorLineNumber.foreground': '#008800',
                // 'editor.selectionBackground': '#88000030',
                // 'editor.inactiveSelectionBackground': '#88000015'
            }
        });
        //设置自定义主题
        monaco.editor.setTheme('BlackTheme');
        
        //创建编辑器
        editor = monaco.editor.create(document.getElementById('container'), {
            value: '',
            language: 'python',
            theme:'BlackTheme',
            automaticLayout: true,
            fontSize : '20px',
        });
        
        // 创建代码提醒
        monaco.languages.registerCompletionItemProvider('python', {
            provideCompletionItems: function(model, position) {
            // find out if we are completing a property in the 'dependencies' object.
                var textUntilPosition = model.getValueInRange({
                    startLineNumber: 1, 
                    startColumn: 1, 
                    endLineNumber: position.lineNumber, 
                    endColumn: position.column
                    });
                var suggestions = [];
                var word = model.getWordUntilPosition(position);
                var range = {
                    startLineNumber: position.lineNumber,
                    endLineNumber: position.lineNumber,
                    startColumn: word.startColumn,
                    endColumn: word.endColumn
                };

                if(textUntilPosition.charAt(textUntilPosition.length-2)=='.'){
                    suggestions = createTips();
                }
                return {suggestions: suggestions};
            }
        });
    });

    // 代码提示方法(返回一个数组)
    function createTips() {
        return [
		{
			label: 'SetValue', //显示的提示名称
			insertText: 'SetValue("text")' //选择后粘贴到编辑器中的文字
		},
        ]
    }

HTML前端代码

<body overflow:hidden style="padding:0;margin:0">
    <div id="container" style="width:100%;height:100vh;border:0px"></div>
</body>    
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风干牛肉巴旦木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值