]> code.delx.au - gnu-emacs/blobdiff - lisp/frame.el
Merged from miles@gnu.org--gnu-2005 (patch 296-306)
[gnu-emacs] / lisp / frame.el
index 12cc904d47d55800cb8739b4f919c21de6423009..25cc5aa38c830310c0a96bb0af8eb7c6540554db 100644 (file)
@@ -1,6 +1,6 @@
 ;;; 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.
 
 ;; Maintainer: FSF
@@ -153,7 +153,9 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
           ;; (set-window-dedicated-p window t)
           window))
        ;; If no window yet, make one in a new frame.
-       (let ((frame (make-frame (append args special-display-frame-alist))))
+       (let ((frame
+             (with-current-buffer buffer
+               (make-frame (append args special-display-frame-alist)))))
         (set-window-buffer (frame-selected-window frame) buffer)
         (set-window-dedicated-p (frame-selected-window frame) t)
         (frame-selected-window frame))))))
@@ -582,7 +584,7 @@ The optional second argument PARAMETERS specifies additional frame parameters."
   (interactive "sMake frame on display: ")
   (or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display)
       (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
-  (unless x-initialized
+  (when (and (boundp 'x-initialized) (not x-initialized))
     (setq x-display-name display)
     (x-initialize-window-system))
   (make-frame `((window-system . x) (display . ,display) . ,parameters)))
@@ -616,7 +618,7 @@ The functions are run with one arg, the newly created frame.")
 
 ;; Alias, kept temporarily.
 (defalias 'new-frame 'make-frame)
-(make-obsolete 'new-frame 'make-frame "21.4")
+(make-obsolete 'new-frame 'make-frame "22.1")
 
 (defun make-frame (&optional parameters)
   "Return a newly created frame displaying the current buffer.
@@ -1264,7 +1266,7 @@ left untouched.  FRAME nil or omitted means use the selected frame."
 
 ;; miscellaneous obsolescence declarations
 (defvaralias 'delete-frame-hook 'delete-frame-functions)
-(make-obsolete-variable 'delete-frame-hook 'delete-frame-functions "21.4")
+(make-obsolete-variable 'delete-frame-hook 'delete-frame-functions "22.1")
 
 \f
 ;; Highlighting trailing whitespace.
@@ -1322,12 +1324,14 @@ The function `blink-cursor-start' is called when the timer fires.")
 
 (defvar blink-cursor-timer nil
   "Timer 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)
+This timer calls `blink-cursor-timer-function' every
+`blink-cursor-interval' seconds.")
+
+;; We do not know the standard _evaluated_ value yet, because the standard
+;; expression uses values that are not yet set.  The correct evaluated
+;; standard value will be installed in startup.el using exactly the same
+;; expression as in the defcustom.
+(define-minor-mode blink-cursor-mode
   "Toggle blinking cursor mode.
 With a numeric argument, turn blinking cursor mode on iff ARG is positive.
 When blinking cursor mode is enabled, the cursor of the selected
@@ -1336,39 +1340,28 @@ window blinks.
 Note that this command is effective only when Emacs
 displays through a window system, because then Emacs does its own
 cursor display.  On a text-only terminal, this is not implemented."
-  (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.
-         ;(internal-show-cursor nil nil)
-         (setq blink-cursor-idle-timer
-               (run-with-idle-timer blink-cursor-delay
-                                    blink-cursor-delay
-                                    'blink-cursor-start))
-         (setq blink-cursor-mode t))
-      (internal-show-cursor nil t))))
-
-;; Note that this is really initialized from startup.el before
-;; the init-file is read.
-
-(defcustom blink-cursor nil
-  "*Non-nil means blinking cursor mode is active."
+  :init-value (not (or noninteractive
+                      (if (boundp 'no-blinking-cursor) no-blinking-cursor)
+                      (eq system-type 'ms-dos)
+                      (not (memq initial-window-system '(x w32)))))
   :group 'cursor
-  :tag "Blinking cursor"
-  :type 'boolean
-  :set #'(lambda (symbol value)
-          (set-default symbol value)
-          (blink-cursor-mode (or value 0))))
+  :global t
+  (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)
+  (if blink-cursor-mode
+      (progn
+       ;; Hide the cursor.
+       ;;(internal-show-cursor nil nil)
+       (setq blink-cursor-idle-timer
+             (run-with-idle-timer blink-cursor-delay
+                                  blink-cursor-delay
+                                  'blink-cursor-start)))
+    (internal-show-cursor nil t)))
+
+(defvaralias 'blink-cursor 'blink-cursor-mode)
+(make-obsolete-variable 'blink-cursor 'blink-cursor-mode "22.1")
 
 (defun blink-cursor-start ()
   "Timer function called from the timer `blink-cursor-idle-timer'.
@@ -1436,5 +1429,5 @@ Use Custom to set this variable to get the display updated."
 
 (provide 'frame)
 
-;;; arch-tag: 82979c70-b8f2-4306-b2ad-ddbd6b328b56
+;; arch-tag: 82979c70-b8f2-4306-b2ad-ddbd6b328b56
 ;;; frame.el ends here