vim-skk/eskk.vim

if_lua 対応

Shougo opened this issue · 15 comments

Dictionaryのサーチ部分は if_lua に置き換えれば高速化すると思うので私がやります。
補完の速度に効いてくるはず。

tyru commented

おお、お願いします。
2014/06/16 0:01 "Shougo" notifications@github.com:

Dictionaryのサーチ部分は if_lua に置き換えれば高速化すると思うので私がやります。
補完の速度に効いてくるはず。


Reply to this email directly or view it on GitHub
#177.

skkservが落ち着いたので、次はこちらをやります。
LuaはUTF-8でないと処理できないようです。バイト列で比較するなら関係ないかも知れません。

https://github.com/tyru/eskk.vim/tree/if_lua

プロトタイプ作成中。ひとまず、VimLの検索関数を分離しました。
これで置き換えやすくなったはずです。

実装完了。確認お願いできますか。Pull request出すべきでしょうか。
動くことは確認しましたが、速度の違いについては計測していません。

tyru commented

了解です。
Pull Requestは出さなくてもいいです。
こちらでレビューしたらマージしちゃいます。

実装完了。確認お願いできますか。Pull request出すべきでしょうか。


Reply to this email directly or view it on GitHub
#177 (comment).

了解です。ありがとうございます。

tyru commented

Luaは構文とかもろもろ初心者で、リファレンスマニュアル見ながらレビューしてる状態なので間違ってるかもしれません…
s:lua_search_linear()についてですが、

  1. string.find()の第3引数に1が指定されているようですが、この引数は省略可能なように見えますが、指定してもしなくても同じってことで良いんでしたっけ?(Luaは確かインデックスが1から始まるんですよね)
  2. 関数の最初でa:needleに対してエスケープ処理をしていますが、string.find()の第4引数にtrueを指定するとパターンではなく部分文字列を探す処理になるようですが、これを使ってはどうでしょうか。(5.1と5.2のリファレンスマニュアルしか調べていませんが、古いバージョンでサポートされないためにこういう書き方をしているのだったらすみません)

4 番目の省略可能な引数 plain に true を指定すると、 パターンマッチング機能はオフになり、 pattern 内のいかなる文字も魔法の文字とみなされなくなり、 普通の「部分文字列を探す」操作を実行します。 plain を指定する場合は init も指定しなければならないことに注意してください。

2の方法が使えない場合は、1で言った通り省略しちゃってください。

上記以外は特に気になった点はありませんでした。

参照したリファレンスマニュアル

Lua 5.1 リファレンス
Lua 5.2 リファレンス

tyru commented

if_luaブランチ使ってますが、特に問題なく動いてるみたいですね。
確かに速くなってるような気がします。

レビューありがとうございます。レビューに基づいて修正しました。
マージはどうしましょうか。

tyru commented

ありがとうございます。
見た限り大丈夫そうです。
2014/06/26 7:15 "Shougo" notifications@github.com:

レビューありがとうございます。レビューに基づいて修正しました。


Reply to this email directly or view it on GitHub
#177 (comment).

マージはどちらがやりますか。大した手間ではないので、こちらでマージしても構いません。

tyru commented

@Shougo さんの方でマージしちゃって構わないです。
2014/06/26 7:59 "Shougo" notifications@github.com:

マージはどちらがやりますか。


Reply to this email directly or view it on GitHub
#177 (comment).

マージ完了しました。

tyru commented

ありがとうございます。
あと今度からマージコミットに「(close #xxx)」って書くようにしてください(例:Merge branch 'if_lua' (close
#177))。
(ここらへんの事 CONTRIBUTING.md に書かないと…)

マージ完了しました。


Reply to this email directly or view it on GitHub
#177 (comment).

了解です。