diff lisp/packages/blink-cursor.el @ 98:0d2f883870bc r20-1b1

Import from CVS: tag r20-1b1
author cvs
date Mon, 13 Aug 2007 09:13:56 +0200
parents 131b0175ea99
children 8eaf7971accc
line wrap: on
line diff
--- a/lisp/packages/blink-cursor.el	Mon Aug 13 09:12:43 2007 +0200
+++ b/lisp/packages/blink-cursor.el	Mon Aug 13 09:13:56 2007 +0200
@@ -38,15 +38,29 @@
       (or blink-cursor-last-selected-window
 	  (setq blink-cursor-last-selected-window window))
       (if (eq window blink-cursor-last-selected-window)
-	  (set-specifier text-cursor-visible-p
-			 (not (specifier-instance text-cursor-visible-p
-						  window))
-			 window)
+
+	  (if (specifier-instance text-cursor-visible-p window)
+	      (if (let ((current-time (current-time)))
+		    (or (> (car current-time) (car last-input-time))
+			(> (cadr current-time) (cdr last-input-time))))
+		  ;; turn cursor off only if more than a second since
+		  ;; last input
+		  (set-specifier text-cursor-visible-p nil window))
+	    (set-specifier text-cursor-visible-p t window))
+
 	(remove-specifier text-cursor-visible-p
 			  blink-cursor-last-selected-window)
 	(setq blink-cursor-last-selected-window window)
 	(set-specifier text-cursor-visible-p nil window)))))
 
+; Turn on cursor after every command
+(defun blink-cursor-post-command-hook ()
+  (let ((inhibit-quit t)
+	(window (selected-window)))
+    (if blink-cursor-lost-focus
+	nil
+      (set-specifier text-cursor-visible-p t window))))
+
 (defun blink-cursor-reenable-cursor ()
   (if blink-cursor-last-selected-window
       (progn
@@ -63,6 +77,7 @@
 
 (add-hook 'deselect-frame-hook 'blink-cursor-deselect-frame-hook)
 (add-hook 'select-frame-hook 'blink-cursor-select-frame-hook)
+(add-hook 'post-command-hook 'blink-cursor-post-command-hook)
 
 (defvar blink-cursor-timeout 1.0)
 (defvar blink-cursor-timeout-id nil)
@@ -96,4 +111,11 @@
   (if blink-cursor-mode
       (setq blink-cursor-timeout-id
 	    (add-timeout (/ (float timeout) 2) 'blink-cursor-callback nil
-			 (/ (float timeout) 2)))))
+        (/ (float timeout) 2))))
+  ; initialize last-input-time
+  (if (not last-input-time)
+      (setq last-input-time (cons 0 0))))
+
+(provide 'blink-cursor)
+
+;;; blink-cursor.el ends here