codemirror 5.2版本实现自定义提示
1.页面引入相关JS文件
<script type="text/javascript" src="/static/lib/codemirror-5.2/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="/static/lib/codemirror-5.2/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="/static/lib/codemirror-5.2/codemirror/addon/hint/show-hint.js"></script>
<script type="text/javascript" src="/static/lib/codemirror-5.2/codemirror/addon/hint/javascript-hint.js"></script>
<script type="text/javascript" src="/static/lib/codemirror-5.2/codemirror/addon/hint/anyword-hint.js"></script>
2.初始化codemirror
需要一个原生textarea作为codemirror的初始化容器。
<textarea id="code" name="code" style="display: none"></textarea>
this.editor = CodeMirror.fromTextArea(document.getElementById('code'), {lineNumbers: false, // 不显示行号extraKeys: {'Ctrl': 'autocomplete'}, // 切换默认提示快捷键theme: 'sqlTheme', // 主题风格lineWrapping: true, // 自动换行autofocus: true,
});
3.设置自动提示
this.editor.on('cursorActivity', () => {if (this.editor.getValue() != this.editorData.content) {this.editor.showHint(this.handleShowHint()); // 传入处理自动提示的函数}
});
handleShowHint () {const cur = this.editor.getCursor(); // 获取当前最新输入const curLine = this.editor.getLine(cur.line); // 获取当前所在行数const end = cur.ch; // 获取最新输入结束位置const start = end - 1; // 设置检测输入的起始位置(本案例中只检测最新输入的一个字符)const word = curLine.charAt(start); // 获取最新输入的内容(本案例中为最新输入的一个字符)// list为筛选出的自动提示项的数组const list = this.paramsData.filter(param => {return param.indexOf(word) > -1;});return {hint: function() {return {from: CodeMirror.Pos(cur.line, start), // 需要自动替换的起始位置(本案例中为最新输入的一个字符的位置)to: CodeMirror.Pos(cur.line, end), // 需要自动替换的终止位置(本案例中为当前输入最末端)list, // 由自动提示项组成的数组}}};
}
其他注意点
给codemirror设置新文本后,需要调用refresh方法,才能更新显示内容。
this.editor.setValue(val);
setTimeout(() => {this.editor.refresh();
}, 200);
参考资料
CodeMirror 一些简单配置
CodeMirror sql智能提示功能修改
codemirror 5.2版本实现自定义提示相关推荐
- netbeans7.4_NetBeans 7.1:创建自定义提示
netbeans7.4 我已经在帖子中对我最喜欢的NetBeans提示进行了讨论,这些帖子中包含用于现代化Java代码的七个NetBeans提示和七个不可或缺的NetBeans Java提示 . 这两 ...
- NetBeans 7.1:创建自定义提示
我已经在帖子中介绍了一些我最喜欢的NetBeans提示 ,这些信息是用于使Java代码现代化的七个NetBeans提示和七个不可或缺的NetBeans Java提示 . 这两个帖子中涉及的十四个提示仅 ...
- wamp添加mysql版本_PHPWAMP自定义添加PHP版本教程,支持无限添加PHP和Mysql版本
我最新开发的PHPWAMP8.8.8.8n可以支持无限添加Mysql版本和php版本, 因为新版的自定义相对旧版本还是有点区别的,所以重写自定义PHP版本教程. 目前有很多网友自发在网上编写了PHPW ...
- Android Studio 3.0+ 版本的自定义lint检查
Android Studio 3.0+ 版本的自定义lint检查 定义LintModule 开发lint规则 lint库依赖 新建log检查规则 LogDetactor IssueRegistry 注 ...
- vue2实现codemirror在线代码编辑器(代码提示,行数显示..)
项目需求 需要在管理系统模块中实现用户SQL语句自查询,实现一个代码编辑器,要求有执行,清空,代码提示,行数显示功能,,实现效果如下: -------------------------------- ...
- 微信小程序自定义模态框,官方版本与自定义可扩展版本
微信小程序自定义模态框,官方版本与自定义可扩展版本 提示:文章最后有源码,可自取 文章主要通过模仿官方的模态框进行自定义模态框的设计,我将会先讲述原理,然后给出源码,最后指出一些需要注意的地方 提示: ...
- 原生html js css绘制折现图,HTML5教程 Chart.js自定义提示折线图
本篇教程探讨了HTML5教程 Chart.js自定义提示折线图,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < var randomScalingFactor ...
- Swift5版本以上自定义回调函数报错
Swift5版本以上自定义回调函数报错 最新swift版本要求在回调函数前面加入@escaping 关键字,以前不写,默认加入,现在不行了 假设一个类写一个全局类方法,第一步写一个class ,代表类 ...
- Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build
编译出现的问题 项目在Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build No cached versio ...
最新文章
- 奥城大学计算机专业,美国研究生院,双录取的学校有哪些?都有什么专业?
- 解决delphi10.2.3 android tools闪退
- 第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)
- Xampp中的apache,tomcat无法启动的问题
- 【Docker】 安装 nexus3
- 利用R、Octave和NumPy求解线性方程组
- stm32f103不同系列之间的代码移植
- grandMA2onPC控制UE4灯光
- 团队经理要应掌握的 7 大领导力理论
- 【教程】扫描识别工具Dynamic Web TWAIN使用教程:条码读取器(下)
- bootstrap3 表单构建器_Knex - 灵活轻便的 Node.js SQL 查询构建器
- java-php-python-ssm校园失物招领系统计算机毕业设计
- 创业计划书PPT模板
- 安装MinIO和使用MinIO Java SDK实现对文件的基本操作
- #C51 IIC通讯(底层配置时序)
- wireshark启用协议
- vue 报错 !!vue-style-loader!css-loader?{“sourceMap“:true}!.
- MacBook入门之——开机激活教程
- 成为一名Java高级架构师到底需要学习什么?
- SpringBoot框架部署配置SSL证书
热门文章
- KKT condition --- Karush–Kuhn–Tucker conditions
- 微信小程序获取数据库的数据返回空数组
- crm 公户变私户的问题 班级管理 课程管理 学习记录初始化
- 关于在u-boot中使用usb进行通信(一)
- 抖音壁纸小程序怎么做?手把手教你开通流量主拥有自己的壁纸小程序
- linux内核下网络驱动流程,基于Linux内核驱动的网络带宽测速方法与流程
- matlab藻类细胞结构,藻类细胞生物学实验室
- 使用谷歌的服务器训练
- oracle revoke语句,Oracle ROLLBACK语句
- dnet: Failed to open device lo0