增加quote功能
主要有整理笔记时, 有些内容需要注意引用的需求, 在给[^2]提交PR后很可惜作者一直没有上线, 就去提交给了markdown all in one, 在大佬们的讨论中, 发现这样一个场景, markdown的语法中对于引用只要求>符号即可, 但是在各渲染及自动补充的实现中, 追加空格是个优雅的习惯. 然后在[^3]的review中, 大佬发现针对是否增加空格, 针对多级列表, github的markdown渲染的表现还不一致. 这就导致这套实现存在局限性了, 轻易引入存在较大bug风险了.
所以这个插件暂时主要用于下述需求的场景, 对于需要对多级列表等进行引用的场景, 还没有一个比较好的方案.
自己先单独封装了一个来使用.
场景
- 当
cursor
在某个位置, 未选中任何内容- 需求: 该行行首增加
>
即可
- 需求: 该行行首增加
- 当选中了单行中的部分文本
- 该文本所在行首增加
>
- 该文本所在行首增加
- 当选中了多行文本
- 每行选中文本的行首增加
>
即可. - 或者根据每行行首绝对如何反转,是增加还是删除
- 不对,根据我个人的需求, 应该是三种状态, 如果存在未补全的, 则补全. 如果全部补全了才需要进行反转.
- 每行选中文本的行首增加
- 针对一些非标准格式的quote是否需要支持修改? 增加一个修正吧. 只要是匹配规则的, 都进行修正. 主要只针对缩进的吧.
实现
1. 找一下该插件中提供文本内容的显示的接口
1 | let editor = window.activeTextEditor; |
上面的接口似乎满足了第一需求
2. 寻找如何根据获取选中内容部分的当前行内容的行首指针.
这个通过获取到start所在line的Start就可以了.
3. 针对第三种需求的三种状态切换
进行简化
场景一和场景二的最终动作都是在该行增加>
场景一和场景二? 增加一个循环, 一开始获取到selection
的时候就可以设置为循环, 最后处理为循环内每行遍历. 如果是场景一和场景二那就是处理当行
都是根据遍历后的状态进行处理.
首先一开始,场景一可以提取为场景二, 获取到指针所在行的全部内容, 场景三, 由于我们不关心尾部内容,因此其实也就是场景二的状态,只需要处理start
所在指针的内容.(PS, 后来发现如果不关心尾部内容,也是存在问题的, 插入内容的时候直接导致尾部的文字会被替换一部分)