【问题标题】:Making org-agenda-list hide items scheduled for the future使 org-agenda-list 隐藏未来计划的项目
【发布时间】:2014-01-14 16:13:02
【问题描述】:

我使用org-mode 每周/每日议程并希望能够使用SCHEDULED 关键字隐藏项目,直到预定时间到来。在那之前我不想去想它们。我如何设置org-agenda-list 来执行此操作?

这是议程项目列表,而不是 TODO 列表。我已经将org-agenda-todo-ignore-scheduled 设置为future。它没有帮助。

【问题讨论】:

  • 我们一定是误解了您的问题,因为您正在寻找的是组织模式 AFAIK 的默认行为。我已经做了一个简单的例子(使用 OrgMode 版本 6.33x)。有四个项目,一个没有安排日期,一个安排在昨天,一个安排在今天,一个安排在明天,我打开议程列表并切换到日视图并转到今天(击键“v d.”),我看到昨天安排的项目(用 Sched 2x 表示它是昨天安排的),我看到今天安排的项目。计划外和未来计划的项目do not appear here
  • 但是,如果他们也有近期的最后期限,即使安排在未来,他们仍然会出现。您不想出现的某些项目是否有截止日期?如果是这样,我可以指出一些其他变量/属性来进行操作。

标签: emacs org-mode


【解决方案1】:

设置

(setq org-agenda-todo-ignore-scheduled 'future)

(setq org-agenda-tags-todo-honor-ignore-options t)

【讨论】:

  • 这是议程项目列表,而不是 TODO 列表。我已经将org-agenda-todo-ignore-scheduled 设置为future。它没有帮助。
  • 缺少选项。编辑了我的答案。
  • 这并不能解决这个问题。同样,它是议程项目列表,而不是全局 TODO 列表。
  • 通过执行C-h v 查找变量org-agenda-todo-ignore-scheduled 的帮助,文档声明它确实影响全局待办事项列表:“这适用于创建全局待办事项时列表。”它还说:“如果你想让他的选项也适用于标签 - 待办事项列表,请参见变量 org-agenda-tags-todo-honor-ignore-options。”我希望这会有所帮助。
【解决方案2】:

您可能可以使用 org-modes 混淆参数集获得您想要的结果,但创建自定义过滤器函数可能更容易

  (defun my/org-skip-function (part)
    "Partitions things to decide if they should go into the agenda '(agenda future-scheduled done)"
    (let* ((skip (save-excursion (org-entry-end-position)))
           (dont-skip nil)
           (scheduled-time (org-get-scheduled-time (point)))
           (result
            (or (and scheduled-time
                     (time-less-p (current-time) scheduled-time)
                     'future-scheduled)  ; This is scheduled for a future date
                (and (org-entry-is-done-p) ; This entry is done and should probably be ignored
                     'done)
                'agenda)))                 ; Everything else should go in the agenda
      (if (eq result part) dont-skip skip)))
   (setq org-agenda-skip-function '(my/org-skip-function 'agenda))

如果您想要其他过滤器,只需将它们添加到 or-block 并使用不同的标签。

【讨论】:

  • 你如何修改它,这样你就可以过滤掉未来的日子,但仍然可以看到当天的预定项目?我在想只需在当前时间上增加 12 或 24 小时,这样它就可以显示当前或下一个 24 小时的预定活动。做这个的最好方式是什么?我不知道如何将 12 小时添加到时间。
  • 将当前时间加24小时可以这样(time-add (current-time) (* 24 60 60))
【解决方案3】:

这对我有用:

(setq org-agenda-todo-ignore-with-date t)

来自http://orgmode.org/manual/Global-TODO-list.html

【讨论】: