自作NeoVimプラグインの軌跡
Noahです。
この記事はVimAdventCalendar2018 16日目の記事です
先日Publishした他アドベントカレンダーの記事が「〜〜の軌跡」なので、それにあやかります。
本当はVimに最近パッチで入った開発中のテキストプロパティを触ってみた話を記事にしたかったのですが、少し時間がなかったので、自作のNeoVimプラグインについて少し話します。
NeoVimのRemotePlugin関係(主にGolang)のスライドや記事はたくさん書いているのでそちらもみていただけると嬉しいです。
www.slideshare.net
最近
NoahOrberg/diesirae.nvim
実装したのはかなり前なのですが、Aizu Online Judge をNeoVimから操作できるようにしたこのプラグインがローカルでテストを回せるようになりました
以前までは提出、結果取得をしなければならず、サーバー側で提出のログに残ってしまったのですが、予め用意されているテスト用のInput, Outputを取得して内部で回せます
その際に、実行するコマンドを自分で指定する必要があります。
READMEにも書いてあるのですが、
let g:diesirae_config = { \ 'commands': { \ 'py': { \ 'build_command': [], \ 'exec_command': ['python3', '*source*'] \ }, \ 'go': { \ 'build_command': ['go', 'build', '-o', '*bin*', '*source*'], \ 'exec_command': ['*bin*'] \ } \ } \}
このように、ファイル拡張子をキーにして build_commanmd
, exec_command
の二種類を定義します。
*bin*
, *source*
はそれぞれバイナリとソースファイルのプレースホルダーです。
pythonのようなスクリプト言語には build_command
に空の配列を指定し、 exec_command
だけ定義します。
NoahOrberg/AYUNiS.nvim
AYUNiS.nvim では、Spotify.appを操作するためにAppleScriptを内部で利用しています。
そのため、AppleScriptのスクリプトの場所を知るためにRuntimePathを内部で定義していて、以前は自分が GitHub - Shougo/dein.vim: Dark powered Vim/Neovim plugin manager を使っていたので、deinからRuntimePathを取得していたのですが、PlugなどもサブPCで使用していたので、プラギンマネージャに左右されないようにRuntimePathをVimscriptで注入できるようにしました。
少しだけ煩わしいですね。
lightline.vim などで以下のように設定するとtablineで現在の再生曲タイトルが見れるのでいい感じです。
ちなみにAppleScriptを使ってるのでMacでしか動かないです。
" use lightline (show in the tabline let g:lightline = { \ 'component_function': { \ 'ayunis': 'AYUNiSGetNowPlaying' \ }, \ } let g:lightline.tabline = { \ 'left': [['ayunis', 'buffers']], \ 'right': [['close']] \ }
最後に
時間がなかったので、今まで開発したプラグインや記事たちの紹介になっちゃったけど、もっとちゃんとした記事を書きたかった...