浏览代码

Refactor some functions in clocking

Patch by Bernt Hansen
Carsten Dominik 15 年之前
父节点
当前提交
a5ebc8d3ae
共有 2 个文件被更改,包括 28 次插入13 次删除
  1. 7 0
      lisp/ChangeLog
  2. 21 13
      lisp/org-clock.el

+ 7 - 0
lisp/ChangeLog

@@ -1,3 +1,10 @@
+2010-03-09  Carsten Dominik  <carsten.dominik@gmail.com>
+
+	* org-clock.el (org-clocking-buffer, org-clocking-p): New function.
+	(org-clock-select-task, org-clock-notify-once-if-expired)
+	(org-clock-in, org-clock-out, org-clock-cancel, org-clock-goto)
+	(org-clock-out-if-current, org-clock-save): Use the new functions.
+
 2010-03-08  Carsten Dominik  <carsten.dominik@gmail.com>
 2010-03-08  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
 	* org-docbook.el (org-export-as-docbook): Remove unnecessary
 	* org-docbook.el (org-export-as-docbook): Remove unnecessary

+ 21 - 13
lisp/org-clock.el

@@ -333,6 +333,14 @@ of a different task.")
   (mapc (lambda (m) (org-check-and-save-marker m beg end))
   (mapc (lambda (m) (org-check-and-save-marker m beg end))
 	org-clock-history))
 	org-clock-history))
 
 
+(defun org-clocking-buffer ()
+  "Returns clocking buffer if we are currently clocking a task or nil"
+  (marker-buffer org-clock-marker))
+
+(defun org-clocking-p ()
+  "Returns t when clocking a task"
+  (not (equal (org-clocking-buffer) nil)))
+
 (defun org-clock-select-task (&optional prompt)
 (defun org-clock-select-task (&optional prompt)
   "Select a task that recently was associated with clocking."
   "Select a task that recently was associated with clocking."
   (interactive)
   (interactive)
@@ -349,7 +357,7 @@ of a different task.")
 	(insert (org-add-props "The task interrupted by starting the last one\n" nil 'face 'bold))
 	(insert (org-add-props "The task interrupted by starting the last one\n" nil 'face 'bold))
 	(setq s (org-clock-insert-selection-line ?i org-clock-interrupted-task))
 	(setq s (org-clock-insert-selection-line ?i org-clock-interrupted-task))
 	(push s sel-list))
 	(push s sel-list))
-      (when (marker-buffer org-clock-marker)
+      (when (org-clocking-p)
 	(insert (org-add-props "Current Clocking Task\n" nil 'face 'bold))
 	(insert (org-add-props "Current Clocking Task\n" nil 'face 'bold))
 	(setq s (org-clock-insert-selection-line ?c org-clock-marker))
 	(setq s (org-clock-insert-selection-line ?c org-clock-marker))
 	(push s sel-list))
 	(push s sel-list))
