summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2013-03-02 17:39:23 +0100
committerBastien Guerry <bzg@altern.org>2013-03-02 17:39:23 +0100
commit3b21f246d6f00671e28b82bf963f259febd41573 (patch)
treec6f74c46cdf9c932fe484c6debcc9ad2793823df
parentc8d5674562e2803f6324f066396df346f464a4c7 (diff)
downloadorg-mode-3b21f246d6f00671e28b82bf963f259febd41573.tar.gz
org-clock.el (org-clock-out): Fix bug.
* org-clock.el (org-clock-out): Fix bug: if a closing note needs to be stored in the drawer where clocks are stored, let's temporarily remove `org-clock-remove-empty-clock-drawer' from `org-clock-out-hook'. Thanks to Дядов Васил Стоянов for reporting this bug.
-rw-r--r--lisp/org-clock.el10
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index a536d02..b89e644 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -1524,7 +1524,15 @@ to, overriding the existing value of `org-clock-out-switch-to-state'."
(force-mode-line-update)
(message (concat "Clock stopped at %s after HH:MM = " org-time-clocksum-format "%s") te h m
(if remove " => LINE REMOVED" ""))
- (run-hooks 'org-clock-out-hook)
+ (let ((h org-clock-out-hook))
+ ;; If a closing note needs to be stored in the drawer
+ ;; where clocks are stored, let's temporarily disable
+ ;; `org-clock-remove-empty-clock-drawer'
+ (if (and (equal org-clock-into-drawer org-log-into-drawer)
+ (eq org-log-done 'note)
+ org-clock-out-when-done)
+ (setq h (delq 'org-clock-remove-empty-clock-drawer h)))
+ (mapc (lambda (f) (funcall f)) h))
(unless (org-clocking-p)
(org-clock-delete-current)))))))