guopenghui / obsidian-quiet-outline

Improving experience of outline in Obsidian
MIT License
295 stars 17 forks source link

建议:优化大纲光标定位功能 #88

Closed Lontern-520 closed 3 months ago

Lontern-520 commented 1 year ago

前提:我使用了remember cursor location插件记录了文章的光标位置 出现的问题: 1.当我频繁在多个文档中切换的时候,大纲不能立即定位到我当前光标所在位置,而是需要我滑动一下文章滚动才开始定位,使用不够丝滑 2.当大纲数量超出当前屏幕限制的时候无法定位到光标当前所在的大纲位置,滑动文章滚轮也不行,它需要我去手动调整大纲的滚轮,如果这个文章范围在当前大纲列表内,才会定位到当前光标所在位置。由于我大纲标题数量过多,每次都需要花费我不少时间。 最后: 感谢您看完我的建议!

guopenghui commented 1 year ago

这个插件显示的大纲位置,是当前屏幕中显示的文档位置,不是光标位置。

第一点应该可以改善,我试试在切换文档的时候加一次位置刷新。

第二点应该不需要手动调整,大纲高亮位置会自动保持在屏幕范围以内,滚动文档时,大纲会跟着滚动。

reproduce

Lontern-520 commented 1 year ago

这是我出现的问题,我复现一下,需要手动去定位导航栏的位置,它才会跟着滚动 录像48_转

exam-ple commented 1 year ago

@guopenghui 我这边也有跟楼主同样的问题. 我使用的感受是, 在ob1.0版本之前时, 只要使劲多滚几下鼠标滑轮, 大纲内容和正文内容就一定能同步过来, 但是ob1.0版本之后, 不管怎么滚, 同步回来的概率很低(不能说10次里面10次都不行, 但是可能有8次是不行的). 有开启'自动展开'的话, 好像不太会有这个问题, 但是设置成默认全部展开的话, 这个问题就很严重.

我使用了另外一款叫floating toc的插件, 也是大纲类插件, 与本插件录了个视频进行对比, 同步的差距就很明显了. 大纲与正文内容同步问题

视频最左边一列是正文内容, 中间一列是floating toc插件的大纲栏, 最右边一列是本插件的大纲栏. @guopenghui 也许可以参考一下floating toc插件的同步机制.

另外, 从视频中也可以看出, floating toc插件的同步触发位置是看正文标题是否出了当前窗口的上边界, 这个会比本插件以当前窗口内的第8行为界, 在体验上会更好些, 后者总感觉同步上偏差了那么一两个标题, 这方面也许@guopenghui 也可以借鉴下.

不知不觉已经有1万多人次下载了, 非常感谢作者@guopenghui 给大家创造了这么一个便利的插件.

Lontern-520 commented 1 year ago

@exam-ple 问一下,你大纲高亮的背景色怎么设置成粉红色的。我的暗黑模式下,都看不清大纲当前的位置。

exam-ple commented 1 year ago

@Lontern-520 css加入 .n-tree-node.located { background-color: pink ; }

26Z commented 1 year ago

如果是通过快捷键或插件把光标移动到大纲页之外的标题就会导致这个问题;

经过我的测试,发现是对scrollIntoView({block:"center",behavior:"smooth"})函数的behavior:"smooth"支持不好的原因;

因此,可以通过将main.js文件里的 K.scrollIntoView({block:"center",behavior:"smooth"}) 替换为 K.scrollIntoView({block:"center"})

删掉behavior:"smooth"就可以解决。

guopenghui commented 3 months ago

0.3.30 里修改了标题定位的方法,会按照编辑器的中间位置来判断