Convert consecutive FSF copyright years to ranges.
[bpt/emacs.git] / lisp / frame.el
index 8f65cc7..050bd49 100644 (file)
@@ -1,7 +1,7 @@
 ;;; frame.el --- multi-frame management independent of window systems
 
-;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1996-1997, 2000-2011
+;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: internal
@@ -295,22 +295,19 @@ there (in decreasing order of priority)."
               (null frame-initial-frame))
       ;; This case happens when we don't have a window system, and
       ;; also for MS-DOS frames.
-      (let ((parms (frame-parameters frame-initial-frame)))
+      (let ((parms (frame-parameters)))
        ;; Don't change the frame names.
        (setq parms (delq (assq 'name parms) parms))
        ;; Can't modify the minibuffer parameter, so don't try.
        (setq parms (delq (assq 'minibuffer parms) parms))
-       (modify-frame-parameters nil
-                                (if (null initial-window-system)
-                                    (append initial-frame-alist
-                                            window-system-frame-alist
-                                            default-frame-alist
-                                            parms
-                                            nil)
-                                  ;; initial-frame-alist and
-                                  ;; default-frame-alist were already
-                                  ;; applied in pc-win.el.
-                                  parms))
+       (modify-frame-parameters
+        nil
+        (if initial-window-system
+            parms
+          ;; initial-frame-alist and default-frame-alist were already
+          ;; applied in pc-win.el.
+          (append initial-frame-alist window-system-frame-alist
+                  default-frame-alist parms nil)))
        (if (null initial-window-system) ;; MS-DOS does this differently in pc-win.el
            (let ((newparms (frame-parameters))
                  (frame (selected-frame)))
@@ -511,25 +508,28 @@ there (in decreasing order of priority)."
          ;; it is undesirable to specify the parm again
           ;; once the user has seen the frame and been able to alter it
          ;; manually.
-         (while tail
-           (let (newval oldval)
-             (setq oldval (assq (car (car tail))
-                                frame-initial-frame-alist))
-             (setq newval (cdr (assq (car (car tail)) allparms)))
+         (let (newval oldval)
+           (dolist (entry tail)
+             (setq oldval (assq (car entry) frame-initial-frame-alist))
+             (setq newval (cdr (assq (car entry) allparms)))
              (or (and oldval (eq (cdr oldval) newval))
                  (setq newparms
-                       (cons (cons (car (car tail)) newval) newparms))))
-           (setq tail (cdr tail)))
+                       (cons (cons (car entry) newval) newparms)))))
          (setq newparms (nreverse newparms))
-         (modify-frame-parameters frame-initial-frame
-                                  newparms)
-         ;; If we changed the background color,
-         ;; we need to update the background-mode parameter
-         ;; and maybe some faces too.
-         (when (assq 'background-color newparms)
-           (unless (assq 'background-mode newparms)
-             (frame-set-background-mode frame-initial-frame))
-           (face-set-after-frame-default frame-initial-frame)))))
+
+         (let ((new-bg (assq 'background-color newparms)))
+           ;; If the `background-color' parameter is changed, apply
+           ;; it first, then make sure that the `background-mode'
+           ;; parameter and other faces are updated, before applying
+           ;; the other parameters.
+           (when new-bg
+             (modify-frame-parameters frame-initial-frame
+                                      (list new-bg))
+             (unless (assq 'background-mode newparms)
+               (frame-set-background-mode frame-initial-frame))
+             (face-set-after-frame-default frame-initial-frame)
+             (setq newparms (delq new-bg newparms)))
+           (modify-frame-parameters frame-initial-frame newparms)))))
 
     ;; Restore the original buffer.
     (set-buffer old-buffer)
@@ -907,15 +907,16 @@ Calls `suspend-emacs' if invoked from the controlling tty device,
      (t (suspend-emacs)))))
 
 (defun make-frame-names-alist ()
+  ;; Only consider the frames on the same display.
   (let* ((current-frame (selected-frame))
         (falist
          (cons
           (cons (frame-parameter current-frame 'name) current-frame) nil))
-        (frame (next-frame nil t)))
+        (frame (next-frame nil 0)))
     (while (not (eq frame current-frame))
       (progn
-       (setq falist (cons (cons (frame-parameter frame 'name) frame) falist))
-       (setq frame (next-frame frame t))))
+       (push (cons (frame-parameter frame 'name) frame) falist)
+       (setq frame (next-frame frame 0))))
     falist))
 
 (defvar frame-name-history nil)
@@ -1065,7 +1066,7 @@ See `modify-frame-parameters'."
   "Set the background color of the selected frame to COLOR-NAME.
 When called interactively, prompt for the name of the color to use.
 To get the frame's current background color, use `frame-parameters'."
-  (interactive (list (facemenu-read-color "Background color: ")))
+  (interactive (list (read-color "Background color: ")))
   (modify-frame-parameters (selected-frame)
                           (list (cons 'background-color color-name)))
   (or window-system
@@ -1075,7 +1076,7 @@ To get the frame's current background color, use `frame-parameters'."
   "Set the foreground color of the selected frame to COLOR-NAME.
 When called interactively, prompt for the name of the color to use.
 To get the frame's current foreground color, use `frame-parameters'."
-  (interactive (list (facemenu-read-color "Foreground color: ")))
+  (interactive (list (read-color "Foreground color: ")))
   (modify-frame-parameters (selected-frame)
                           (list (cons 'foreground-color color-name)))
   (or window-system
@@ -1085,7 +1086,7 @@ To get the frame's current foreground color, use `frame-parameters'."
   "Set the text cursor color of the selected frame to COLOR-NAME.
 When called interactively, prompt for the name of the color to use.
 To get the frame's current cursor color, use `frame-parameters'."
-  (interactive (list (facemenu-read-color "Cursor color: ")))
+  (interactive (list (read-color "Cursor color: ")))
   (modify-frame-parameters (selected-frame)
                           (list (cons 'cursor-color color-name))))
 
@@ -1093,7 +1094,7 @@ To get the frame's current cursor color, use `frame-parameters'."
   "Set the color of the mouse pointer of the selected frame to COLOR-NAME.
 When called interactively, prompt for the name of the color to use.
 To get the frame's current mouse color, use `frame-parameters'."
-  (interactive (list (facemenu-read-color "Mouse color: ")))
+  (interactive (list (read-color "Mouse color: ")))
   (modify-frame-parameters (selected-frame)
                           (list (cons 'mouse-color
                                       (or color-name
@@ -1104,7 +1105,7 @@ To get the frame's current mouse color, use `frame-parameters'."
   "Set the color of the border of the selected frame to COLOR-NAME.
 When called interactively, prompt for the name of the color to use.
 To get the frame's current border color, use `frame-parameters'."
-  (interactive (list (facemenu-read-color "Border color: ")))
+  (interactive (list (read-color "Border color: ")))
   (modify-frame-parameters (selected-frame)
                           (list (cons 'border-color color-name))))
 
@@ -1210,8 +1211,7 @@ frame's display)."
 (defun display-selections-p (&optional display)
   "Return non-nil if DISPLAY supports selections.
 A selection is a way to transfer text or other data between programs
-via special system buffers called `selection' or `cut buffer' or
-`clipboard'.
+via special system buffers called `selection' or `clipboard'.
 DISPLAY can be a display name, a frame, or nil (meaning the selected
 frame's display)."
   (let ((frame-type (framep-on-display display)))
@@ -1466,14 +1466,6 @@ left untouched.  FRAME nil or omitted means use the selected frame."
 
 (make-variable-buffer-local 'show-trailing-whitespace)
 
-(defcustom show-trailing-whitespace nil
-  "Non-nil means highlight trailing whitespace.
-This is done in the face `trailing-whitespace'."
-  :type 'boolean
-  :safe 'booleanp
-  :group 'whitespace-faces)
-
-
 \f
 ;; Scrolling
 
@@ -1482,13 +1474,6 @@ This is done in the face `trailing-whitespace'."
   :version "21.1"
   :group 'frames)
 
-(defcustom auto-hscroll-mode t
-  "Allow or disallow automatic scrolling windows horizontally.
-If non-nil, windows are automatically scrolled horizontally to make
-point visible."
-  :version "21.1"
-  :type 'boolean
-  :group 'scrolling)
 (defvaralias 'automatic-hscrolling 'auto-hscroll-mode)
 
 \f
@@ -1559,7 +1544,7 @@ cursor display.  On a text-only terminal, this is not implemented."
   :init-value (not (or noninteractive
                       no-blinking-cursor
                       (eq system-type 'ms-dos)
-                      (not (memq window-system '(x w32)))))
+                      (not (memq window-system '(x w32 ns)))))
   :initialize 'custom-initialize-delay
   :group 'cursor
   :global t
@@ -1575,35 +1560,6 @@ cursor display.  On a text-only terminal, this is not implemented."
                                'blink-cursor-start))))
 
 (define-obsolete-variable-alias 'blink-cursor 'blink-cursor-mode "22.1")
-\f
-;; Hourglass pointer
-
-(defcustom display-hourglass t
-  "Non-nil means show an hourglass pointer, when Emacs is busy.
-This feature only works when on a window system that can change
-cursor shapes."
-  :type 'boolean
-  :group 'cursor)
-
-(defcustom hourglass-delay 1
-  "Seconds to wait before displaying an hourglass pointer when Emacs is busy."
-  :type 'number
-  :group 'cursor)
-
-\f
-(defcustom cursor-in-non-selected-windows t
-  "Non-nil means show a hollow box cursor in non-selected windows.
-If nil, don't show a cursor except in the selected window.
-If t, display a cursor related to the usual cursor type
- \(a solid box becomes hollow, a bar becomes a narrower bar).
-You can also specify the cursor type as in the `cursor-type' variable.
-Use Custom to set this variable to get the display updated."
-  :tag "Cursor In Non-selected Windows"
-  :type 'boolean
-  :group 'cursor
-  :set #'(lambda (symbol value)
-          (set-default symbol value)
-          (force-mode-line-update t)))
 
 \f
 ;;;; Key bindings
@@ -1615,5 +1571,4 @@ Use Custom to set this variable to get the display updated."
 
 (provide 'frame)
 
-;; arch-tag: 82979c70-b8f2-4306-b2ad-ddbd6b328b56
 ;;; frame.el ends here