如何在本地取消设置(org-clock-into-drawer t)

时间:2014-10-16 13:14:39

标签: emacs elisp org-mode

是否有可能在本地取消时钟位置变量org-clock-into-drawer? 我想把大部分时间藏在一些抽屉里。但对于我的一般跟踪文件,我不想进入抽屉

全局启用时钟行为

(setq org-drawers (quote ("PROPERTIES" "LOGBOOK")))     ;; Separate drawers for clocking and logs
(setq org-clock-into-drawer t)    ;; Save clock data and state changes and notes in the LOGBOOK drawer

将导致类似这样的事情:

* Maintenance  
:LOGBOOK:  
CLOCK: [2014-10-16 Thu 08:48]--[2014-10-16 Thu 09:08] =>  0:20
CLOCK: [2014-10-15 Wed 08:51]--[2014-10-15 Wed 09:01] =>  0:10
CLOCK: [2014-10-14 Tue 08:40]--[2014-10-14 Tue 08:45] =>  0:05
CLOCK: [2014-10-13 Mon 08:41]--[2014-10-13 Mon 08:59] =>  0:18
:END:      

我想取消设置特定文件的行为。根据{{​​3}}我希望#+PROPERTY CLOCK_INTO_DRAWER: nil之类的内容产生以下输出

* Maintenance  
CLOCK: [2014-10-16 Thu 08:48]--[2014-10-16 Thu 09:08] =>  0:20
CLOCK: [2014-10-15 Wed 08:51]--[2014-10-15 Wed 09:01] =>  0:10
CLOCK: [2014-10-14 Tue 08:40]--[2014-10-14 Tue 08:45] =>  0:05
CLOCK: [2014-10-13 Mon 08:41]--[2014-10-13 Mon 08:59] =>  0:18

但它似乎没有按预期工作。

1 个答案:

答案 0 :(得分:3)

这对我来说似乎是个错误。你应该能够覆盖 org-clock-into-drawer

#+PROPERTY: CLOCK_INTO_DRAWER nil

请注意,上面的行与您使用的略有不同,但是 它仍然无法运作。问题在于功能 org-clock-into-drawer。我将这些更改发送到组织模式列表, 但是如果你想立即让这个工作在你的最后,那么 以下补丁应解决问题。

diff --git c/lisp/org-clock.el w/lisp/org-clock.el
index 2ffcbfa..092a6aa 100644
--- c/lisp/org-clock.el
+++ w/lisp/org-clock.el
@@ -74,13 +74,15 @@ (defun org-clock-into-drawer ()
 it will be used instead of the default value.
 The default is the value of the customizable variable `org-clock-into-drawer',
 which see."
-  (let ((p (org-entry-get nil "CLOCK_INTO_DRAWER" 'inherit))
-   (q (org-entry-get nil "LOG_INTO_DRAWER" 'inherit)))
-    (cond
-     ((or (not (or p q)) (equal p "nil") (equal q "nil")) org-clock-into-drawer)
-     ((or (equal p "t") (equal q "t")) "LOGBOOK")
-     ((not p) q)
-     (t p))))
+  (let ((p (org-entry-get nil "CLOCK_INTO_DRAWER" 'inherit t))
+        (q (org-entry-get nil "LOG_INTO_DRAWER" 'inherit t)))
+    (cond ((equal p "nil") nil)
+          ((equal p "t") t)
+          (p)
+          ((equal q "nil") nil)
+          ((equal q "t") t)
+          (q)
+          (t org-clock-into-drawer))))

 (defcustom org-clock-out-when-done t
   "When non-nil, clock will be stopped when the clocked entry is marked DONE.

修改:我已根据this discussion更新了修补程序。修复程序位于提交70e0b08e