frostime / sy-docs-flow

MIT License
7 stars 0 forks source link

文档流页面内无法使用自定义快捷键 #57

Closed 5kyfkr closed 6 months ago

5kyfkr commented 6 months ago

如下图,设置了添加数据库的快捷键alt+s,在文档流内无法使用,同理快速制卡也设置了alt+k也无法使用。这个现象在knote插件的快速录入界面也是相同情况,不知道是不是思源的问题 image

frostime commented 6 months ago

这个应该是思源的行为,不是插件能控制的。

我的建议是先看一下三类快捷键哪些是不能在插件的自定义 Protyle (文档编辑器)当中使用的,然后去给 V 提 issue。

image

5kyfkr commented 6 months ago

这个应该是思源的行为,不是插件能控制的。

我的建议是先看一下三类快捷键哪些是不能在插件的自定义 Protyle (文档编辑器)当中使用的,然后去给 V 提 issue。

大召唤术,V姐帮忙看下自定义快捷键能不能在自定义protyle用?@Vanessa219

Vanessa219 commented 6 months ago

我这里没有办法获取到编辑器的实例,你看可以挂载到 Custom 下的 data.editor 上或者是其他什么比较方便的地方么?

目前闪卡是挂载到了 data.editor 上 https://github.com/siyuan-note/siyuan/blob/dc5882bd6028812ab9c392e743434fe1c46b7c1a/app/src/card/newCardTab.ts#L48

frostime commented 6 months ago

我这里没有办法获取到编辑器的实例,你看可以挂载到 Custom 下的 data.editor 上或者是其他什么比较方便的地方么?

目前闪卡是挂载到了 data.editor 上 https://github.com/siyuan-note/siyuan/blob/dc5882bd6028812ab9c392e743434fe1c46b7c1a/app/src/card/newCardTab.ts#L48

请问您的意思是需要在调用 addTab 的时候给 data 挂载一个 editor 对象吗?

image

但是这个 editor 对象是那里来的呢? 我看你给的参考中 editor 是通过插件无法访问到的 API 返回得到的。

image

Vanessa219 commented 6 months ago

这个是私用的,还没有公开。你的好像是个数组,如果挂载 data 上要改动太多的话,可以在 https://github.com/siyuan-note/siyuan/blob/aa1a2728b0112bc006584f5d5fd03c56ac3532b1/app/src/layout/dock/Custom.ts#L5 上再加一个 editors 之类的

frostime commented 6 months ago

这个是私用的,还没有公开。你的好像是个数组,如果挂载 data 上要改动太多的话,可以在 https://github.com/siyuan-note/siyuan/blob/aa1a2728b0112bc006584f5d5fd03c56ac3532b1/app/src/layout/dock/Custom.ts#L5 上再加一个 editors 之类的

我不太清楚具体的细节,但是反正问题的关键应该是「Custom Tab无法拿取到编辑器实例」导致的?

所以剩下的问题就是:

  1. 您看怎么解决这个问题对您来讲比较方便
  2. 以及您那边做完改动后,插件作者需要做什么样的调整才能适配您的改动
Vanessa219 commented 6 months ago

那加个 editors 属性吧。我先去改改。要不 data.editor 太隐秘了。

5kyfkr commented 6 months ago

@Vanessa219 需不需要召唤knote和卡片式笔记插件的作者也看看?

Vanessa219 commented 6 months ago

代码已提交,麻烦抽空看看是否可用了。

Vanessa219 commented 6 months ago

@Vanessa219 需不需要召唤knote和卡片式笔记插件的作者也看看?

等 @frostime 大佬卡看没问题再召唤。

5kyfkr commented 6 months ago

@Vanessa219 需不需要召唤knote和卡片式笔记插件的作者也看看?

等 @frostime 大佬卡看没问题再召唤。

@frostime 大佬,有空下个最新的dev2试试看

frostime commented 6 months ago

@Vanessa219 需不需要召唤knote和卡片式笔记插件的作者也看看?

等 @frostime 大佬卡看没问题再召唤。

我测试了一下 dev2 版本,好像制卡快捷键还是不能成功。

image

5kyfkr commented 6 months ago

@Vanessa219 需不需要召唤knote和卡片式笔记插件的作者也看看?

等 @frostime 大佬卡看没问题再召唤。

我测试了一下 dev2 版本,好像制卡快捷键还是不能成功。

