Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

處理 embedded plugin 和 standalone plugin 打架的問題 #21

Open
pi314 opened this issue Mar 8, 2017 · 7 comments
Open

處理 embedded plugin 和 standalone plugin 打架的問題 #21

pi314 opened this issue Mar 8, 2017 · 7 comments

Comments

@pi314
Copy link
Owner

pi314 commented Mar 8, 2017

No description provided.

@pi314
Copy link
Owner Author

pi314 commented Mar 9, 2017

仔細想了想,這個功能真的有需要嗎?

至少目前我想不到有什麼 embedded plugin 只能附著在其中一個輸入模式下的

@pi314 pi314 added question and removed enhancement labels Mar 9, 2017
@pi314 pi314 changed the title 'embedded' plugin 可以選擇自己要附著在哪個 plugin 裡面 Standalone plugin 可以選擇自己是否要允許 embedded plugin 附著 Mar 9, 2017
@pi314
Copy link
Owner Author

pi314 commented Mar 9, 2017

修改了方向,從 standalone 的角度看可能比較合適

@pi314 pi314 added this to the Core abstraction milestone Mar 12, 2017
@pi314
Copy link
Owner Author

pi314 commented Mar 13, 2017

#26 (讓 standalone plugin 決定送字的 key) 和這個可能有關

@pi314
Copy link
Owner Author

pi314 commented Mar 23, 2017

想了很多天,
在流程上,embedded plugin 是優先執行,
所以要是 embedded plugin 註冊了太多的 trigger key,
或是某個 standalone plugin 本身就需要很多的 trigger key(例如注音輸入)
embedded plugin 就有可能擋在 standalone plugin 前面,使後者無法正常使用。

現在有兩個解決方向,一個是實作這個 issue 的功能,
讓 standalone 有權力禁止 embedded plugin 擋在它前面。
但這個方式的問題是 standalone plugin 根本不會知道有哪些 embedded plugin 可以用,
也不可能列出所有允許或不允許的 embedded plugins,只能全開或全擋。

另一個是改變流程,讓 standalone plugin 優先判斷,
沒有結果才丟給 embedded plugin。

現在覺得把 embedded plugin 往後移比較好,不過還要再想一下會不會有問題。

@pi314
Copy link
Owner Author

pi314 commented Mar 24, 2017

如果 embedded plugin 調到 standalone plugin 的後面,就換成它被擋住了。
但這樣的狀況就交給 standalone plugin 去考慮吧。

如果確定要這樣修改的話,要記得修改 doc #37

@pi314
Copy link
Owner Author

pi314 commented Mar 24, 2017

測試了一下,狀況不太好,embedded plugin 被擋住的狀況太嚴重了。
是可以解決,但方法是 standalone plugin 的 pattern 設為 .*,再由 handler 重新 match。
這樣完全不對,沒有 decouple 的效果。

這個修改先暫緩,需要再想想該怎麼處理。

整理一下目前的想法:

  • 我覺得 embedded plugin 還是有存在的必要,因為有些好用的功能太小,真的不適合做成 standalone plugin。
  • 但兩者的順序不管怎麼擺都會打架。
  • 如果把所有 embedded plugin 收集起來,成為一個輸入模式呢?
  • 這個輸入模式和 standalone plugin 對等,就不會打架了。
  • 可以由某個特定 (configurable) 的 key trigger,只搜尋 embedded plugin。
    • 要不要允許這個 key 和 standalone plugin trigger key 重覆需要再考慮。

@pi314 pi314 changed the title Standalone plugin 可以選擇自己是否要允許 embedded plugin 附著 處理 embedded plugin 和 standalone plugin 打架的問題 Mar 31, 2017
@pi314
Copy link
Owner Author

pi314 commented Jun 2, 2022

新的想法:不要分 embedded/standalone plugin,順序讓使用者自己設定,runtime 可以個別開關
ime.vim 按照順序一個一個問,有結果就拿來用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant