経緯
- 最近は tooltip ? popup ? ライブラリとして posframe が流行っているらしい
- API を見ると、たしかにシュッと使えそう
そんなある日、下記ツイートを発見
Vimに最近入ったポップアップウィンドウを使ってニコニコ動画っぽくコメントを流す pic.twitter.com/CDna6A9AYi
— nil2 (@nil_two) 2019年7月6日真似したろ!!
API
nicomment-mode
- global-minor-mode です
- このモードの時のみ、下記 API によるコメントの追加と更新(移動とか消失)が行われます
- なんかうまく消失しなかったりした場合も、mode を disable にすればシュッと消えてくれる(はず)
nicomment-add-comment
ニコニコ動画のコメントで使える 基本的なコマンド は対応してみました。
command (option) values position ue, shita, naka (右から左に流れるデフォルト) color 16進数カラーコード、red とか green とかの名前 size large, small, normal lisp (nicomment-add-comment "わこ" :position 'ue :color "red" :size 'large)
実装の概要
nicomment-add-comment
を実行すると、それぞれにユニークIDを生成して渡す- この ID を
posframe-show
の第一引数で使っている
- この ID を
- 初回の
posframe-show
のみ poshandler 経由で posframe オブジェクトの位置を取得して、コメントの x, y をセットしている- nicomment--comment-start-at-right
- poshandler を使わなくてもコメントが持っているフレーム情報は取得できるけど、今回はこの流れで
- 「コメントの位置移動」「コメントの削除判定」「生き残っているコメントの表示」をメインルーチンとして
run-at-time
で一定時間毎に実行している - コメントの削除判定は以下の2つ
- コメントが左端に到達した時
- 移動しないコメント(
:position 'ue
とかしたやつ) は、一定時間を過ぎると消える - nicomment--comment-deletable-p
できていないこと
- コメントの先頭が左枠に辿りついたらすぐに消えるようになっちゃっている
- 本来は、ちゃんと少しずつ見切れていくようにしたかったけど…
コメントが残ってる状態でフレームサイズ変えるといろいろアレ
これはこれで面白いということで
他にも多分あるはず
とりあえず雰囲気動いたので良しとしています
まとめ
posframe 、手軽で便利っぽい