目次
どーも!某 (@7254bou)です!
Logseqを使っていると下にSCHEDULED AND DEADLINEと言う表示が出てきますよね。
SCHEDULED AND DEADLINEの例
個人的にはもう少しこうなったらいいのに、という思いがあったのでカスタマイズしてみました。
実は以前一回やっていたのですが、忘れたので備忘録。
config.ednを編集する。
Logseqで細かいカスタマイズをする場合は、config.ednを編集する必要があります。
config.ednはLogseqのgraphとして指定したフォルダのlogseqフォルダ内に入っています。
logseqフォルダ内
これを好きなエディタで開いてください。
特になければ、Windowsなら「メモ帳」、Macなら「テキストエディット」で開けばOKです。
既存のSCHEDULED AND DEADLINEを無効にする
まずはじめに、config.ednで既存のSCHEDULE AND DEADLINEを無効にします。
下記の通り、;; Disable Built-in Scheduled and deadline Query
と書かれている場所(34行目)を探して、その下の行の;;を削除します。
;; Disable Built-in Scheduled and deadline Query
+ :feature/disable-scheduled-and-deadline-query? true
- ;; :feature/disable-scheduled-and-deadline-query? true
新しいSCHEDULED AND DEADLINE を追加する
続いてconfig.ednで新しいSCHEDULED AND DEADLINEを追加します。
下記の通り、default-queries
と書かれている場所(145行目)を探して、:journals内の[]に新しく追加します。
:default-queries
{:journals
[{:title "🔨 NOW"
:query [:find (pull ?h [*])
:in $ ?start ?today
:where
[?h :block/marker ?marker]
[(contains? #{"NOW" "DOING"} ?marker)]
[?h :block/page ?p]
[?p :block/journal? true]
[?p :block/journal-day ?d]
[(>= ?d ?start)]
[(<= ?d ?today)]]
:inputs [:14d :today]
:result-transform (fn [result]
(sort-by (fn [h]
(get h :block/priority "Z")) result))
:collapsed? false}
{:title "📅 NEXT"
:query [:find (pull ?h [*])
:in $ ?start ?next
:where
[?h :block/marker ?marker]
[(contains? #{"NOW" "LATER" "TODO"} ?marker)]
[?h :block/page ?p]
[?p :block/journal? true]
[?p :block/journal-day ?d]
[(> ?d ?start)]
[(< ?d ?next)]]
:inputs [:today :7d-after]
:collapsed? false}
]}
上記がデフォルトのコードだと思いますが、最後の]}の中に新しいコードを追加します。
:default-queries
{:journals
[{:title "🔨 NOW"
:query [:find (pull ?h [*])
:in $ ?start ?today
:where
[?h :block/marker ?marker]
[(contains? #{"NOW" "DOING"} ?marker)]
[?h :block/page ?p]
[?p :block/journal? true]
[?p :block/journal-day ?d]
[(>= ?d ?start)]
[(<= ?d ?today)]]
:inputs [:14d :today]
:result-transform (fn [result]
(sort-by (fn [h]
(get h :block/priority "Z")) result))
:collapsed? false}
{:title "📅 NEXT"
:query [:find (pull ?h [*])
:in $ ?start ?next
:where
[?h :block/marker ?marker]
[(contains? #{"NOW" "LATER" "TODO"} ?marker)]
[?h :block/page ?p]
[?p :block/journal? true]
[?p :block/journal-day ?d]
[(> ?d ?start)]
[(< ?d ?next)]]
:inputs [:today :7d-after]
:collapsed? false}
+ {:title [:h2 "DEADLINE"]
+ :query [:find (pull ?b [*])
+ :in $ ?start ?next
+ :where
+ (or
+ [?b :block/deadline ?d]
+ )
+ [(>= ?d ?start)]
+ [(<= ?d ?next)]
+ ]
+ :result-transform (fn [result] (sort-by (fn [d] (get d :block/deadline) ) result))
+ :inputs [:today :14d-after]
+ :collapsed? false}
]}
上記のクエリでは、14日後までのDEADLINEつきTODOを日付が近い順にソートして並べてくれます。
親ページも表示されないのでスッキリして見やすいです。
クエリの文法について詳しく書くのは骨が折れそうなので、時間あるときに別記事にまとめます。
ひとまずコピペで入れたい場合は、下記のページに色々なクエリが書かれていて参考になるので参照してみて下さい。