- father::元笔记汇总
1. 多级需求和方案设想及其结论
1.1. 修改剪贴板
1.2. 触发粘贴命令
1.3. 自动把源文本的空行添加上非空字符, 以防止obsidian删除该空行
1.4. 先修改再还原空行
1.4.1. 在剪贴板获取原文本
1.4.2. 获取空行位置
1.4.2.1. 根据前后文信息
1.4.2.1.1. 匹配空行前后的非空行, 尽可能取三行
1.4.2.2. 根据前后行数变化推出修改过的原空行位置
1.4.2.2.1. 以一个换行符为一行, 找到空行在哪两行之间(前提:不能有非空行被删除)
1.4.2.2.1.1. 匹配每个非空行换行符, 记录其在文本中的位置
1.4.2.2.1.2. 匹配每个空行换行符, 在行数组中找到相邻两行
1.4.2.2.2. 在修改后的文本中找到对应两行插入
1.4.3. 粘贴之后去掉空行
1.4.4. 根据保存的空行信息把空行还原
1.4.4.1. 匹配换行符, 前后紧邻前后文
2. 调研材料及结论
2.1. 粘贴后的文本用字符串是怎么样的
结论: 粘贴前的文本是没有多余的换行符的, 但是粘贴到obsidian后会自动在换行符后面多加一个换行符 结论: 如果粘贴源本来就有多余空行, 则obsidian就不会增加空行了
- 粘贴到正则表达式的网站上
- 测试本身就有多余换行符的文本粘贴后会怎么样
2.2. obsidian官方提供的, 有关复制粘贴的api
- 查看官方文档
- 如果在本来多余的换行符前加上空格, 则能不能让obsidian自动添加空行
- 粘贴事件触发API
- 实际测试那两个有关obsidian的粘贴处理api
- 测试on()方法
2.2.1. 结论:
- obsidian只要是空行, 就会删掉, 然后自动在非空行后面添加换行符
- evt.defaultPrevented貌似可以有关于obsidian的粘贴处理
- evt.preventDefault(), 貌似表示触发obsidian的粘贴
2.3. 剪贴板clipboard的api
- 实验这些api
2.4. obsidian程序触发paste事件会怎样
不会怎么样
2.4.1. obsidian文章面板是什么对象
结论: cm-contentContainer 结论: 任意行触发粘贴事件, 都会冒泡到上层标签上
2.4.2. 测试在底层div标签上粘贴会冒泡到什么情况
2.4.2.1. 测试在cm-content标签上触发paste
结论: 会报错
2.5. 仔细思考可能的空行情况
结论: 只可能是两个换行符以上, 换行符数量-1为空行数
2.6. 仔细观察obsidian是否会出现两行以上的空行
结论: 不会, 但是会有空格, 导致看起来有两行空行
2.7. 检测obsidian是否一定要打换行符才会换行
2.8. 测试能否在obsidian粘贴文本前就更改剪贴板内容
2.9. 尝试找到obsidian会在转换md格式时产生换行的内容
2.9.1. 结论:
- 已知OneNote的公式不会产生换行
2.10. 测试空格或换行符接换行会不会被删掉
- 复制文章, 前后粘贴对比 结论: 因为获得剪切板的时候就已经丢失了格式, 所以会胡乱换行, 已经紊乱了