Thanks Driven Life

日々是感謝

Emacs 上でニコニコ動画っぽくコメントを流せる emacs-nicomment

f:id:gongoZ:20190725011656g:plain

経緯

  • 最近は tooltip ? popup ? ライブラリとして posframe が流行っているらしい
  • API を見ると、たしかにシュッと使えそう
  • そんなある日、下記ツイートを発見

  • 真似したろ!!

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)

実装の概要

  1. nicomment-add-comment を実行すると、それぞれにユニークIDを生成して渡す
    • この ID を posframe-show の第一引数で使っている
  2. 初回の posframe-show のみ poshandler 経由で posframe オブジェクトの位置を取得して、コメントの x, y をセットしている
    • nicomment--comment-start-at-right
    • poshandler を使わなくてもコメントが持っているフレーム情報は取得できるけど、今回はこの流れで
  3. 「コメントの位置移動」「コメントの削除判定」「生き残っているコメントの表示」をメインルーチンとして run-at-time で一定時間毎に実行している
  4. コメントの削除判定は以下の2つ
    • コメントが左端に到達した時
    • 移動しないコメント( :position 'ue とかしたやつ) は、一定時間を過ぎると消える
    • nicomment--comment-deletable-p

できていないこと

  • コメントの先頭が左枠に辿りついたらすぐに消えるようになっちゃっている
    • 本来は、ちゃんと少しずつ見切れていくようにしたかったけど…
  • コメントが残ってる状態でフレームサイズ変えるといろいろアレ

    f:id:gongoZ:20190725072749g:plain

    これはこれで面白いということで

  • 他にも多分あるはず

とりあえず雰囲気動いたので良しとしています

まとめ

posframe 、手軽で便利っぽい