Vim から Slack Status を更新するプラグインを作った

  • このエントリーをはてなブックマークに追加

Slack の Status を更新するプラグインを作りました。

slackstatus.vim_demo.gif

mizukmb/slackstatus.vim

Slack の Status についてはこちら

Set your status in Slack – Several People Are Typing — The Official Slack Blog

自分のステータス(仕事中とかミーティング中とか)を Emoji 付きで設定できる機能のようです。Custom Emoji も使えるのがいいですね。

ただこれ、 アプリから設定する時いちいち Emoji とテキストを入力しないといけなくてめんどくさいんですよね。 プリセット登録とかもないので結局使うのためらいそうで。

会社では全社員が Slack を利用しているので、皆に今どんなステータスなのか伝えるためにもできるだけ細かく更新したい。

Web API はあるので、あとはどの場面で更新するか。普段から利用しているツールから、数回のアクションで更新したい。しかも、プリセット登録したい。

そう考えると Vim で更新できるのが一番良い という結論に導かれるのはごく自然な流れかと思います。

使い方

README に使い方を記載しています。

:SlackStatusUpdate というコマンドで更新します。

その前にトークンを g:slackstatus_token というグローバル変数にトークンをセットする必要がありますので、 .vimrc に記入して下さい。

let g:slackstatus_token = '<YOUR_SLACK_TOKEN>'

:SlackStatusUpdate コマンドに『Emoji』と『テキスト』の2つの引数を与えて下さい。

例)

:SlackStatusUpdate :hoge: hogeなう

Completed. emoji: :hoge: text: hogeなう といったメッセージが出力されたら更新できています。

Tips

シンプルなコマンドであるので様々な応用を効かせることができます。

まず、 キーリマップを設定することで少ないキーストロークでステータスを更新できます。最初に言っていたプリセット登録ですね。

以下、私の設定例です。

nnoremap <Leader>sm :SlackStatusUpdate :spiral_calendar_pad: In_a_meeting<CR>
nnoremap <Leader>st :SlackStatusUpdate 🚋 電車遅延中<CR>
nnoremap <Leader>sw :SlackStatusUpdate 💻 working<CR>
nnoremap <Leader>sh :SlackStatusUpdate 🎧 めっちゃ集中してる<CR>
nnoremap <Leader>sl :SlackStatusUpdate 🍜 lunch<CR>
nnoremap <Leader>sh :SlackStatusUpdate 🏠 帰宅<CR>

ああ emojify が効いてしまっている…。実際はコロンで囲んだのしか受け付けないので注意。

これで、ノーマルモード時に sm と押下するだけで Slack の私のステータスは『ミーティング中』と更新することができます。

他にも Vim の特定の操作をフックしてステータスを更新する、みたいなこともできます。『俺は今 Vim を操作している』ことを Slack のメンバーに伝えることも可能です。

つぎやりたいこと

  • マルチチャンネル対応
  • テキストだけ、 Emoji だけ更新

これいるなあって思ったらやります(やる気駆動開発)。コントリビュートもお持ちしております。