组织 - 议程前缀格式%?不起作用

时间:2016-03-10 07:30:13

标签: emacs lisp elisp org-mode

目前,由于erikstokes

,我的全球TODO列表显示如下

(org-agenda-prefix-format " %i %?-12(concat \"[ \"(org-format-outline-path (list (nth 1 (org-get-outline-path)))) \" ]\") ")))

输出:

enter image description here

for org layout:

enter image description here

但是,正如您所看到的,对于任务A,即使项目中没有任何内容,它仍会显示在列表中。

describe-variable的{​​p> org-agenda-prefix-format说:

If the first character after `%' is a question mark, the entire field
will only be included if the corresponding value applies to the current
entry.  This is useful for fields which should have fixed width when
present, but zero width when absent. 

所以我觉得使用%?[ ]不应该在任务A中出现,但它仍会出现。

1 个答案:

答案 0 :(得分:0)

问题是该字段永远不会为空:它将始终至少包含左右方括号加上空格以使其宽度为12。

解决方案是编写一个返回空字符串或括号内项目的函数,并使用以下格式:

  (defun foo ()
     (let ((x (nth 1 (org-get-outline-path))))
       (if x
           (concat "[ " (org-format-outline-path (list x)) " ]")
         "")))

  (setq org-agenda-prefix-format " %i %?-12(foo) "