]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/frame.el (handle-focus-in, handle-focus-out): Move from frame.c.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 25 Nov 2013 02:41:02 +0000 (21:41 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 25 Nov 2013 02:41:02 +0000 (21:41 -0500)
Remove blink-cursor code.
(blink-cursor-timer-function, blink-cursor-suspend): Don't special-case GUIs.
(blink-cursor-mode): Use focus-in/out-hook.
* src/frame.c (Fhandle_focus_in, Fhandle_focus_out): Move to frame.el.
(syms_of_frame): Don't defsubr them.

lisp/ChangeLog
lisp/frame.el
src/ChangeLog
src/frame.c

index f2d2f732222713245e13342bf917ed1da1172ac8..d8b176fad6543022c8b7ae7458ced3c7f943755b 100644 (file)
@@ -1,3 +1,11 @@
+2013-11-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.el (handle-focus-in, handle-focus-out): Move from frame.c.
+       Remove blink-cursor code.
+       (blink-cursor-timer-function, blink-cursor-suspend):
+       Don't special-case GUIs.
+       (blink-cursor-mode): Use focus-in/out-hook.
+
 2013-11-25  Dmitry Gutov  <dgutov@yandex.ru>
 
        * vc/vc-git.el (vc-git-annotate-extract-revision-at-line): Make it
 
 2013-11-21  Leo Liu  <sdl.web@gmail.com>
 
-       * progmodes/octave.el (octave-mode, inferior-octave-mode): Fix
-       obsolete variable comment-use-global-state.
+       * progmodes/octave.el (octave-mode, inferior-octave-mode):
+       Fix obsolete variable comment-use-global-state.
 
 2013-11-21  RĂ¼diger Sonderfeld  <ruediger@c-plusplus.de>
 
-       * progmodes/octave.el (octave-mode-map, octave-mode-menu): Add
-       `octave-source-file'.
+       * progmodes/octave.el (octave-mode-map, octave-mode-menu):
+       Add `octave-source-file'.
        (octave-source-file): New function.  (Bug#15935)
 
 2013-11-21  Kenjiro Nakayama <nakayamakenjiro@gmail.com>  (tiny change)
index 87756f78f1ca0033aa82f94fb27f7860a6fbba59..57f9395b9352fa6a07c203dc680183d8213b0211 100644 (file)
@@ -120,6 +120,21 @@ appended when the minibuffer frame is created."
        (delete-frame frame t)
       ;; Gildea@x.org says it is ok to ask questions before terminating.
       (save-buffers-kill-emacs))))
+
+(defun handle-focus-in (_event)
+  "Handle a focus-in event.
+Focus-in events are usually bound to this function.
+Focus-in events occur when a frame has focus, but a switch-frame event
+is not generated.
+This function runs the hook `focus-in-hook'."
+  (run-hooks 'focus-in-hook))
+
+(defun handle-focus-out (_event)
+  "Handle a focus-out event.
+Focus-out events are usually bound to this function.
+Focus-out events occur when no frame has focus.
+This function runs the hook `focus-out-hook'."
+  (run-hooks 'focus-out-hook))
 \f
 ;;;; Arrangement of frames at startup
 
@@ -1727,12 +1742,11 @@ command starts, by installing a pre-command hook."
   "Timer function of timer `blink-cursor-timer'."
   (internal-show-cursor nil (not (internal-show-cursor-p)))
   ;; Each blink is two calls to this function.
-  (when (memq window-system '(x ns w32))
-    (setq blink-cursor-blinks-done (1+ blink-cursor-blinks-done))
-    (when (and (> blink-cursor-blinks 0)
-              (<= (* 2 blink-cursor-blinks) blink-cursor-blinks-done))
-      (blink-cursor-suspend)
-      (add-hook 'post-command-hook 'blink-cursor-check))))
+  (setq blink-cursor-blinks-done (1+ blink-cursor-blinks-done))
+  (when (and (> blink-cursor-blinks 0)
+             (<= (* 2 blink-cursor-blinks) blink-cursor-blinks-done))
+    (blink-cursor-suspend)
+    (add-hook 'post-command-hook 'blink-cursor-check)))
 
 
 (defun blink-cursor-end ()
@@ -1747,15 +1761,14 @@ itself as a pre-command hook."
     (setq blink-cursor-timer nil)))
 
 (defun blink-cursor-suspend ()
-  "Suspend cursor blinking on NS, X and W32.
+  "Suspend cursor blinking.
 This is called when no frame has focus and timers can be suspended.
 Timers are restarted by `blink-cursor-check', which is called when a
 frame receives focus."
-  (when (memq window-system '(x ns w32))
-    (blink-cursor-end)
-    (when blink-cursor-idle-timer
-      (cancel-timer blink-cursor-idle-timer)
-      (setq blink-cursor-idle-timer nil))))
+  (blink-cursor-end)
+  (when blink-cursor-idle-timer
+    (cancel-timer blink-cursor-idle-timer)
+    (setq blink-cursor-idle-timer nil)))
 
 (defun blink-cursor-check ()
   "Check if cursor blinking shall be restarted.
@@ -1789,13 +1802,15 @@ terminals, cursor blinking is controlled by the terminal."
   (if blink-cursor-idle-timer (cancel-timer blink-cursor-idle-timer))
   (setq blink-cursor-idle-timer nil)
   (blink-cursor-end)
+  (remove-hook 'focus-in-hook #'blink-cursor-check)
+  (remove-hook 'focus-out-hook #'blink-cursor-suspend)
   (when blink-cursor-mode
-    ;; Hide the cursor.
-    ;;(internal-show-cursor nil nil)
+    (add-hook 'focus-in-hook #'blink-cursor-check)
+    (add-hook 'focus-out-hook #'blink-cursor-suspend)
     (setq blink-cursor-idle-timer
           (run-with-idle-timer blink-cursor-delay
                                blink-cursor-delay
-                               'blink-cursor-start))))
+                               #'blink-cursor-start))))
 
 \f
 ;; Frame maximization/fullscreen
index 7f417ccca8a0e395449b712516212b54e088efa0..9947ba4b070e491dad78d52b43359de3e6550cb3 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.c (Fhandle_focus_in, Fhandle_focus_out): Move to frame.el.
+       (syms_of_frame): Don't defsubr them.
+
 2013-11-25  Glenn Morris  <rgm@gnu.org>
 
        * lread.c (load_path_default): Change the sense of the argument.
index fbfc77226812fec1311398ddf3ba73e2e54ac0b9..84293e27d0daa95704b0b7ec878c3aa697380fe3 100644 (file)
@@ -887,31 +887,6 @@ This function returns FRAME, or nil if FRAME has been deleted.  */)
   return do_switch_frame (frame, 1, 0, norecord);
 }
 
-DEFUN ("handle-focus-in", Fhandle_focus_in, Shandle_focus_in, 1, 1, "e",
-       doc: /* Handle a focus-in event.
-Focus in events are usually bound to this function.
-Focus in events occur when a frame has focus, but a switch-frame event
-is not generated.
-This function runs the hook `focus-in-hook'.
-It also checks if blink-cursor timers should be turned on again.  */)
-  (Lisp_Object event)
-{
-  Frun_hooks (1, &Qfocus_in_hook);
-  return call0 (intern ("blink-cursor-check"));
-}
-
-DEFUN ("handle-focus-out", Fhandle_focus_out, Shandle_focus_out, 1, 1, "e",
-       doc: /* Handle a focus-out event.
-Focus out events are usually bound to this function.
-Focus out events occur when no frame has focus.
-This function runs the hook `focus-out-hook'.
-It also checks if blink-cursor timers should be turned off.  */)
-  (Lisp_Object event)
-{
-  Frun_hooks (1, &Qfocus_out_hook);
-  return call0 (intern ("blink-cursor-suspend"));
-}
-
 DEFUN ("handle-switch-frame", Fhandle_switch_frame, Shandle_switch_frame, 1, 1, "e",
        doc: /* Handle a switch-frame event EVENT.
 Switch-frame events are usually bound to this function.
@@ -926,7 +901,8 @@ to that frame.  */)
   /* Preserve prefix arg that the command loop just cleared.  */
   kset_prefix_arg (current_kboard, Vcurrent_prefix_arg);
   Frun_hooks (1, &Qmouse_leave_buffer_hook);
-  Fhandle_focus_in (event); // switch-frame implies a focus in.
+  /* `switch-frame' implies a focus in.  */
+  call1 (intern ("handle-focus-in"), event);
   return do_switch_frame (event, 0, 0, Qnil);
 }
 
@@ -4542,8 +4518,6 @@ automatically.  See also `mouse-autoselect-window'.  */);
   defsubr (&Swindow_system);
   defsubr (&Smake_terminal_frame);
   defsubr (&Shandle_switch_frame);
-  defsubr (&Shandle_focus_in);
-  defsubr (&Shandle_focus_out);
   defsubr (&Sselect_frame);
   defsubr (&Sselected_frame);
   defsubr (&Sframe_list);