emacs-kibela は Emacs で Kibela を操作するための自作のパッケージ。あまり機能は実装されていないけど、テンプレートから記事を書いたりする程度のことはできる
MELPA には登録してないし el-get にもレシピを登録していないので自前で el-get の recipe を用意している
(:name emacs-kibela
:website "https://github.com/mugijiru/emacs-kibela"
:description "Kibela client."
:type github
:branch "main"
:pkgname "mugijiru/emacs-kibela"
:depends (graphql request markdown-mode))
そして el-get-bundle
でインストールしている
(el-get-bundle emacs-kibela)
.authinfo.gpg に認証情報を突っ込んでいるのでそこから認証情報を拾って来て set している
(custom-set-variables
'(kibela-auth-list `(("Work"
,(plist-get (nth 0 (auth-source-search :host "emacs-kibela-work")) :team)
,(funcall (plist-get (nth 0 (auth-source-search :host "emacs-kibela-work" :max 1)) :secret)))
("Private"
,(plist-get (nth 0 (auth-source-search :host "emacs-kibela-private")) :team)
,(funcall (plist-get (nth 0 (auth-source-search :host "emacs-kibela-private" :max 1)) :secret))))))
ivy-kibela と連携して、最近投稿された記事を Emacs の中で開くためのコマンドを用意している。
もしかしたら emacs-kibela か ivy-kibela のどちらかで featurep を使って有効無効を切り分けて実装すべきかも
(defun my/kibela-show-recent-note ()
"最近投稿された記事を見るためのコマンド
ivy-kibela-recent で最近投稿された記事を拾って
kibela-note-show でバッファを開く"
(interactive)
(ivy-kibela-recent (lambda (title)
(let ((id (get-text-property 0 'id title)))
(if id
(kibela-note-show id))))))
各コマンドは Hydra で起動するように設定している。しれっと ivy-kibela のコマンドも混ぜちゃってるけど、使う分にはこの方がやりやすい。
(pretty-hydra-define kibela-hydra (:separator "-" :title "Kibela" :foreign-key warn :quit-key "q" :exit t)
("ivy"
(("r" ivy-kibela-recent "Recent")
("R" ivy-kibela-recent-browsing-notes "Recent brwosing notes")
("S" ivy-kibela-search "Search"))
"Group"
(("g" kibela-group-notes "notes"))
"Note"
(("n" kibela-note-new "New")
("s" my/kibela-show-recent-note "Show")
("t" kibela-note-new-from-template "From template"))
"Team"
(("x" kibela-switch-team "Swtich"))))