Ver código fonte

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 15 anos atrás
pai
commit
c5146a8972
1 arquivos alterados com 20 adições e 22 exclusões
  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