【问题标题】:org-mode habit consistency graph not displaying组织模式习惯一致性图未显示
【发布时间】:2016-10-28 03:21:09
【问题描述】:

org-version 8.3.4(elpa 包,20160530) emacs 24.4.1(Debian 包,已安装:24.4+1-4.1~bpo70+1)

当我开始使用 elpa 的 org-mode 时,习惯一致性图停止显示。我之前使用的是 debian 附带的 org-mode 版本,带有 emacs 23 和图表。

我是 emacs lisp 的初学者,但无论如何我尝试单步执行 org-agenda-list 函数并找到 org-agenda-finalize 函数,其中应该通过 org-habit- 插入 org 习惯图插入一致性图函数。但它跳过了那个函数,可能是因为这个表达式返回 false:

(next-single-property-change (point-min) 'org-habit-p))

在这一点上,我不知道该怎么做才能让习惯表现出来。第一次看org-mode代码,不知道上面的测试是干什么用的。

请帮忙?

更新:2016-06-25。我将 org-mode 包升级到 elpa,20160620(仍然是 org-version 8.3.4)。仍然有相同的行为。我从 elpa.gnu.org 获取包。

更新 2:2016-07-02:我确实尝试按 K(对于 org-habit-toggle-habits)。它没有明显改变缓冲区的内容。我还尝试在键入 K 后刷新缓冲区。并重复实验,以防 K 第一次将 emacs 置于错误的模式。

UPDATE 3: 2016-07-08:在 emacs-orgmode 邮件列表中,我得到了一些建议,以确保具有习惯的条目的结构是:

  • 标题
  • 预定
  • 属性
  • 其他一切

通过使用此站点中的 org-repair-property-drawers 函数: http://orgmode.org/Changes.html

但这打破了我每周的议程显示,而且,一旦我修复了条目,并没有让习惯起作用。可能我的条目比预期的功能更糟糕。但这种方法对发送建议的约西亚有效。将其包含在此处以防对其他人有所帮助。

更新 4:2016-07-09:感谢 Phil 提出的建议,以提出问题的最小示例。使用以下 .org 文件而不是其他文件,我看到了问题:

** TODO daily customer meeting                             :SUPPORT:CUSTOMER:
   :SCHEDULED: <2016-07-06 Wed 10:30 .+1d>
   :PROPERTIES:
   :LAST_REPEAT: [2016-07-05 Tue 12:00]
   :STYLE: habit
   :END:
   :LOGBOOK:
   - State "DONE"       from "TODO"       [2016-07-05 Tue 12:00]
   - State "DONE"       from "TODO"       [2016-06-30 Thu 16:34]
   - State "DONE"       from "TODO"       [2016-06-29 Wed 20:02]
   - State "DONE"       from "TODO"       [2016-06-28 Tue 10:53]
   - State "DONE"       from "TODO"       [2016-06-27 Mon 10:50]
   - State "DONE"       from "TODO"       [2016-06-23 Thu 12:11]
   - State "CANCELLED"  from "TODO"       [2016-06-21 Tue 13:43] \\
     No meeting today, cancelled by Mmmm.
   :END:

我正在使用链接中建议的 minimum.emacs,即:

(add-to-list 'load-path (expand-file-name "/home/bjb/.emacs.d/elpa/org-20160620"))
(add-to-list 'auto-mode-alist '("\\.\\(org\\  |org_archive\\|txt\\)$" . org-mode))
(setq org-agenda-files '("/home/bjb/.emacs.d/test/test.org"))
(require 'org-install)
(require 'org-habit)

;(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
;(global-set-key "\C-cb" 'org-iswitchb)

并用 C-c a a 显示议程。

我已将前导冒号添加到 SCHEDULED 行...当我删除它时,图表会显示出来。但是,我已添加它(不久前),因为我试图解决其他问题,我不记得是什么了。

我会玩这个,看看我是否可以让我的所有 org 文件完全加载 habit-consistency-graphs。谢谢...将报告结果。

必须注意,当我查看这个特定项目(这是我的 org 文件中实际习惯的简短版本)时,有两个 PROPERTY 抽屉,一个在 LOGBOOK 之前,只有 LAST-REPEAT 属性,一个在 LOGBOOK 之后与习惯属性。我合并了两个属性抽屉以向您展示失败,因为我相信属性抽屉应该在 LOGBOOK 抽屉之前是一体的。所以我需要对我的组织文件进行一些维护。我之前曾尝试将它们合并为每个习惯中的一个部分,但随后议程每周视图严重损坏,我将其恢复原状。将不得不更加努力。

UPDATE 5 2016-07-09:我在 SCHEDULED 之前输入了前导冒号:因为我想看看未来 3 个月的项目什么时候下降......我想看看它们作为预定项目。那行得通,但是当我升级 org-mode 时,一致性图消失了。当我把所有习惯的前导冒号取下来时,日常习惯就出现了,我有信心三个月的项目落在“今天”时就会出现。但是我不会收到任何必须支付利息的通知……它只会在必须支付的那一天出现。那是我自己想办法。

感谢大家考虑并回答我的问题。

【问题讨论】:

  • 通过将 :LOGBOOK: 放在 :PROPERTIES: 抽屉之后重新排序条目(反之亦然)为我解决了这个问题。感谢您传递建议!顺便说一句,您可以暂时将 org-habit-show-all-today 设置为 t,以显示今天议程上所有习惯的一致性图,以检查您的三个月项目。

标签: emacs org-mode


【解决方案1】:

我今天遇到了类似的问题,结果发现习惯模块不知何故被关闭了(但循环任务仍然保留在议程中,所以我没有建立联系)。当我重新启用模块(M-x customize variable org-modules 然后勾选habit)时,一致性图在议程视图中正常显示。

【讨论】:

  • 看了源码,好像org-habit模块默认是没有开启的(至少在org-mode 9.2上)。需要上述手动添加才能使其正常运行。
【解决方案2】:

这不会解决您的问题,但可能会有所帮助:

http://orgmode.org/worg/org-faq.html#minimal-emacs

【讨论】:

    【解决方案3】:

    也许你以某种方式关闭了它们?在议程中按“K”有帮助吗?

    【讨论】:

      【解决方案4】:

      org-mode 从版本8.2.10 升级到9.1.9 (because of this bug) 后,我遇到了同样的问题。

      这是一个条目的样子 (org-version = 8.2.10):

      ** TODO Sleep in time                                 
         SCHEDULED: <2019-09-07 sam. 23:00 +1d>
         - State "DONE"       from "TODO"       [2019-09-07 sam. 02:54]
         - State "DONE"       from "TODO"       [2019-09-06 ven. 02:09]
         - State "DONE"       from "TODO"       [2019-09-05 jeu. 00:29]
         :PROPERTIES:
         :STYLE: habit
         :LAST_REPEAT: [2019-09-07 sam. 02:54]
         :END:
      

      ...以及我所做的以使图表再次显示(org-version = 9.1.9):

      ** TODO Sleep in time                                 
         SCHEDULED: <2019-09-07 sam. 23:00 +1d>
         :PROPERTIES:
         :STYLE: habit
         :LAST_REPEAT: [2019-09-07 sam. 02:54]
         :END:
         - State "DONE"       from "TODO"       [2019-09-07 sam. 02:54]
         - State "DONE"       from "TODO"       [2019-09-06 ven. 02:09]
         - State "DONE"       from "TODO"       [2019-09-05 jeu. 00:29]
      
      

      如图所示,我已经交换了 PROPERTIES 抽屉和“日志”列表。

      编辑:

      我刚刚意识到这个解决方案与@schmuu 建议的完全一样(我不使用LOGBOOK 抽屉)。我通过创建重复条目并在议程视图中将其标记为已完成,得到了相同的结论。 “日志”项目列表出现在PROPERTIES 抽屉之后。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多