组织模式习惯一致性图表未显示

时间:2016-06-25 18:07:48

标签: emacs org-mode

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时,一致性图表就消失了。当我取消所有习惯上的主要冒号时,日常习惯就出现了,我相信三个月的物品会在“今天”落下时出现。但我不会得到任何必须支付利息的通知......它只会出现在必须支付的那一天。好吧,这是我要弄明白的。

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

4 个答案:

答案 0 :(得分:2)

我今天也遇到了类似的问题,结果是习惯模块被关闭了(但是重复执行的任务仍然留在议程中,所以我没有建立联系)。当我重新启用模块时(M-x customize variable org-modules然后在habit上打勾),一致性图在议程视图中正常显示。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

也许你已经以某种方式拒绝了他们?在议程中按“K”有帮助吗?

答案 3 :(得分:0)

org-mode从版本8.2.10升级到9.1.9because 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抽屉之后。