Có thể gửi mẫu chụp trong phân nhóm của một ngày trong datetree không?


8

Trong chế độ Org, tôi muốn có một mẫu chụp được lưu trữ như thế này:

* 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

Là có thể ra khỏi hộp? Nếu không, bất kỳ ý tưởng làm thế nào để đi về thực hiện nó?


Tôi không hoàn toàn rõ ràng về những gì bạn muốn đạt được. Tại sao có một "vấn đề" trong dòng nói **** Todo today? Sẽ thật tuyệt nếu bạn có thể mở rộng bài đăng của mình để bao gồm (1) một ví dụ về đầu ra mà mẫu chụp của bạn hiện đang sản xuất, (2) một ví dụ riêng về đầu ra mà bạn muốn xem và (3) chính mẫu chụp . Ngoài ra, chào mừng bạn đến với Emacs.SE!
itjeyd

Tôi không biết làm thế nào để có được dòng đó giữa tiêu đề datetree ( 2015-05-21 Thursday) và tiêu đề được tạo bởi mẫu ( TODO something). Về cơ bản, những gì tôi cần là file+datetree+olp.
Max Hollmann

Trong trường hợp bạn thấy câu trả lời tôi đã đăng trước đó: Nó không giải quyết đầy đủ trường hợp sử dụng của bạn theo nghĩa là nó đã chèn một **** Todo todaytiêu đề cho mọi TODOmục được tạo bằng cách sử dụng org-capture. Tôi đã khắc phục vấn đề này; xin vui lòng có một cái nhìn khác về câu trả lời của tôi.
itjeyd

Câu trả lời:


11

Bạn có thể đạt được những gì bạn muốn bằng cách xác định chức năng tùy chỉnh trả về vị trí đích để mở rộng mẫu:

(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)))

Sau đó thiết lập mẫu của bạn như thế này:

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

1
calendar-current-datelà Gregorian ngay từ đầu, vì vậy không cần phải chuyển đổi từ org-todaysang Gregorian.
luật

@lawlist Cảm ơn bạn đã chỉ ra điều đó! Tôi cập nhật câu trả lời của tôi.
itjeyd

1
Điều này gần như làm việc cho tôi. Vấn đề là nó sẽ thêm "***** Todo hôm nay" nhưng sau đó "***** TODO" sẽ nằm ngoài bảng dữ liệu. Đã có thể khắc phục hành vi này bằng cách thay đổi (goto-char (point-max)) thành (goto-char (point-at-eol))
rking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.