業務で日報を提出する必要があったのでそれっぽいのを作れるようにしていた。
今では org-super-agenda を使っているのでこれは使ってないが、とりあえず載せておく。
表に出したくない情報については別ファイルに分離して setq している。が、内容的に本名が露出する程度の情報ではある。
(my/load-config "my-nippou-config")
これの中で my/org-nippou-additional-files
を定義していてそのファイル名に名前が含まれてるだけであった。
me.org
とでもしておけば解決しそう……。
~/Documenets/org/tasks
に作業記録用ファイルなどを find コマンドを使ってリストアップする関数。
(defun my/org-nippou-files ()
(let* ((dir my/org-tasks-directory)
(cmd (format "find \"%s\" -name '*.org' -or -name '*.org_archive'" dir))
(result (shell-command-to-string cmd))
(file-names (split-string result "\n")))
(-remove (lambda (file-name) (string= "" file-name))
file-names)))
org-agenda-files を使えば要らないっぽいけどね。 agenda 全然使えてなかったらこんなことに。
シークレット設定で定義した変数と上で定義した my/org-nippou-files
を結合して
1つのリストにするだけの関数を用意している。
1つにまとまってる方が扱いやすいので。
(defun my/org-nippou-targets ()
(-concat (my/org-nippou-files) my/org-nippou-additional-files))
上記の関数群で target になるファイルから日報用に TODO 項目を引っ張り出してくる関数を用意している。
(defun my/nippou-query ()
(interactive)
(org-ql-search
(my/org-nippou-targets)
"todo:TODO,DOING,WAIT,DONE ts:on=today"
:title "日報"
:super-groups '((:auto-group))))
その中では org-ql の org-ql-search という関数を叩いている。 org-ql は使いこなすと色々なことができそうではあるがそれを内部で使ってる org-super-agenda を使えば十分な感じではある。