codemirror6 实现自定义代码提示
1、需求
采用codemirror 6版本开发 ,要求:自定义代码提示 ,通过输入关键字,实现代码片段覆盖。
类似于Vscode中输入VueInit ,显示代码片段:
-
<template lang="">
-
<div>
-
-
</div>
-
</template>
-
<script>
-
export default {
-
-
}
-
</script>
-
<style lang="">
-
-
</style>
参考官网:CodeMirror Autocompletion Example 中的Providing Completions。
2、初始化
加载以下依赖包
-
npm i codemirror
-
npm i @codemirror/autocomplete
-
npm i @codemirror/theme-one-dark
添加容器 并绑定id
<div id="codemir" ></div>
js中引用
-
-
import { basicSetup, EditorView } from "codemirror";
-
import { oneDark } from "@codemirror/theme-one-dark"; //黑色主题编辑器
-
import { autocompletion } from "@codemirror/autocomplete";
在onMounted初始化codemirror ,并添加对应id
-
const editor = new EditorView({
-
doc: "Press Ctrl-Space in here...\n",
-
extensions: [
-
basicSetup,
-
oneDark,
-
],
-
parent: document.getElementById("coder"),
-
options: {},
-
});
3、设置代码提示
其中from为当前位置 , options为自定义提示列表。apply 为需求中提到的自定义代码,还有info 信息提示 等。
-
function myCompletions(context) {
-
let word = context.matchBefore(/\w*/)
-
if (word.from == word.to && !context.explicit) return null;
-
return {
-
from: word.from,
-
options: [
-
{ label: "match", type: "keyword" },
-
{ label: "hello", type: "variable", info: "(World)" },
-
{ label: "magic", type: "text", apply: "⠁⭒*.✩.*⭒⠁", detail: "macro" },
-
],
-
};
-
}
最后,将codemirror绑定自定义的代码提示,使用extensions
-
const editor = new EditorView({
-
doc: "Press Ctrl-Space in here...\n",
-
extensions: [
-
basicSetup,
-
oneDark,
-
autocompletion({ override: [myCompletions] })
-
],
-
parent: document.getElementById("coder"),
-
options: {
-
},
-
});
4、其他优化
代码回显:
-
editor.dispatch({
-
changes: { from: 0, to: editor.state.doc.length, insert: content },
-
}); //插入content
以及代码更新监测 :
-
const editor = new EditorView({
-
doc: "Press Ctrl-Space in here...\n",
-
extensions: [
-
basicSetup,
-
oneDark,
-
autocompletion({ override: [myCompletions] }),
-
EditorView.updateListener.of((v) => {
-
console.log(v.state.doc.toString()) //监测得到的最新代码
-
}),
-
],
-
parent: document.getElementById("coder"),
-
options: { },
-
});
5、实现效果
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkcekh
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22