Humanity

Edit the world by your favorite way

新しい機能実装しました

skk.vimに新たな機能追加を予定 - Humanity

ブログに書くまでもなくそれほど対した変更ではないしさっさと実装してしまえばいいということで実装しました。
テストしてもいいよという方、テストしてください。
うまく動いているようならこのブログのコメント欄にでも書いてくれればmasterにpushします。

インストール

(追記: 肝心のインストール方法を書いてなかったorz)

リポジトリ

$ git clone -b hack/variable/skk-enable-hook git://github.com/tyru/skk.vim.git

でcloneしてくるか、すでにgithubリポジトリをcloneしてきているなら

$ git checkout -t -b new-feature hack/variable/skk-enable-hook

でブランチを持ってこれます。
new-featureの部分は自由な名前で結構です。

設定例

以下の例では

  • C-j C-eをskkをonにして、
  • C-j C-d

というような設定にしています。

" Do not map `<Plug>(skk-toggle-im)`.
let skk_control_j_key = ''

" `<C-j><C-e>` to enable, `<C-j><C-d>` to disable.
map! <C-j><C-e> <Plug>(skk-enable-im)
map! <C-j><C-d> <Nop>
function! MySkkMap()
    lunmap <buffer> <C-j>
    lmap <buffer> <C-j><C-d> <Plug>(skk-disable-im)
endfunction
let skk_enable_hook = 'MySkkMap'

g:skk_enable_hook 説明

今まではC-jがskkの関数によって処理されていたために、
skkがoffになる、つまりトグルするような挙動になっていました。
そこでskkがonになりマッピングがセットアップされた後に呼び出す関数を指定するのが今回実装したg:skk_enable_hookです。
この関数内で「lunmap C-j」とすることでC-jをskk.vim側で処理しないようにしています。

autocmdを使おうかと思いましたがskk.vimに新たな機能追加を予定 - Humanityでも言ったような互換性の制限をしいているために使わないようにしています。
skk.vimでもautocmdやaugroupは使われていますがUserイベントが存在するか確認できませんでした。

TODO

  1. ドキュメント