md编辑器相关技术记录
参考资料从零开始写一个富文本编辑器(一) - 掘金 (juejin.cn)
十分钟实现自己的Typora - 掘金 (juejin.cn)
Selection - Web API | MDN (mozilla.org)
Vditor 实现 Markdown 所见即所得 - 链滴 (ld246.com)
关于所见即所得 Markdown 编辑器的讨论 - 链滴 (ld246.com)
剪贴板操作 Clipboard API 教程 - 阮一峰的网络日志 (ruanyifeng.com)
SelectionSelection中存储用户选择的文本范围或者插入符号的位置,获取方式:window.getSelection()
在不可编辑元素中,插入点位置和选区范围必须通过鼠标的点击或者拖拽产生,在可编辑元素中,插入点位置和选取范围也可以通过键盘方向键变化。
可通过window.getSelection().toString()获取被选中的文字
Range可通过selection.getRangeAt获取
Range.commonAncestorContainer返回完整包含所选内容的最深一层的节 ...
编辑器LSP服务
参考资料理解 Language Server Protocol 的工作原理 - 掘金 (juejin.cn)
概述LSP为为编辑器提供的工作区内容索引服务,一般具有代码补全,纠错等功能。
基本作用原理在编辑器启动时会同时启动一个进程叫做语言服务,编辑器会将当前用户编辑的位置及相关消息通过进程间通信发送给语言服务进程,语言服务会根据用户当前编辑位置的上下文进行代码补全等处理,并将结果响应给编辑器
优点该协议使得语法补全等功能无需每个语言都要为每个编辑器适配一套,大家都遵循这一协议,每种语言只需要在该协议上提供服务,而每种编辑器只需要实现LSP的客户端与服务端即可。