@@ -512,7 +520,7 @@ the mode line."
 (defun org-clock-notify-once-if-expired ()
 (defun org-clock-notify-once-if-expired ()
   "Show notification if we spent more time than we estimated before.
   "Show notification if we spent more time than we estimated before.
 Notification is shown only once."
 Notification is shown only once."
-  (when (marker-buffer org-clock-marker)
+  (when (org-clocking-p)
     (let ((effort-in-minutes (org-hh:mm-string-to-minutes org-clock-effort))
     (let ((effort-in-minutes (org-hh:mm-string-to-minutes org-clock-effort))
 	  (clocked-time (org-clock-get-clocked-time)))
 	  (clocked-time (org-clock-get-clocked-time)))
       (if (setq org-task-overrun 
       (if (setq org-task-overrun 
@@ -886,7 +894,7 @@ the clocking selection, associated with the letter `d'."
   (setq org-clock-notification-was-shown nil)
   (setq org-clock-notification-was-shown nil)
   (catch 'abort
   (catch 'abort
     (let ((interrupting (and (not org-clock-resolving-clocks-due-to-idleness)
     (let ((interrupting (and (not org-clock-resolving-clocks-due-to-idleness)
-			     (marker-buffer org-clock-marker)))
+			     (org-clocking-p)))
 	  ts selected-task target-pos (msg-extra "")
 	  ts selected-task target-pos (msg-extra "")
 	  (left-over (and (not org-clock-resolving-clocks)
 	  (left-over (and (not org-clock-resolving-clocks)
 			  org-clock-left-over-time)))
 			  org-clock-left-over-time)))
@@ -922,7 +930,7 @@ the clocking selection, associated with the letter `d'."
 	  (progn
 	  (progn
 	    (move-marker org-clock-interrupted-task
 	    (move-marker org-clock-interrupted-task
 			 (marker-position org-clock-marker)
 			 (marker-position org-clock-marker)
-			 (marker-buffer org-clock-marker))
+			 (org-clocking-buffer))
 	    (org-clock-out t))))
 	    (org-clock-out t))))
 
 
       (when (equal select '(16))
       (when (equal select '(16))
@@ -1189,11 +1197,11 @@ line and position cursor in that line."
 If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
 If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
   (interactive)
   (interactive)
   (catch 'exit
   (catch 'exit
-    (if (not (marker-buffer org-clock-marker))
+    (if (not (org-clocking-p))
 	(if fail-quietly (throw 'exit t) (error "No active clock")))
 	(if fail-quietly (throw 'exit t) (error "No active clock")))
     (let (ts te s h m remove)
     (let (ts te s h m remove)
       (save-excursion
       (save-excursion
-	(set-buffer (marker-buffer org-clock-marker))
+	(set-buffer (org-clocking-buffer))
 	(save-restriction
 	(save-restriction
 	  (widen)
 	  (widen)
 	  (goto-char org-clock-marker)
 	  (goto-char org-clock-marker)
@@ -1258,10 +1266,10 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
 (defun org-clock-cancel ()
 (defun org-clock-cancel ()
   "Cancel the running clock be removing the start timestamp."
   "Cancel the running clock be removing the start timestamp."
   (interactive)
   (interactive)
-  (if (not (marker-buffer org-clock-marker))
+  (if (not (org-clocking-p))
       (error "No active clock"))
       (error "No active clock"))
   (save-excursion
   (save-excursion
-    (set-buffer (marker-buffer org-clock-marker))
+    (set-buffer (org-clocking-buffer))
     (goto-char org-clock-marker)
     (goto-char org-clock-marker)
     (delete-region (1- (point-at-bol)) (point-at-eol))
     (delete-region (1- (point-at-bol)) (point-at-eol))
     ;; Just in case, remove any empty LOGBOOK left over
     ;; Just in case, remove any empty LOGBOOK left over
@@ -1283,7 +1291,7 @@ With prefix arg SELECT, offer recently clocked tasks for selection."
 	     (select
 	     (select
 	      (or (org-clock-select-task "Select task to go to: ")
 	      (or (org-clock-select-task "Select task to go to: ")
 		  (error "No task selected")))
 		  (error "No task selected")))
-	     ((marker-buffer org-clock-marker) org-clock-marker)
+	     ((org-clocking-p) org-clock-marker)
 	     ((and org-clock-goto-may-find-recent-task
 	     ((and org-clock-goto-may-find-recent-task
 		   (car org-clock-history)
 		   (car org-clock-history)
 		   (marker-buffer (car org-clock-history)))
 		   (marker-buffer (car org-clock-history)))
@@ -1463,8 +1471,8 @@ and is only done if the variable `org-clock-out-when-done' is not nil."
 		      (member state org-done-keywords))
 		      (member state org-done-keywords))
 		 (and (listp org-clock-out-when-done)
 		 (and (listp org-clock-out-when-done)
 		      (member state org-clock-out-when-done)))
 		      (member state org-clock-out-when-done)))
-	     (equal (or (buffer-base-buffer (marker-buffer org-clock-marker))
-			(marker-buffer org-clock-marker))
+	     (equal (or (buffer-base-buffer (org-clocking-buffer))
+			(org-clocking-buffer))
 		    (or (buffer-base-buffer (current-buffer))
 		    (or (buffer-base-buffer (current-buffer))
 			(current-buffer)))
 			(current-buffer)))
 	     (< (point) org-clock-marker)
 	     (< (point) org-clock-marker)
@@ -1955,7 +1963,7 @@ The details of what will be saved are regulated by the variable
 			  system-name (format-time-string
 			  system-name (format-time-string
 				       (cdr org-time-stamp-formats))))
 				       (cdr org-time-stamp-formats))))
 	  (if (and (memq org-clock-persist '(t clock))
 	  (if (and (memq org-clock-persist '(t clock))
-		   (setq b (marker-buffer org-clock-marker))
+		   (setq b (org-clocking-buffer))
 		   (setq b (or (buffer-base-buffer b) b))
 		   (setq b (or (buffer-base-buffer b) b))
 		   (buffer-live-p b)
 		   (buffer-live-p b)
 		   (buffer-file-name b)
 		   (buffer-file-name b)
@@ -1964,7 +1972,7 @@ The details of what will be saved are regulated by the variable
 					 (substring-no-properties org-clock-heading)
 					 (substring-no-properties org-clock-heading)
 					 ") "))))
 					 ") "))))
 	      (insert "(setq resume-clock '(\""
 	      (insert "(setq resume-clock '(\""
-		      (buffer-file-name (marker-buffer org-clock-marker))
+		      (buffer-file-name (org-clocking-buffer))
 		      "\" . " (int-to-string (marker-position org-clock-marker))
 		      "\" . " (int-to-string (marker-position org-clock-marker))
 		      "))\n"))
 		      "))\n"))
 	  ;; Store clocked task history. Tasks are stored reversed to make
 	  ;; Store clocked task history. Tasks are stored reversed to make