X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/4a933ef8f05e3e0dd3c5a201468e35753a430cc8..892f9671ada52150f280915fb34970b7acb0312a:/lisp/frame.el diff --git a/lisp/frame.el b/lisp/frame.el index 243ad71497..25cc5aa38c 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -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)))))) @@ -532,7 +534,7 @@ React to settings of `default-frame-alist', `initial-frame-alist' there." ;;;; Creation of additional frames, and other frame miscellanea (defun modify-all-frames-parameters (alist) - "modify all current and future frames parameters according to ALIST. + "Modify all current and future frames' parameters according to ALIST. This changes `default-frame-alist' and possibly `initial-frame-alist'. See help of `modify-frame-parameters' for more information." (let (element) ;; temp @@ -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. @@ -642,7 +644,13 @@ You cannot specify either `width' or `height', you must use neither or both. Before the frame is created (via `frame-creation-function-alist'), functions on the hook `before-make-frame-hook' are run. After the frame is created, functions -on `after-make-frame-functions' are run with one arg, the newly created frame." +on `after-make-frame-functions' are run with one arg, the newly created frame. + +This function itself does not make the new frame the selected frame. +The previously selected frame remains selected. However, the +window system may select the new frame for its own reasons, for +instance if the frame appears under the mouse pointer and your +setup is for focus to follow the pointer." (interactive) (let* ((w (cond ((assq 'display-id parameters) @@ -856,6 +864,8 @@ where "Restore the frames to the state described by CONFIGURATION. Each frame listed in CONFIGURATION has its position, size, window configuration, and other parameters set as specified in CONFIGURATION. +However, this function does not restore deleted frames. + Ordinarily, this function deletes all existing frames not listed in CONFIGURATION. But if optional second argument NODELETE is given and non-nil, the unwanted frames are iconified instead." @@ -1050,7 +1060,8 @@ frame's display)." ((eq frame-type 'pc) (msdos-mouse-p)) ((eq system-type 'windows-nt) - (> w32-num-mouse-buttons 0)) + (with-no-warnings + (> w32-num-mouse-buttons 0))) ((memq frame-type '(x mac)) t) ;; We assume X and Mac *always* have a pointing device (t @@ -1103,7 +1114,8 @@ frame's display)." ((eq frame-type 'pc) ;; MS-DOG frames support selections when Emacs runs inside ;; the Windows' DOS Box. - (not (null dos-windows-version))) + (with-no-warnings + (not (null dos-windows-version)))) ((memq frame-type '(x w32 mac)) t) ;; FIXME? (t @@ -1254,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") ;; Highlighting trailing whitespace. @@ -1312,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 @@ -1326,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'. @@ -1426,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