3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vim plugin作成に入門するためにやったこと(主にtest, docの話)

Last updated at Posted at 2020-05-04

GW、ちょうど時間があったのでvim pluginのhello worldをしてみました。

vim pluginの作成に関するドキュメントは充実している感覚でしたが、test周りだったりci周りなどどうするのが良さそうかあまりわからなかったので、自分なりにやったことをまとめます。

この記事で書くこと

vim plugin作成周りは以下の記事が凄く参考になるので、そちらを参照してください。

https://qiita.com/Sa2Knight/items/6b26d35af571c239da31
https://qiita.com/bonjin6770@github/items/31e60707ecf2ad6c4496

今回はplugin作成後のtestだったりdocだったりの話を書きます。

サンプルプロジェクト

足し算をするだけの関数を用意したpluginをサンプルとして作りました。
READMEに利用方法が書いています。
keymapなどは特に変更していないので、autoloadファイルのみ見ればOKです。
autoloadファイルに、one_plus_one#plus という関数を作っています。
今回はこれを対象にテストしたり、ciを回します。

testを書いて実行する

今回はtestディレクトリ配下にtestファイルを配置しています。

今回はtest frameworkとして、vim-themisを利用しています。

他にもvspecなどがあると思います。
僕はrspecを書く機会があるので、個人的にvspecが好みだったりします。

実行方法はhelpに書かれている通り、bin/themisをPATHを通して実行できるようにします。
ciでは雑にcloneしてきてtestを実行するので、今回はlocalでもそのようにtestを実行します。

※間違えてcommitしたくないので、.gitignoreの設定は忘れずに

Makefileを設定する

test frameworkをcloneしてきて、testを実行するフローをMakefileを用いて行います。
ciではこれを呼ぶようにします。

ciの設定

今回はgithub actionsを利用します。
make allで、cloneとtest実行を行います。
これでspecが通ることが確認できればOKです。

余談ですが、test framework側でテストが落ちたら、終了ステータスを変更してくれるのでciは自動的に落ちてくれます(便利)

docを書く

基本的に有名なリポジトリのdocを拝借すれば良さそうです。

今回は、easymotion/vim-easymotionのdocなどを参考しました。

これでplugin managerでinstallするとhelpも見れるのでよりpluginを利用しやくすなります。

終わりに

test, docを書くことでよりpluginの開発、利用が便利になるので、是非書くべきだと思います。
僕もこれから何かしらpluginを作る時はtestなど書いていこうと思います。

そして今回の諸々の情報を元に自分用のテンプレを作りました。
これからvim pluginを作りたいってなった時に利用したいなと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?