changeset 24982:c81447275ea3

(after-setting-font-hooks): New; from Eric Banchrow <offby1@blarg.net>. (set-frame-font): Run the hooks. (frame-initialize): Use tty-create-frame-with-faces. (show-trailing-whitespace): New. (blink-cursor-mode): Function to toggle blinking cursor mode. The cursor of selected_window blinks if the mode is enabled.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 21 Jul 1999 21:43:03 +0000
parents 55c4349025cb
children 583275537b14
files lisp/frame.el
diffstat 1 files changed, 120 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/frame.el	Wed Jul 21 21:43:03 1999 +0000
+++ b/lisp/frame.el	Wed Jul 21 21:43:03 1999 +0000
@@ -204,8 +204,8 @@
     ;; we support that feature, otherwise arrange to cause errors.
     (or (eq window-system 'pc)
 	(setq frame-creation-function
-	      (if (fboundp 'make-terminal-frame)
-		  'make-terminal-frame
+	      (if (fboundp 'tty-create-frame-with-faces)
+		  'tty-create-frame-with-faces
 		(function
 		 (lambda (parameters)
 		   (error
@@ -445,6 +445,9 @@
   "Functions to run after a frame is created.
 The functions are run with one arg, the newly created frame.")
 
+(defvar after-setting-font-hooks nil
+  "Functions to run after a frame's font has been changed.")
+
 ;; Alias, kept temporarily.
 (defalias 'new-frame 'make-frame)
 
@@ -662,7 +665,8 @@
   (modify-frame-parameters (selected-frame)
 			   (list (cons 'font font-name)))
   ;; Update faces that want a bold or italic version of the default font.
-  (frame-update-faces (selected-frame)))
+  (frame-update-faces (selected-frame))
+  (run-hooks 'after-setting-font-hooks))
 
 (defun set-background-color (color-name)
   "Set the background color of the selected frame to COLOR.
@@ -770,6 +774,119 @@
 (make-obsolete 'set-screen-height 'set-frame-height)
 
 
+;;; Highlighting trailing whitespace.
+
+(make-variable-buffer-local 'show-trailing-whitespace)
+
+(defcustom show-trailing-whitespace nil
+  "*Non-nil means highlight trailing whitespace in face `trailing-whitespace'."
+  :tag "Highlight trailing whitespace."
+  :set #'(lambda (symbol value) (set-default symbol value))
+  :type 'boolean
+  :group 'font-lock)
+
+
+
+;;; Blinking cursor
+
+(defgroup cursor nil
+  "Cursor on frames."
+  :group 'frames)
+
+(defcustom blink-cursor-delay 0.5
+  "*Seconds of Emacs idle time after which cursor starts to blink."
+  :tag "Delay in seconds."
+  :type 'number
+  :group 'cursor)
+
+(defcustom blink-cursor-interval 0.5
+  "*Length of cursor blink interval in seconds."
+  :tag "Blink interval in seconds."
+  :type 'number
+  :group 'cursor)
+
+(defvar blink-cursor-idle-timer nil
+  "Timer started after blink-cursor-delay seconds of Emacs idle time.
+The function blink-cursor-start is called when the timer fires.")
+
+(defvar blink-cursor-timer nil
+  "Time started from blink-cursor-start.  This timer calls blink-cursor
+every blink-cursor-interval seconds.")
+
+(defvar blink-cursor-mode nil
+  "Non-nil means blinking cursor is active.")
+
+(defun blink-cursor-mode (arg)
+  "Toggle blinking cursor mode.
+With arg, turn blinking cursor mode on iff arg is positive.
+When blinking cursor mode is enabled, the cursor of the selected
+window blinks."
+  (interactive "P")
+  (let ((on-p (if (null arg)
+		  (not blink-cursor-mode)
+		(> (prefix-numeric-value arg) 0))))
+    (if blink-cursor-idle-timer
+	(cancel-timer blink-cursor-idle-timer))
+    (if blink-cursor-timer
+	(cancel-timer blink-cursor-timer))
+    (setq blink-cursor-idle-timer nil
+	  blink-cursor-timer nil
+	  blink-cursor-mode nil)
+    (if on-p
+	(progn
+	  ;; Hide the cursor.
+	  (show-cursor 0)
+	  (setq blink-cursor-idle-timer
+		(run-with-idle-timer blink-cursor-delay
+				     blink-cursor-delay
+				     'blink-cursor-start))
+	  (setq blink-cursor-mode t)))))
+
+(defcustom blink-cursor t
+  "*Non-nil means blink-cursor-mode is active."
+  :tag "Blinking cursor"
+  :type 'boolean
+  :group 'cursor
+  :set #'(lambda (symbol value)
+	   (set-default symbol value)
+	   (blink-cursor-mode (or value 0))))
+
+(defun blink-cursor-start ()
+  "Timer function called from timer blink-cursor-idle-timer.
+Starts the timer blink-cursor-timer which lets the cursor blink
+if the selected frame has a non-nil `cursor-blinking' frame parameter.
+Arranges to cancel that timer by installing a pre command hook."
+  (when (null blink-cursor-timer)
+    (add-hook 'pre-command-hook 'blink-cursor-end)
+    (setq blink-cursor-timer
+	  (run-with-timer blink-cursor-interval blink-cursor-interval
+			  'show-cursor))))
+
+(defun blink-cursor-end ()
+  "Stop cursor blinking.
+Installed as a pre-command hook by blink-cursor-start.  Cancels
+the timer blink-cursor-timer and removes itself from the hook."
+  (remove-hook 'pre-command-hook 'blink-cursor-end)
+  (show-cursor 0)
+  (cancel-timer blink-cursor-timer)
+  (setq blink-cursor-timer nil))
+
+
+
+;;; Busy-cursor.
+
+(defcustom busy-cursor t
+  "*Non-nil means show a busy-cursor when running under a window-system."
+  :tag "Busy-cursor"
+  :type 'boolean
+  :group 'cursor
+  :get #'(lambda (symbol) display-busy-cursor)
+  :set #'(lambda (symbol value)
+	   (set-default symbol value)
+	   (setq display-busy-cursor value)))
+
+
+
 ;;;; Key bindings
 
 (define-key ctl-x-5-map "2" 'make-frame-command)