Closed pi314 closed 7 years ago
目前想得到對 user 而言最容易的安裝方式是讓 user 用任意一個 plugin manager 安裝,最後在 vimrc 裡加上
let g:boshiamy_plugins = ['runes', 'braille', 'wide', 'unicode', 'emoji', 'html']
Plugin 需提供以下資訊:
boshiamy#<plugin-name>#type
: 'standalone'
/ 'embedded'
'standalone'
plugin 有自己的輸入模式,可以用 ,m
選擇boshiamy#<plugin-name>#icon
以及 boshiamy#<plugin-name>#description(locale)
以供模式選擇時使用, description()
為函式而不是選項是為了提供 i18n 的彈性description(locale)
只會被 call 一次,傳入值為 $LANG
'embedded'
plugin 是嵌在預設輸入模式裡的,等價於對字根表的擴充boshiamy#<plugin-name>#pattern
讓 boshiamy.vim 透過 matchlist()
比對boshiamy#<plugin-name>#handler(matchobj)
為 plugin 的核心
a:matchobj
為 boshiamy.vim 比對到的結果0
'embedded'
plugin,boshiamy.vim 會繼續呼叫下一個 embedded plugin 的 handler()
'standalone'
plugin,boshiamy.vim 會送出一個空白字元並停止繼續比對[options]
,boshiamy.vim 會自行計算字串長度後呼叫 complete(col, [options])
,並停止繼續比對有一點值得注意,把不同的輸入模式抽出獨立成 plugin 以後,boshiamy.vim 也不再管理各模式的字根表,建議把字根表和上述資訊放在不同的檔案,以有效的使用 vim autoload 的功能
@pi314 記得把這些寫進 :help
文件 (#8)
由於 autoload 對變數而言沒那麼方便,上述的資訊可能要包在 <plugin-name>#info()
裡一次傳回
'embedded'
plugin 可以選擇自己要附著在哪個 plugin 裡面。啊,太快 merge 了,新想法忘了做
移到獨立的 issue 好了
例如 runes、braille、全型字、Unicode 這些輸入模式如果能做成 plugin 的話,彈性會更大