簡體   English   中英

通過議程編寫和調用函數(組織模式)

[英]Write and call function from agenda (org-mode)

(我不懂lisp,所以我懷疑這真的很簡單。)

我想編寫一個函數來簡化我的組織模式和GTD設置。

我的組織模式設置基於以下內容: http : //doc.norang.ca/org-mode.html#CustomAgendaViewSetup

我想對多個標簽使用“ NEXT”設置(見下文)-我可以簡單地一遍又一遍地剪切和粘貼相同的代碼,但是編寫一個函數會更加干凈,而不是擁有這個:

            (tags-todo "-WAITING-CANCELLED/!NEXT"
                       ((org-agenda-overriding-header "Next Tasks")
                        (org-agenda-skip-function 'bh/skip-projects-and-habits-and-single-tasks)
                        (org-agenda-todo-ignore-scheduled 'future)
                        (org-agenda-todo-ignore-deadlines 'future)
                        (org-tags-match-list-sublevels t)
                        (org-agenda-sorting-strategy
                         '(todo-state-down effort-up category-keep))))

我更喜歡這樣的東西:

            (MyFunction "@work")
            (MyFunction "@computer")

該函數的參數將上述代碼塊中的過濾更改為:

            (tags-todo "-WAITING-CANCELLED+<XXX>/!NEXT"

            (tags-todo "-WAITING-CANCELLED+@work/!NEXT"

有人可以幫我指出正確的方向嗎?

以下應該可以解決問題(它還包含一個變量,用於測試在標記之前使用+還是- ,默認為- )。

(defun zin/agenda-test (tag &optional signp)
  "Simplify agenda coding, only require TAG to create new block.

SIGNP determines whether to use `+' or `-' when adding the tag.
Defaulting to `-'."
  (let ((sign (if signp "+" "-")))
    `(tags-todo ,(format "-WAITING-CANCELLED%s%s/!NEXT" sign tag)
        ((org-agenda-overriding-header "Next Tasks")
         (org-agenda-skip-function 'bh/skip-projects-and-habits-and-single-tasks)
         (org-agenda-todo-ignore-scheduled 'future)
         (org-agenda-todo-ignore-deadlines 'future)
         (org-tags-match-list-sublevels t)
         (org-agenda-sorting-strategy
          '(todo-state-down effort-up category-keep))))))

(setq org-agenda-custom-commands `(("t" "Test"
                                (,(zin/agenda-test "@tag")
                                 ,(zin/agenda-test "@test" '+)))))

您必須確保org-agenda-custom-commands使用反引號語法( ` )而不是(quote ...) ,否則命令將無法正確擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM