日付ツリーの1日の小見出しにキャプチャテンプレートを提出することは可能ですか?


8

組織モードでは、キャプチャテンプレートを次のように保存したいと思います。

* 2015
** 2015-05 May
*** 2015-05-21 Thursday     <--- I can get this with file+datetree
**** Todo today             <--- here's the problem
***** TODO something        <--- this is the captured content

箱から出してそれは可能ですか?そうでない場合、それを実装する方法についてのアイデアはありますか?


あなたが何を成し遂げたいのか、私には完全には明確ではありません。と言う行に「問題」があるのはなぜ**** Todo todayですか?投稿を拡張して、(1)キャプチャテンプレートが現在生成している出力の例、(2)表示したい出力の別の例、および(3)キャプチャテンプレート自体を含めることができればすばらしいと思います。それ以外は、Emacs.SEへようこそ!
itsjeyd

日付ツリーの見出し(2015-05-21 Thursday)とテンプレートによって生成された見出し()の間の行を取得する方法がわかりませんTODO something。基本的に、私が必要なのはfile+datetree+olpです。
Max Hollmann、2015年

以前に投稿した回答を見た場合:を使用して作成さ**** Todo todayれたすべてのTODOアイテムの見出しを挿入するという意味では、ユースケースに完全には対応していませんorg-capture。その後、この問題を修正しました。私の答えをもう一度見てください。
itsjeyd

回答:


11

テンプレート拡張のターゲットの場所を返すカスタム関数を定義することで、必要なことを実現できます。

(defun org-find-heading-in-datetree ()
  (org-datetree-find-date-create (calendar-current-date))
  (goto-char (point-at-eol))
  (when (not (re-search-forward
              (format org-complex-heading-regexp-format
                      (regexp-quote "Todo today")) nil t))
    (insert "\n**** Todo today\n"))
  (goto-char (point-max)))

次に、テンプレートを次のように設定します。

(setq org-capture-templates
      '(("t" "Test" plain (file+function "~/org/test.org"
                                         org-find-heading-in-datetree)
         "***** TODO %?")))

1
calendar-current-dateは最初はグレゴリオ暦なので、org-todayからグレゴリオ暦に変換する必要はありません。
弁護士、2015年

@lawlistそれを指摘してくれてありがとう!回答を更新しました。
itsjeyd、2015年

1
これはほとんど私にとってはうまくいきました。問題は、「***** Todo今日」が追加されることですが、「***** TODO」は日付ツリーの外にあります。(goto-char(point-max))を(goto-char(point-at-eol))に変更することでこの動作を修正できました
16:18にrking
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.