• 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="100%;height:100vh;border:0px"></div>
    </body>    
    
  • 相关阅读:
    OpenResty 作者章亦春访谈实录
    linux 下C语言学习路线
    swift 集合类型
    不懂技术的人不要对懂技术的人说这很容易实现
    java学习笔记7--抽象类与抽象方法
    java学习笔记6--类的继承、Object类
    python练习题
    python的里字典和列表
    python里list列表,tuple元组内部功能介绍
    python里float和long内部功能及字符串str介绍
  • 原文地址:https://www.cnblogs.com/yincq/p/14006053.html
Copyright © 2020-2023  润新知