我试了也是不行的,V姐的意思感觉是也要插件修改下才行吧,不然我就不用召唤另外两个插件大佬了

frostime commented 6 months ago

我看了一下实现的代码

https://github.com/siyuan-note/siyuan/commit/a2635a552045bdbeb8f93e6fbe2088e264c8cb6f

但是说实话我不太清楚插件作者到底需要做什么来适配这个更改。

5kyfkr commented 6 months ago

@Vanessa219 V姐能说下改动的原理和插件作者适配建议嘛

我看了一下实现的代码

siyuan-note/siyuan@a2635a5

但是说实话我不太清楚插件作者到底需要做什么来适配这个更改。

Vanessa219 commented 6 months ago

要修改插件的,如下把实例放到 editors 中

image
5kyfkr commented 6 months ago

我看了一下实现的代码

siyuan-note/siyuan@a2635a5

但是说实话我不太清楚插件作者到底需要做什么来适配这个更改。

大佬,看楼上V姐的回复能解决适配问题了嘛?

frostime commented 6 months ago

我看了一下实现的代码 siyuan-note/siyuan@a2635a5 但是说实话我不太清楚插件作者到底需要做什么来适配这个更改。

大佬,看楼上V姐的回复能解决适配问题了嘛?

稍微等等,我这几天有事情,周六周日我再看看

5kyfkr commented 6 months ago

我看了一下实现的代码 siyuan-note/siyuan@a2635a5 但是说实话我不太清楚插件作者到底需要做什么来适配这个更改。

大佬,看楼上V姐的回复能解决适配问题了嘛?

稍微等等,我这几天有事情,周六周日我再看看

没问题,麻烦了

frostime commented 6 months ago

测试结论:新的 editors 属性可以解决问题,但是本插件不会实装

目前我已经在测试版当中测试了最新的 self.editors,结果证明这个确实能 fix 无法在编辑器中使用 Ctrl+Alt+F 等快捷键的问题。

但是目前文档流不会实装这个特性。

原因在于:为了实现这个特性,需要将内部动态变化的 Protyle 不断往顶层回传,并维护一个同步更新的列表挂载在 tab 的 editors 属性中。在测试过程中发现这:1) 明显影响了插件的整体运行效率;2) 在文档量比较大的时候会出现不明的异常情况。

如果要解决这个问题,需要重构目前的代码组织结构,这个就要动大刀子了,性价比低且难以保证在重构后是否会出现其他异常。所以为了插件的整体稳定性,本 issue 提出的特性将不予以实装。

注:出现以上的问题,主要原因在于是文档流插件需要维持大量、动态变化的 Protyle 对象,导致实现起来比较棘手。 不过对于只有一个两个静态的 Protyle 的插件,例如 knote 等,应该问题不大。

几个问题

@Vanessa219

V姐你好,我测试了一下新的 tab.editors ,可以解决问题。但是我有几个意见:

  1. 变量的名称建议改一下,我翻了代码才发现原来 editors 就是 Protyle,那既然如此,还是把变量名称改得更加直观一点,以免引起混乱
  2. 目前来看只能在 tab 当中使用,那么对于 Dialog 这些要怎么办?他们上面没有 editors 对象啊。
Vanessa219 commented 6 months ago
  1. 由于历史原因,代码里面大部分都称为 editor,这个要修改的话就太多了。

    image
  2. dialog 中内部已经挂载了,等开发者提了再重构一下吧 https://github.com/siyuan-note/siyuan/blob/b569365ae1ff812df416098a091790d8f98c10f8/app/src/card/viewCards.ts#L78

frostime commented 6 months ago
  1. 由于历史原因,代码里面大部分都称为 editor,这个要修改的话就太多了。
image
  1. dialog 中内部已经挂载了,等开发者提了再重构一下吧 https://github.com/siyuan-note/siyuan/blob/b569365ae1ff812df416098a091790d8f98c10f8/app/src/card/viewCards.ts#L78

好的,那这样的话在之后更新 d.ts 以后在注释里面标注一下吧。

5kyfkr commented 6 months ago

要修改插件的,如下把实例放到 editors 中

image

@suka233 @WingDr ,大佬们,现在KNote和卡片式写作插件均同此issue一样在编辑界面无法使用快速制卡、添加到数据库等快捷键,看看能不能参照上述解决方案帮忙改改,感谢。