org-version 8.3.4(elpa package,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-habitize图应该通过org-habit-插入插入一致性图函数。但它会跳过该函数,可能是因为此表达式返回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-habit)。它没有明显改变缓冲区的内容。我还尝试在键入K后刷新缓冲区。并重复实验,以防K在第一次将emacs置于错误模式时。
更新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:
我正在使用链接中建议的minimal.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文件中的实际习惯的简短版本)时,有两个PROPERTY抽屉,一个在LOGBOOK之前,只有LAST-REPEAT属性,一个在LOGBOOK之后有习惯属性。我合并了两个属性抽屉,以显示失败,因为我相信PROPERTY抽屉应该是在LOGBOOK抽屉之前的一件。所以我对我的组织文件进行了一些维护。之前我曾尝试将它们合并成一个整体,但随后议程每周视图突然崩溃,我把它放回原来的样子。将不得不更加努力。
更新5 2016-07-09 :我在调度之前已经放入了领先的冒号:因为我想知道未来3个月的项目何时下降...我想看到他们作为预定的项目。这有效,但当我升级org-mode时,一致性图表就消失了。当我取消所有习惯上的主要冒号时,日常习惯就出现了,我相信三个月的物品会在“今天”落下时出现。但我不会得到任何必须支付利息的通知......它只会出现在必须支付的那一天。好吧,这是我要弄明白的。
感谢大家考虑和回答我的问题。
答案 0 :(得分:2)
我今天也遇到了类似的问题,结果是习惯模块被关闭了(但是重复执行的任务仍然留在议程中,所以我没有建立联系)。当我重新启用模块时(M-x customize variable org-modules
然后在habit
上打勾),一致性图在议程视图中正常显示。
答案 1 :(得分:1)
这不会解决您的问题,但可能会有所帮助:
答案 2 :(得分:0)
也许你已经以某种方式拒绝了他们?在议程中按“K”有帮助吗?
答案 3 :(得分:0)
将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
抽屉)。通过创建重复条目并在议程视图中将其标记为完成,我得到了相同的结论。 {log}项目列表出现在PROPERTIES
抽屉之后。