【问题标题】:org-mode: creation time range from effort estimateorg-mode:工作量估计的创建时间范围
【发布时间】:2014-04-13 15:29:50
【问题描述】:

我不想在类似 GTD 的系统中使用 org-mode,而是将其用作计划器/调度器,在捕获或重新归档时对每个捕获的任务进行调度/时间戳记。在这样的系统中,根据完成任务所需的估计持续时间,包括特定时间框架的一天的详细计划可能是有利的。

是否可以在创建时间戳时从现有的工作量估算属性生成时间范围?这意味着,当 a) 调度被调用并且 b) 我不仅输入日期而且输入时间并且 c) 存在努力属性时,该时间将根据所述属性自动转换为时间范围。

关于如何实现这一点的一些提示已经绰绰有余,我只是不知道足够多的 elisp 来开始。

编辑

在我的 refile.org 中捕获任务后将如下所示:

* TODO Sample todo
 :PROPERTIES:
 :Effort:   1h
 :END:

现在在重新提交时,我会查看它并决定我会这样做,比如说,在 周五上午 10 点:

* TODO Sample todo
  SCHEDULED: <2014-04-18 Fr 10:00>
  :PROPERTIES:
  :Effort:   1h
  :END:

现在可以调用的函数会自动加一个时间 根据工作量估算的范围:

* TODO Sample todo
 SCHEDULED: <2014-04-18 Fr 10:00-11:00>
 :PROPERTIES:
 :Effort:   1h
 :END:

编辑2

请参阅下面的法律列表接受的答案以获得可靠的解决方案

【问题讨论】:

  • 如果您可以发布最终结果的示例,那么这里的人会更容易以elisp 格式编写它。否则,有人会做一个草稿,然后你可能会要求修改。 . .因为还不清楚最终结果会是什么样子。
  • 我很抱歉不清楚,感谢您指出这一点。让我试试:
  • 现在非常清楚 -- 谢谢。
  • org-mode 文档中的努力属性抽屉示例看起来像这样(setq org-global-properties '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))。如果我们使用1h,那么我们需要一个像(car (split-string "1h" "h"))这样的变换函数如果我们使用分钟(例如,“15m”),那么我们需要一个不同的变换函数,比如(car (split-string "15m" "m"))。您能否给我一个支持hmeffort 格式的组织模式文档的链接,或者提供您预期使用的所有格式的列表。或者,您可以使用第一种方法(如上)。

标签: emacs org-mode


【解决方案1】:

要添加计划的时间戳,请使用:M-x org-schedule

使用标准effort 格式(例如,“0 0:10 0:30 1:00 2:00 3:00 4:00”)将effort 作为范围添加到现有时间戳中[参见http://orgmode.org/manual/Filtering_002flimiting-agenda-items.html ],下面的函数应该可以完成这项工作。 注意 org-mode 版本 7 使用全部小写的 org-element-property 属性抽屉,而 org-mode 版本 8 使用全部大写 - 例如,(org-element-property :EFFORT (org-element-at-point))


org-schedule-effort 使用以下示例任务在 org-mode 版本 8.2.5.c 中进行了测试 -- not 使用 hm 用于 effort。 Emacs 将00 01 02 03 04 05 06 07 08 09 舍入到0 1 2 3 4 5 6 7 8 9 并且时间戳格式需要前者——因此,如果小于 10,我们需要将0 连接到开头。

* TODO Sample todo
  SCHEDULED: <2014-04-18 Fr 10:00>
  :PROPERTIES:
  :Effort:  1:15
  :END:

(defun org-schedule-effort ()
(interactive)
  (save-excursion
    (org-back-to-heading t)
    (let* (
        (element (org-element-at-point))
        (effort (org-element-property :EFFORT element))
        (scheduled (org-element-property :scheduled element))
        (ts-year-start (org-element-property :year-start scheduled))
        (ts-month-start (org-element-property :month-start scheduled))
        (ts-day-start (org-element-property :day-start scheduled))
        (ts-hour-start (org-element-property :hour-start scheduled))
        (ts-minute-start (org-element-property :minute-start scheduled)) )
      (org-schedule nil (concat
        (format "%s" ts-year-start)
        "-"
        (if (< ts-month-start 10)
          (concat "0" (format "%s" ts-month-start))
          (format "%s" ts-month-start))
        "-"
        (if (< ts-day-start 10)
          (concat "0" (format "%s" ts-day-start))
          (format "%s" ts-day-start))
        " "
        (if (< ts-hour-start 10)
          (concat "0" (format "%s" ts-hour-start))
          (format "%s" ts-hour-start))
        ":"
        (if (< ts-minute-start 10)
          (concat "0" (format "%s" ts-minute-start))
          (format "%s" ts-minute-start))
        "+"
        effort)) )))

【讨论】:

  • 非常感谢,这绝对是一个开始!但是,由于某种原因,我无法使其正常工作。也尝试使用干净的 emacs -Q (24.4)。组织版本是 8.2.5c。当我在示例待办事项(或任何其他待办事项)上调用带有点的函数时,时间被完全删除,预定日期设置为 2014 年 4 月 15 日。这与我尝试的任务的日期和时间无关。这可能与系统语言/日期格式为德语有关吗?
  • 我会在白天多做一些工作并重新发布修改后的功能 -- 很抱歉给您带来不便。
  • 这不是不便!谢谢你的帮助——我希望我不是唯一一个这样的东西可能有用的人。在所有设置为 en_US 的虚拟机中尝试 - 结果相同。 cf 也是我在上面添加到您的功能的可悲尝试。
  • @Mathäus -- 我已经修改了函数 -- 添加了额外的字段年、月和日 -- 我更新了所有字段(年除外),如果小于 10,则将“0”连接到前面. Emacs 自动知道将&lt;&gt; 添加到时间戳的末尾,它还会计算正确的星期几。
  • 现在效果很好。非常感谢。我将使用它并尝试扩展(关于 org-schedule 的建议,以自动检查是否已安排时间并设置了努力并调用您的函数;使其与议程缓冲区一起使用)并报告。
猜你喜欢
  • 1970-01-01
  • 2019-10-13
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多