Commit 485464c4 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(blink-cursor-mode): Use define-minor-mode.

parent 478a161d
;;; frame.el --- multi-frame management independent of window systems ;;; frame.el --- multi-frame management independent of window systems
;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2003, 2004 ;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2003, 2004, 2005
;; Free Software Foundation, Inc. ;; Free Software Foundation, Inc.
;; Maintainer: FSF ;; Maintainer: FSF
...@@ -1256,35 +1256,11 @@ The function `blink-cursor-start' is called when the timer fires.") ...@@ -1256,35 +1256,11 @@ The function `blink-cursor-start' is called when the timer fires.")
This timer calls `blink-cursor-timer-function' every This timer calls `blink-cursor-timer-function' every
`blink-cursor-interval' seconds.") `blink-cursor-interval' seconds.")
;; The strange sequence below is meant to set both the right temporary ;; We do not know the standard _evaluated_ value yet, because the standard
;; value and the right "standard expression" , according to Custom, ;; expression uses values that are not yet set. The correct evaluated
;; for blink-cursor-mode. We do not know the standard _evaluated_ ;; standard value will be installed in startup.el using exactly the same
;; value yet, because the standard expression uses values that are not ;; expression as in the defcustom.
;; yet set. Evaluating it now would yield an error, but we make sure (define-minor-mode blink-cursor-mode
;; that it is not evaluated, by ensuring that blink-cursor-mode is set
;; before the defcustom is evaluated and by using the right :initialize
;; function. The correct evaluated standard value will be installed
;; in startup.el using exactly the same expression as in the defcustom.
(defvar blink-cursor-mode)
(unless (boundp 'blink-cursor-mode) (setq blink-cursor-mode nil))
(defcustom blink-cursor-mode
(not (or noninteractive
emacs-quick-startup
(eq system-type 'ms-dos)
(not (memq window-system '(x w32)))))
"*Non-nil means Blinking Cursor mode is active."
:group 'cursor
:tag "Blinking cursor"
:type 'boolean
:initialize 'custom-initialize-set
:set #'(lambda (symbol value)
(set-default symbol value)
(blink-cursor-mode (or value 0))))
(defvaralias 'blink-cursor 'blink-cursor-mode)
(make-obsolete-variable 'blink-cursor 'blink-cursor-mode "22.1")
(defun blink-cursor-mode (arg)
"Toggle blinking cursor mode. "Toggle blinking cursor mode.
With a numeric argument, turn blinking cursor mode on iff ARG is positive. With a numeric argument, turn blinking cursor mode on iff ARG is positive.
When blinking cursor mode is enabled, the cursor of the selected When blinking cursor mode is enabled, the cursor of the selected
...@@ -1293,27 +1269,27 @@ window blinks. ...@@ -1293,27 +1269,27 @@ window blinks.
Note that this command is effective only when Emacs Note that this command is effective only when Emacs
displays through a window system, because then Emacs does its own displays through a window system, because then Emacs does its own
cursor display. On a text-only terminal, this is not implemented." cursor display. On a text-only terminal, this is not implemented."
(interactive "P") :init-value (not (or noninteractive
(let ((on-p (if (null arg) emacs-quick-startup
(not blink-cursor-mode) (eq system-type 'ms-dos)
(> (prefix-numeric-value arg) 0)))) (not (memq window-system '(x w32)))))
(if blink-cursor-idle-timer :global t
(cancel-timer blink-cursor-idle-timer)) (if blink-cursor-idle-timer (cancel-timer blink-cursor-idle-timer))
(if blink-cursor-timer (if blink-cursor-timer (cancel-timer blink-cursor-timer))
(cancel-timer blink-cursor-timer)) (setq blink-cursor-idle-timer nil
(setq blink-cursor-idle-timer nil blink-cursor-timer nil)
blink-cursor-timer nil (if blink-cursor-mode
blink-cursor-mode nil) (progn
(if on-p ;; Hide the cursor.
(progn ;;(internal-show-cursor nil nil)
;; Hide the cursor. (setq blink-cursor-idle-timer
;(internal-show-cursor nil nil) (run-with-idle-timer blink-cursor-delay
(setq blink-cursor-idle-timer blink-cursor-delay
(run-with-idle-timer blink-cursor-delay 'blink-cursor-start)))
blink-cursor-delay (internal-show-cursor nil t)))
'blink-cursor-start))
(setq blink-cursor-mode t)) (defvaralias 'blink-cursor 'blink-cursor-mode)
(internal-show-cursor nil t)))) (make-obsolete-variable 'blink-cursor 'blink-cursor-mode "22.1")
(defun blink-cursor-start () (defun blink-cursor-start ()
"Timer function called from the timer `blink-cursor-idle-timer'. "Timer function called from the timer `blink-cursor-idle-timer'.
...@@ -1379,5 +1355,5 @@ Use Custom to set this variable to get the display updated." ...@@ -1379,5 +1355,5 @@ Use Custom to set this variable to get the display updated."
(provide 'frame) (provide 'frame)
;;; arch-tag: 82979c70-b8f2-4306-b2ad-ddbd6b328b56 ;; arch-tag: 82979c70-b8f2-4306-b2ad-ddbd6b328b56
;;; frame.el ends here ;;; frame.el ends here
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment