Open pi314 opened 7 years ago
修改了方向,從 standalone 的角度看可能比較合適
想了很多天, 在流程上,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 往後移比較好,不過還要再想一下會不會有問題。
如果 embedded plugin 調到 standalone plugin 的後面,就換成它被擋住了。 但這樣的狀況就交給 standalone plugin 去考慮吧。
如果確定要這樣修改的話,要記得修改 doc #37
測試了一下,狀況不太好,embedded plugin 被擋住的狀況太嚴重了。
是可以解決,但方法是 standalone plugin 的 pattern 設為 .*
,再由 handler 重新 match。
這樣完全不對,沒有 decouple 的效果。
這個修改先暫緩,需要再想想該怎麼處理。
整理一下目前的想法:
新的想法:不要分 embedded/standalone plugin,順序讓使用者自己設定,runtime 可以個別開關 ime.vim 按照順序一個一個問,有結果就拿來用
仔細想了想,這個功能真的有需要嗎?
至少目前我想不到有什麼 embedded plugin 只能附著在其中一個輸入模式下的