basyura's blog

あしたになったらほんきだす。

inkdrop - 複数の book を使ってみる

sidebar が溢れてきた

inkdrop を使い始めて 1 年半経過。

f:id:basyura:20210523193438p:plain

タグが増えてきて Status を閉じてもスクロールバーが発生するようになったので css で消した。

.sidebar-menu::-webkit-scrollbar {
  display: none;
}

Tags の下だけスクロールバーが出せるようになるといいけど HTML 構造的にできなさそうなのでガッツリ消した。気にならなくなった。タグの / 区切りを階層構造で表現できて開閉できるようになると表示領域を圧縮できて便利そうだけど開閉の手間もあるので悩ましい。

複数 book 運用

今まで 1 book 運用をしていたのだけど、複数 book をお試し中。 book は階層構造で分類しやすいし辿りやすい点はあるけどタグで横串に見れて便利。book を行き来するのも効率悪くて悩む。

switch-notebook を使ってみたのだけど book の選択 (UI で detail を選択したときの挙動) まではできてなくて、api (command) 的にも用意されてなさそうなのでちょっと微妙。

自作 switch-notebook

しかたないので自作してみた。document.querySelectorAll などを使って画面上の要素をとって一覧表示して、選択時はその要素をクリックして画面操作を再現するゴリゴリ仕様。

keymap.cson

'ctrl-x ctrl-n': 'switch-notebook:open'

f:id:basyura:20210523193539p:plain

割と便利。fork したけど中身が全く別名で plugin 登録してもいいけどこの手の plugin の挙動は個人の趣味に左右されることが多いので悩ましい。

Active Status なノートを表示する

キーボード中心の操作をするので、アクティブなステータスを表示する際の自作コマンドも見直し。 book が選択されているかそうでないかで挙動を切り替える。

init.js

inkdrop.commands.add(document.body, "mycmd:select-active", () => {
  const { queryContext } = inkdrop.store.getState();

  if (queryContext.mode == "book") {
    inkdrop.commands.dispatch(
      document.body,
      "core:note-list-show-notes-in-book",
      {
        bookId: queryContext.bookId,
        status: "active",
      }
    );
  } else {
    inkdrop.commands.dispatch(
      document.body,
      "core:note-list-show-notes-with-status",
      {
        status: "active",
      }
    );
  }
  inkdrop.commands.dispatch(document.body, "editor:focus");
});

inkdrop.commands.add(document.body, "mycmd:select-all-notes", () => {
  const { queryContext } = inkdrop.store.getState();
  if (queryContext.mode == "book") {
    inkdrop.commands.dispatch(
      document.body,
      "core:note-list-show-notes-in-book",
      {
        bookId: queryContext.bookId,
      }
    );
  } else {
    const node = document.querySelector(".sidebar-menu-item-all-notes");
    node.querySelector(".content").click();
  }
});

keymap.cson

'ctrl-@': 'mycmd:select-active'
'ctrl-x ctrl-@': 'mycmd:select-all-notes'

まとめ

また一つ便利になった。