vue3使用manaco代码提示多次显示bug

https://github.com/microsoft/monaco-editor/issues/2217

https://github.com/microsoft/monaco-editor/issues/2084

<template>
  <div :id="'codeEditBox' + index" class="codeEditBox" v-if="isChange"></div>
</template>
let editors

let editor

onBeforeUnmount(() => {    // 在销毁后清空  好像只用一个就行 

  editor.dispose()

  editors.dispose()

})

onUnmounted(() => {    // 在销毁后清空  好像只用一个就行 

  editor.dispose()

  editors.dispose()

})

nextTick(() => {

    monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({

      noSemanticValidation: true,

      noSyntaxValidation: false

    })

    monaco.languages.typescript.javascriptDefaults.setCompilerOptions({

      target: monaco.languages.typescript.ScriptTarget.ES2016,

      allowNonTsExtensions: true

    })

    let a = 'codeEditBox' + props.index        // 封装的组件 多个标签页 id需要不同

    !editor

      ? (editor = monaco.editor.create(document.getElementById(a) as HTMLElement, {

          // value: text.value, // 编辑器初始显示文字

          value: props.inputList.script1, // 编辑器初始显示文字

          language: 'python' || 'sql', // 语言支持自行查阅demo

          automaticLayout: true, // 自适应布局

          theme: 'hc-dark', // 官方自带三种主题vs, hc-black, or vs-dark

          foldingStrategy: 'indentation',

          renderLineHighlight: 'all', // 行亮

          selectOnLineNumbers: true, // 显示行号

          minimap: {

            enabled: false

          },

          readOnly: false, // 只读

          fontSize: 12, // 字体大小

          scrollBeyondLastLine: false, // 取消代码后面一大段空白

          overviewRulerBorder: false // 不要滚动条的边框

        }))

      : editor.setValue('')

    // console.log(editor)

    // 监听值的变化

    editor.onDidChangeModelContent((val: any) => {

      text.value = editor.getValue()

    })

    editors = monaco.languages.registerCompletionItemProvider('python', {

      provideCompletionItems: function () {

        let suggestions = []

        // 这个keywords就是python.js文件中有的

        pythonLanguage.keywords.forEach((item) => {

          suggestions.push({

            label: item,

            kind: monaco.languages.CompletionItemKind.Keyword,

            insertText: item

          })

        })

        return {

          // 最后要返回一个数组

          suggestions: suggestions

        }

      }

    })

  })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值