にっき

書いてあることがブログの内容です

rustup を Vim から呼び出すプラグインを作りました

タイトルの通りです。 少し前に rustup のメジャーアップデートがアナウンスされたばかりですがそれとは関係ないです。

Vim のタブライン上に使用中の Rust のツールチェインを表示するように設定を弄っているときに思いつき、この手のプラグインが見つからなかったことを踏まえて勢いで作りました。

github.com

Rust 的にも Vim script 的にも特に難しいことをしていることはなく、単に関数名に対応したコマンドライン引数で rustup を実行し、得られる標準出力を文字列を返す仕様にしました。

一応セールスポイントを挙げておくと、 rustup#active_toolchain() という関数を呼び出すことで現在有効になっているツールチェインを取得することができるようになっています。

使用例として、タブラインの右端に現在使用しているチャンネルを表示するための設定を下に書いておきました(Vim まわりの知識が乏しいのであまり良い例ではないですがご了承ください)。

let s:current_rustup_toolchain = ''

function! s:rustup_toolchain()
  if s:current_rustup_toolchain !=# ''
    return s:current_rustup_toolchain
  endif
  try
    let s:current_rustup_toolchain = rustup#active_toolchain()
  catch
  endtry
endfunction

function! s:make_tabline()
  let envstatus = ''

  let toolchain = s:rustup_toolchain()
  if toolchain !=# ''
    let toolchain = split(toolchain, '-')[0]
    let envstatus = envstatus . '[rust:' . toolchain . ']'
  endif

  return '%#TabLineFill#%T%=' . envstatus
endfunction


set showtabline=2
set tabline=%!tabline#make_tabline()
augroup TabLine
  autocmd!
  autocmd VimEnter * call s:tabline()
augroup END

あまり活用する機会が無い気もしますが、Rustacean かつ Vimmer な方々はぜひお試しください。