فهرست منبع

Fixes to the way org-idle-time is handled

A let needed to be let*, and current-idle-time always returns nil on
some systems, so for darwin and x11, those idle time values are always
preferred.
John Wiegley 16 سال پیش
والد
کامیت
c5146a8972
1فایلهای تغییر یافته به همراه20 افزوده شده و 22 حذف شده
  1. 20 22
      lisp/org-clock.el

+ 20 - 22
lisp/org-clock.el

@@ -706,12 +706,14 @@ was started."
 		      (message (concat (funcall prompt-fn clock)
 				       " [(kK)eep (sS)ubtract (C)ancel]? "))
 		      (setq char-pressed (read-char-exclusive)))
-		  (while (null char-pressed)
-		    (setq char-pressed
-			  (read-char (concat (funcall prompt-fn clock)
-					     " [(kK)eep (sS)ubtract (C)ancel]? ")
-				     nil 45)))
-		  char-pressed)))))
+		(while (or (null char-pressed)
+			   (and (not (memq char-pressed '(?k ?K ?s ?S ?C ?i)))
+				(or (ding) t)))
+		  (setq char-pressed
+			(read-char (concat (funcall prompt-fn clock)
+					   " [(kK)p (sS)ub (C)ncl (i)gn]? ")
+				   nil 45)))
+		(and (not (eq char-pressed ?i)) char-pressed))))))
 	 (default (floor (/ (org-float-time
 			     (time-subtract (current-time) last-valid)) 60)))
 	 (keep (and (memq ch '(?k ?K))
@@ -786,17 +788,13 @@ non-dangling (i.e., currently open and valid) clocks."
 (defun org-user-idle-seconds ()
   "Return the number of seconds the user has been idle for.
 This routine returns a floating point number."
-  (if (or (eq system-type 'darwin) (eq window-system 'x))
-      (let ((emacs-idle (org-emacs-idle-seconds)))
-	;; If Emacs has been idle for longer than the user's
-	;; `org-clock-idle-time' value, check whether the whole system has
-	;; really been idle for that long.
-	(if (> emacs-idle (* 60 org-clock-idle-time))
-	    (min emacs-idle (if (eq system-type 'darwin)
-				(org-mac-idle-seconds)
-			      (org-x11-idle-seconds)))
-	  emacs-idle))
-    (org-emacs-idle-seconds)))
+  (cond
+   ((eq system-type 'darwin)
+    (org-mac-idle-seconds))
+   ((eq window-system 'x)
+    (org-x11-idle-seconds))
+   (t
+    (org-emacs-idle-seconds))))
 
 (defvar org-clock-user-idle-seconds)
 
@@ -807,11 +805,11 @@ if the user really wants to stay clocked in after being idle for
 so long."
   (when (and org-clock-idle-time (not org-clock-resolving-clocks)
 	     org-clock-marker)
-    (let ((org-clock-user-idle-seconds (org-user-idle-seconds))
-	  (org-clock-user-idle-start
-	   (time-subtract (current-time)
-			  (seconds-to-time org-clock-user-idle-seconds)))
-	  (org-clock-resolving-clocks-due-to-idleness t))
+    (let* ((org-clock-user-idle-seconds (org-user-idle-seconds))
+	   (org-clock-user-idle-start
+	    (time-subtract (current-time)
+			   (seconds-to-time org-clock-user-idle-seconds)))
+	   (org-clock-resolving-clocks-due-to-idleness t))
       (if (> org-clock-user-idle-seconds (* 60 org-clock-idle-time))
 	  (org-clock-resolve
 	   (cons org-clock-marker