【发布时间】: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,以显示今天议程上所有习惯的一致性图,以检查您的三个月项目。