From: Karoly Lorentey Date: Sat, 14 Oct 2006 16:56:21 +0000 (+0000) Subject: Merged from emacs@sv.gnu.org X-Git-Tag: emacs-pretest-23.0.90~11236^2~141^2~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3f87f67ee215ffeecbd2f53bd7f342cdf03f47df;p=emacs.git Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-371 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-372 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-373 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-374 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-375 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-376 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-377 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-378 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-379 Merge from erc--emacs--21 * emacs@sv.gnu.org/emacs--devo--0--patch-380 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-381 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-382 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-383 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-384 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-385 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-386 Update from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-387 Fix ERC bug introduced in last patch * emacs@sv.gnu.org/emacs--devo--0--patch-388 Update from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-389 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-390 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-391 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-392 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-393 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-394 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-395 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-396 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-397 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-398 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-399 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-400 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-401 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-402 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-403 Rcirc update from Ryan Yeske * emacs@sv.gnu.org/emacs--devo--0--patch-404 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-405 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-406 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-407 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-408 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-409 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-410 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-411 Miscellaneous tq-related fixes. * emacs@sv.gnu.org/emacs--devo--0--patch-412 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-121 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-122 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-123 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-124 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-125 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-126 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-127 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-581 --- 3f87f67ee215ffeecbd2f53bd7f342cdf03f47df diff --cc lisp/bindings.el index eea9184cee4,65ff8b0f916..9671bf26f25 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@@ -215,15 -209,7 +215,7 @@@ mnemonics of the following coding syste (make-variable-buffer-local 'mode-line-mule-info) - (defvar mode-line-buffer-identification (purecopy '("%12b")) "\ - Mode-line control for identifying the buffer being displayed. - Its default value is (\"%12b\"). - Major modes that edit things other than ordinary files may change this - \(e.g. Info, Dired,...)") - - (make-variable-buffer-local 'mode-line-buffer-identification) - -(defvar mode-line-frame-identification '("-%F ") +(defvar mode-line-frame-identification '(window-system " " "-%F ") "Mode-line control to describe the current frame.") (defvar mode-line-process nil "\ @@@ -294,52 -280,62 +286,64 @@@ Keymap to display on minor modes." ;; mouse-1: select window, mouse-2: delete others, mouse-3: delete, ;; drag-mouse-1: resize, C-mouse-2: split horizontally" "mouse-1: select (drag to resize), mouse-2: delete others, mouse-3: delete this") - (dashes (propertize "--" 'help-echo help-echo))) - (setq-default mode-line-format - (list - "%e" - (propertize "-" 'help-echo help-echo) - 'mode-line-mule-info - 'mode-line-client - 'mode-line-modified - 'mode-line-frame-identification - 'mode-line-buffer-identification - (propertize " " 'help-echo help-echo) - 'mode-line-position - `(vc-mode ("" vc-mode ,(propertize " " 'help-echo help-echo))) - 'mode-line-modes - `(which-func-mode ("" which-func-format ,dashes)) - `(global-mode-string (,dashes global-mode-string)) - (propertize "-%-" 'help-echo help-echo))) - - (setq-default mode-line-modes - (list - (propertize "%[(" 'help-echo help-echo) - `(:propertize ("" mode-name) - help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes" - mouse-face mode-line-highlight - local-map ,mode-line-major-mode-keymap) - '("" mode-line-process) - `(:propertize ("" minor-mode-alist) - mouse-face mode-line-highlight - help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes" - local-map ,mode-line-minor-mode-keymap) - (propertize "%n" 'help-echo "mouse-2: widen" - 'mouse-face 'mode-line-highlight - 'local-map (make-mode-line-mouse-map - 'mouse-2 #'mode-line-widen)) - (propertize ")%]--" 'help-echo help-echo))) - - (setq-default mode-line-position - `((-3 ,(propertize "%p" 'help-echo help-echo)) - (size-indication-mode - (8 ,(propertize " of %I" 'help-echo help-echo))) - (line-number-mode - ((column-number-mode - (10 ,(propertize " (%l,%c)" 'help-echo help-echo)) - (6 ,(propertize " L%l" 'help-echo help-echo)))) - ((column-number-mode - (5 ,(propertize " C%c" 'help-echo help-echo)))))))) + (dashes (propertize "--" 'help-echo help-echo)) + (standard-mode-line-format + (list + "%e" + (propertize "-" 'help-echo help-echo) + 'mode-line-mule-info ++ 'mode-line-client + 'mode-line-modified + 'mode-line-frame-identification + 'mode-line-buffer-identification + (propertize " " 'help-echo help-echo) + 'mode-line-position + '(vc-mode vc-mode) + (propertize " " 'help-echo help-echo) + 'mode-line-modes + `(which-func-mode ("" which-func-format ,dashes)) + `(global-mode-string (,dashes global-mode-string)) + (propertize "-%-" 'help-echo help-echo))) + (standard-mode-line-modes + (list + (propertize "%[(" 'help-echo help-echo) + `(:propertize ("" mode-name) + help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes" + mouse-face mode-line-highlight + local-map ,mode-line-major-mode-keymap) + '("" mode-line-process) + `(:propertize ("" minor-mode-alist) + mouse-face mode-line-highlight + help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes" + local-map ,mode-line-minor-mode-keymap) + (propertize "%n" 'help-echo "mouse-2: widen" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map + 'mouse-2 #'mode-line-widen)) + (propertize ")%]--" 'help-echo help-echo))) ++ + (standard-mode-line-position + `((-3 ,(propertize "%p" 'help-echo help-echo)) + (size-indication-mode + (8 ,(propertize " of %I" 'help-echo help-echo))) + (line-number-mode + ((column-number-mode + (10 ,(propertize " (%l,%c)" 'help-echo help-echo)) + (6 ,(propertize " L%l" 'help-echo help-echo)))) + ((column-number-mode + (5 ,(propertize " C%c" 'help-echo help-echo)))))))) + + (setq-default mode-line-format standard-mode-line-format) + (put 'mode-line-format 'standard-value + (list `(quote ,standard-mode-line-format))) + + (setq-default mode-line-modes standard-mode-line-modes) + (put 'mode-line-modes 'standard-value + (list `(quote ,standard-mode-line-modes))) + + (setq-default mode-line-position standard-mode-line-position) + (put 'mode-line-position 'standard-value + (list `(quote ,standard-mode-line-position)))) (defvar mode-line-buffer-identification-keymap nil "\ Keymap for what is displayed by `mode-line-buffer-identification'.") diff --cc lisp/startup.el index 5a6b4089770,9cff91077b0..b96503603c2 --- a/lisp/startup.el +++ b/lisp/startup.el @@@ -1321,68 -1343,67 +1326,87 @@@ mouse. (push last-command-event unread-command-events)) (throw 'exit nil)) +(defun fancy-splash-exit () + "Exit the splash screen." + (if (get-buffer "GNU Emacs") + (throw 'stop-splashing nil))) + +(defun fancy-splash-delete-frame (frame) + "Exit the splash screen after the frame is deleted." + ;; We can not throw from `delete-frame-events', so we set up a timer + ;; to exit the recursive edit as soon as Emacs is idle again. + (if (frame-live-p frame) + (run-at-time 0 nil 'fancy-splash-exit))) - (defun fancy-splash-screens () + (defun fancy-splash-screens (&optional hide-on-input) "Display fancy splash screens when Emacs starts." (setq fancy-splash-help-echo (startup-echo-area-message)) - (let ((old-hourglass display-hourglass) - (fancy-splash-outer-buffer (current-buffer)) - splash-buffer - (old-minor-mode-map-alist minor-mode-map-alist) - (old-emulation-mode-map-alists emulation-mode-map-alists) - (frame (fancy-splash-frame)) - timer) - (save-selected-window - (select-frame frame) - (switch-to-buffer "GNU Emacs") - (setq tab-width 20) - (setq splash-buffer (current-buffer)) - (catch 'stop-splashing - (unwind-protect - (let* ((map (make-sparse-keymap)) - (overriding-local-map map) - ;; Catch if our frame is deleted; the delete-frame - ;; event is unreliable and is handled by - ;; `special-event-map' anyway. - (delete-frame-functions (cons 'fancy-splash-delete-frame - delete-frame-functions))) - (define-key map [t] 'fancy-splash-default-action) - (define-key map [mouse-movement] 'ignore) - (define-key map [mode-line t] 'ignore) - (define-key map [select-window] 'ignore) - (setq cursor-type nil - display-hourglass nil - minor-mode-map-alist nil - emulation-mode-map-alists nil - buffer-undo-list t - mode-line-format (propertize "---- %b %-" - 'face 'mode-line-buffer-id) - fancy-splash-stop-time (+ (float-time) - fancy-splash-max-time) - timer (run-with-timer 0 fancy-splash-delay - #'fancy-splash-screens-1 - splash-buffer)) - (recursive-edit)) - (cancel-timer timer) - (setq display-hourglass old-hourglass - minor-mode-map-alist old-minor-mode-map-alist - emulation-mode-map-alists old-emulation-mode-map-alists) - (kill-buffer splash-buffer) - (when (frame-live-p frame) - (select-frame frame) - (switch-to-buffer fancy-splash-outer-buffer))))))) + (if hide-on-input + (let ((old-hourglass display-hourglass) + (fancy-splash-outer-buffer (current-buffer)) + splash-buffer + (old-minor-mode-map-alist minor-mode-map-alist) + (old-emulation-mode-map-alists emulation-mode-map-alists) + (frame (fancy-splash-frame)) + timer) + (save-selected-window + (select-frame frame) + (switch-to-buffer "GNU Emacs") + (setq tab-width 20) + (setq splash-buffer (current-buffer)) + (catch 'stop-splashing + (unwind-protect - (let ((map (make-sparse-keymap))) - (use-local-map map) - (define-key map [switch-frame] 'ignore) ++ (let* ((map (make-sparse-keymap)) ++ (overriding-local-map map) ++ ;; Catch if our frame is deleted; the delete-frame ++ ;; event is unreliable and is handled by ++ ;; `special-event-map' anyway. ++ (delete-frame-functions (cons 'fancy-splash-delete-frame ++ delete-frame-functions))) + (define-key map [t] 'fancy-splash-default-action) + (define-key map [mouse-movement] 'ignore) + (define-key map [mode-line t] 'ignore) ++ (define-key map [select-window] 'ignore) + (setq cursor-type nil + display-hourglass nil + minor-mode-map-alist nil + emulation-mode-map-alists nil + buffer-undo-list t + mode-line-format (propertize "---- %b %-" + 'face 'mode-line-buffer-id) + fancy-splash-stop-time (+ (float-time) + fancy-splash-max-time) + timer (run-with-timer 0 fancy-splash-delay + #'fancy-splash-screens-1 + splash-buffer)) + (recursive-edit)) + (cancel-timer timer) + (setq display-hourglass old-hourglass + minor-mode-map-alist old-minor-mode-map-alist + emulation-mode-map-alists old-emulation-mode-map-alists) - (kill-buffer splash-buffer))))) ++ (kill-buffer splash-buffer) ++ (when (frame-live-p frame) ++ (select-frame frame) ++ (switch-to-buffer fancy-splash-outer-buffer)))))) + ;; If hide-on-input is non-nil, don't hide the buffer on input. + (if (or (window-minibuffer-p) + (window-dedicated-p (selected-window))) + (pop-to-buffer (current-buffer)) + (switch-to-buffer "GNU Emacs")) + (erase-buffer) + (if pure-space-overflow + (insert "\ + Warning Warning!!! Pure space overflow !!!Warning Warning + \(See the node Pure Storage in the Lisp manual for details.)\n")) + (let (fancy-splash-outer-buffer) + (fancy-splash-head) + (dolist (text fancy-splash-text) + (apply #'fancy-splash-insert text)) + (fancy-splash-tail) + (set-buffer-modified-p nil) + (goto-char (point-min))))) + + (defun fancy-splash-frame () "Return the frame to use for the fancy splash screen. Returning non-nil does not mean we should necessarily @@@ -1527,41 -1554,44 +1557,44 @@@ Emacs is Free Software--Free as in Free of Emacs and modify it; type \\[describe-copying] to see the conditions. Type \\[describe-distribution] for information on getting the latest version.")))) - ;; The rest of the startup screen is the same on all - ;; kinds of terminals. - - ;; Give information on recovering, if there was a crash. - (and auto-save-list-file-prefix - ;; Don't signal an error if the - ;; directory for auto-save-list files - ;; does not yet exist. - (file-directory-p (file-name-directory - auto-save-list-file-prefix)) - (directory-files - (file-name-directory auto-save-list-file-prefix) - nil - (concat "\\`" - (regexp-quote (file-name-nondirectory - auto-save-list-file-prefix))) - t) - (insert "\n\nIf an Emacs session crashed recently, " - "type M-x recover-session RET\nto recover" - " the files you were editing.")) + ;; The rest of the startup screen is the same on all + ;; kinds of terminals. + + ;; Give information on recovering, if there was a crash. + (and auto-save-list-file-prefix + ;; Don't signal an error if the + ;; directory for auto-save-list files + ;; does not yet exist. + (file-directory-p (file-name-directory + auto-save-list-file-prefix)) + (directory-files + (file-name-directory auto-save-list-file-prefix) + nil + (concat "\\`" + (regexp-quote (file-name-nondirectory + auto-save-list-file-prefix))) + t) + (insert "\n\nIf an Emacs session crashed recently, " + "type M-x recover-session RET\nto recover" + " the files you were editing.")) - ;; Display the input that we set up in the buffer. - (set-buffer-modified-p nil) - (goto-char (point-min)) - (if (or (window-minibuffer-p) - (window-dedicated-p (selected-window))) - ;; There's no point is using pop-to-buffer since creating - ;; a new frame will generate enough events that the - ;; subsequent `sit-for' will immediately return anyway. - nil ;; (pop-to-buffer (current-buffer)) - (save-window-excursion - (switch-to-buffer (current-buffer)) - (sit-for 120)))) - ;; Unwind ... ensure splash buffer is killed - (kill-buffer "GNU Emacs")))) + ;; Display the input that we set up in the buffer. + (set-buffer-modified-p nil) + (goto-char (point-min)) + (if (or (window-minibuffer-p) + (window-dedicated-p (selected-window))) + ;; If hide-on-input is nil, creating a new frame will + ;; generate enough events that the subsequent `sit-for' + ;; will immediately return anyway. + (pop-to-buffer (current-buffer)) + (if hide-on-input + (save-window-excursion + (switch-to-buffer (current-buffer)) + (sit-for 120)) + (switch-to-buffer (current-buffer))))) + ;; Unwind ... ensure splash buffer is killed + (if hide-on-input + (kill-buffer "GNU Emacs"))))) (defun startup-echo-area-message () @@@ -1574,60 -1604,59 +1607,60 @@@ (defun display-startup-echo-area-message () (let ((resize-mini-windows t)) - (message "%s" (startup-echo-area-message)))) + (or noninteractive ;(input-pending-p) init-file-had-error + ;; t if the init file says to inhibit the echo area startup message. + (and inhibit-startup-echo-area-message + user-init-file + (or (and (get 'inhibit-startup-echo-area-message 'saved-value) + (equal inhibit-startup-echo-area-message + (if (equal init-file-user "") + (user-login-name) + init-file-user))) + ;; Wasn't set with custom; see if .emacs has a setq. + (let ((buffer (get-buffer-create " *temp*"))) + (prog1 + (condition-case nil + (save-excursion + (set-buffer buffer) + (insert-file-contents user-init-file) + (re-search-forward + (concat + "([ \t\n]*setq[ \t\n]+" + "inhibit-startup-echo-area-message[ \t\n]+" + (regexp-quote + (prin1-to-string + (if (equal init-file-user "") + (user-login-name) + init-file-user))) + "[ \t\n]*)") + nil t)) + (error nil)) + (kill-buffer buffer))))) + ;; display-splash-screen at the end of command-line-1 calls + ;; use-fancy-splash-screens-p. This can cause image.el to be + ;; loaded, putting "Loading image... done" in the echo area. + ;; This hides startup-echo-area-message. So + ;; use-fancy-splash-screens-p is called here simply to get the + ;; loading of image.el (if needed) out of the way before + ;; display-startup-echo-area-message runs. + (progn + (use-fancy-splash-screens-p) + (message "%s" (startup-echo-area-message)))))) - (defun display-splash-screen () + (defun display-splash-screen (&optional hide-on-input) "Display splash screen according to display. Fancy splash screens are used on graphic displays, normal otherwise." (interactive) - (if (use-fancy-splash-screens-p) - (fancy-splash-screens hide-on-input) - (normal-splash-screen hide-on-input))) - + ;; Prevent recursive calls from server-process-filter. + (if (not (get-buffer "GNU Emacs")) + (if (use-fancy-splash-screens-p) - (fancy-splash-screens) - (normal-splash-screen)))) ++ (fancy-splash-screens hide-on-input) ++ (normal-splash-screen hide-on-input)))) (defun command-line-1 (command-line-args-left) - (or noninteractive (input-pending-p) init-file-had-error - ;; t if the init file says to inhibit the echo area startup message. - (and inhibit-startup-echo-area-message - user-init-file - (or (and (get 'inhibit-startup-echo-area-message 'saved-value) - (equal inhibit-startup-echo-area-message - (if (equal init-file-user "") - (user-login-name) - init-file-user))) - ;; Wasn't set with custom; see if .emacs has a setq. - (let ((buffer (get-buffer-create " *temp*"))) - (prog1 - (condition-case nil - (save-excursion - (set-buffer buffer) - (insert-file-contents user-init-file) - (re-search-forward - (concat - "([ \t\n]*setq[ \t\n]+" - "inhibit-startup-echo-area-message[ \t\n]+" - (regexp-quote - (prin1-to-string - (if (equal init-file-user "") - (user-login-name) - init-file-user))) - "[ \t\n]*)") - nil t)) - (error nil)) - (kill-buffer buffer))))) - ;; display-splash-screen at the end of command-line-1 calls - ;; use-fancy-splash-screens-p. This can cause image.el to be - ;; loaded, putting "Loading image... done" in the echo area. - ;; This hides startup-echo-area-message. So - ;; use-fancy-splash-screens-p is called here simply to get the - ;; loading of image.el (if needed) out of the way before - ;; display-startup-echo-area-message runs. - (progn - (use-fancy-splash-screens-p) - (display-startup-echo-area-message))) + (display-startup-echo-area-message) ;; Delay 2 seconds after an init file error message ;; was displayed, so user can read it. diff --cc lisp/term/x-win.el index 9730aca9b9d,0fc76382130..fe774a4125f --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@@ -2384,154 -2375,155 +2384,155 @@@ order until succeed." (or clip-text primary-text cut-text) )) - -;; Do the actual X Windows setup here; the above code just defines -;; functions and variables that we use now. - -(setq command-line-args (x-handle-args command-line-args)) - -;; Make sure we have a valid resource name. -(or (stringp x-resource-name) - (let (i) - (setq x-resource-name (invocation-name)) - - ;; Change any . or * characters in x-resource-name to hyphens, - ;; so as not to choke when we use it in X resource queries. - (while (setq i (string-match "[.*]" x-resource-name)) - (aset x-resource-name i ?-)))) - -(x-open-connection (or x-display-name - (setq x-display-name (getenv "DISPLAY"))) - x-command-line-resources - ;; Exit Emacs with fatal error if this fails. - t) - -(setq frame-creation-function 'x-create-frame-with-faces) - -(setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100) - x-cut-buffer-max)) - -;; Setup the default fontset. -(setup-default-fontset) - -;; Create the standard fontset. -(create-fontset-from-fontset-spec standard-fontset-spec t) - -;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...). -(create-fontset-from-x-resource) - -;; Try to create a fontset from a font specification which comes -;; from initial-frame-alist, default-frame-alist, or X resource. -;; A font specification in command line argument (i.e. -fn XXXX) -;; should be already in default-frame-alist as a `font' -;; parameter. However, any font specifications in site-start -;; library, user's init file (.emacs), and default.el are not -;; yet handled here. - -(let ((font (or (cdr (assq 'font initial-frame-alist)) - (cdr (assq 'font default-frame-alist)) - (x-get-resource "font" "Font"))) - xlfd-fields resolved-name) - (if (and font - (not (query-fontset font)) - (setq resolved-name (x-resolve-font-name font)) - (setq xlfd-fields (x-decompose-font-name font))) - (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum)) - (new-fontset font (x-complement-fontset-spec xlfd-fields nil)) - ;; Create a fontset from FONT. The fontset name is - ;; generated from FONT. - (create-fontset-from-ascii-font font resolved-name "startup")))) - -;; Apply a geometry resource to the initial frame. Put it at the end -;; of the alist, so that anything specified on the command line takes -;; precedence. -(let* ((res-geometry (x-get-resource "geometry" "Geometry")) - parsed) - (if res-geometry - (progn - (setq parsed (x-parse-geometry res-geometry)) - ;; If the resource specifies a position, - ;; call the position and size "user-specified". - (if (or (assq 'top parsed) (assq 'left parsed)) - (setq parsed (cons '(user-position . t) - (cons '(user-size . t) parsed)))) - ;; All geometry parms apply to the initial frame. - (setq initial-frame-alist (append initial-frame-alist parsed)) - ;; The size parms apply to all frames. - (if (assq 'height parsed) - (setq default-frame-alist - (cons (cons 'height (cdr (assq 'height parsed))) - default-frame-alist))) - (if (assq 'width parsed) - (setq default-frame-alist - (cons (cons 'width (cdr (assq 'width parsed))) - default-frame-alist)))))) - -;; Check the reverseVideo resource. -(let ((case-fold-search t)) - (let ((rv (x-get-resource "reverseVideo" "ReverseVideo"))) - (if (and rv - (string-match "^\\(true\\|yes\\|on\\)$" rv)) - (setq default-frame-alist - (cons '(reverse . t) default-frame-alist))))) +(defun x-clipboard-yank () + "Insert the clipboard contents, or the last stretch of killed text." - (interactive) ++ (interactive "*") + (let ((clipboard-text (x-selection-value 'CLIPBOARD)) + (x-select-enable-clipboard t)) + (if (and clipboard-text (> (length clipboard-text) 0)) + (kill-new clipboard-text)) + (yank))) -;; Set x-selection-timeout, measured in milliseconds. -(let ((res-selection-timeout - (x-get-resource "selectionTimeout" "SelectionTimeout"))) - (setq x-selection-timeout 20000) - (if res-selection-timeout - (setq x-selection-timeout (string-to-number res-selection-timeout)))) + +;;; Window system initialization. (defun x-win-suspend-error () (error "Suspending an Emacs running under X makes no sense")) -(add-hook 'suspend-hook 'x-win-suspend-error) -;; Arrange for the kill and yank functions to set and check the clipboard. -(setq interprogram-cut-function 'x-select-text) -(setq interprogram-paste-function 'x-cut-buffer-or-selection-value) +(defvar x-initialized nil + "Non-nil if the X window system has been initialized.") + +(defun x-initialize-window-system () + "Initialize Emacs for X frames and open the first connection to an X server." + ;; Make sure we have a valid resource name. + (or (stringp x-resource-name) + (let (i) + (setq x-resource-name (invocation-name)) + + ;; Change any . or * characters in x-resource-name to hyphens, + ;; so as not to choke when we use it in X resource queries. + (while (setq i (string-match "[.*]" x-resource-name)) + (aset x-resource-name i ?-)))) + + (x-open-connection (or x-display-name + (setq x-display-name (or (getenv "DISPLAY" (terminal-id)) + (getenv "DISPLAY")))) + x-command-line-resources + ;; Exit Emacs with fatal error if this fails and we + ;; are the initial display. + (eq initial-window-system 'x)) + + (setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100) + x-cut-buffer-max)) + + ;; Setup the default fontset. + (setup-default-fontset) + + ;; Create the standard fontset. + (create-fontset-from-fontset-spec standard-fontset-spec t) + + ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...). + (create-fontset-from-x-resource) + + ;; Try to create a fontset from a font specification which comes + ;; from initial-frame-alist, default-frame-alist, or X resource. + ;; A font specification in command line argument (i.e. -fn XXXX) + ;; should be already in default-frame-alist as a `font' + ;; parameter. However, any font specifications in site-start + ;; library, user's init file (.emacs), and default.el are not + ;; yet handled here. + + (let ((font (or (cdr (assq 'font initial-frame-alist)) + (cdr (assq 'font default-frame-alist)) + (x-get-resource "font" "Font"))) + xlfd-fields resolved-name) + (if (and font + (not (query-fontset font)) + (setq resolved-name (x-resolve-font-name font)) + (setq xlfd-fields (x-decompose-font-name font))) + (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum)) + (new-fontset font (x-complement-fontset-spec xlfd-fields nil)) + ;; Create a fontset from FONT. The fontset name is + ;; generated from FONT. + (create-fontset-from-ascii-font font resolved-name "startup")))) + + ;; Apply a geometry resource to the initial frame. Put it at the end + ;; of the alist, so that anything specified on the command line takes + ;; precedence. + (let* ((res-geometry (x-get-resource "geometry" "Geometry")) + parsed) + (if res-geometry + (progn + (setq parsed (x-parse-geometry res-geometry)) + ;; If the resource specifies a position, + ;; call the position and size "user-specified". + (if (or (assq 'top parsed) (assq 'left parsed)) + (setq parsed (cons '(user-position . t) + (cons '(user-size . t) parsed)))) + ;; All geometry parms apply to the initial frame. + (setq initial-frame-alist (append initial-frame-alist parsed)) + ;; The size parms apply to all frames. + (if (assq 'height parsed) + (setq default-frame-alist + (cons (cons 'height (cdr (assq 'height parsed))) + default-frame-alist))) + (if (assq 'width parsed) + (setq default-frame-alist + (cons (cons 'width (cdr (assq 'width parsed))) + default-frame-alist)))))) + + ;; Check the reverseVideo resource. + (let ((case-fold-search t)) + (let ((rv (x-get-resource "reverseVideo" "ReverseVideo"))) + (if (and rv + (string-match "^\\(true\\|yes\\|on\\)$" rv)) + (setq default-frame-alist + (cons '(reverse . t) default-frame-alist))))) -;; Turn off window-splitting optimization; X is usually fast enough -;; that this is only annoying. -(setq split-window-keep-point t) + ;; Set x-selection-timeout, measured in milliseconds. + (let ((res-selection-timeout + (x-get-resource "selectionTimeout" "SelectionTimeout"))) + (setq x-selection-timeout 20000) + (if res-selection-timeout + (setq x-selection-timeout (string-to-number res-selection-timeout)))) -;; Don't show the frame name; that's redundant with X. -(setq-default mode-line-frame-identification " ") + ;; Don't let Emacs suspend under X. + (add-hook 'suspend-hook 'x-win-suspend-error) -;; Motif direct handling of f10 wasn't working right, -;; So temporarily we've turned it off in lwlib-Xm.c -;; and turned the Emacs f10 back on. -;; ;; Motif normally handles f10 itself, so don't try to handle it a second time. -;; (if (featurep 'motif) -;; (global-set-key [f10] 'ignore)) + ;; Turn off window-splitting optimization; X is usually fast enough + ;; that this is only annoying. + (setq split-window-keep-point t) -;; Turn on support for mouse wheels. -(mouse-wheel-mode 1) + ;; Motif direct handling of f10 wasn't working right, + ;; So temporarily we've turned it off in lwlib-Xm.c + ;; and turned the Emacs f10 back on. + ;; ;; Motif normally handles f10 itself, so don't try to handle it a second time. + ;; (if (featurep 'motif) + ;; (global-set-key [f10] 'ignore)) + ;; Turn on support for mouse wheels. + (mouse-wheel-mode 1) -;; Enable CLIPBOARD copy/paste through menu bar commands. -(menu-bar-enable-clipboard) + ;; Enable CLIPBOARD copy/paste through menu bar commands. + (menu-bar-enable-clipboard) -;; Override Paste so it looks at CLIPBOARD first. -(defun x-clipboard-yank () - "Insert the clipboard contents, or the last stretch of killed text." - (interactive "*") - (let ((clipboard-text (x-selection-value 'CLIPBOARD)) - (x-select-enable-clipboard t)) - (if (and clipboard-text (> (length clipboard-text) 0)) - (kill-new clipboard-text)) - (yank))) + ;; Override Paste so it looks at CLIPBOARD first. + (define-key menu-bar-edit-menu [paste] - (cons "Paste" (cons "Paste text from clipboard or kill ring" - 'x-clipboard-yank))) ++ '(menu-item "Paste" x-clipboard-yank ++ :enable (not buffer-read-only) ++ :help "Paste (yank) text most recently cut/copied")) -(define-key menu-bar-edit-menu [paste] - '(menu-item "Paste" x-clipboard-yank - :enable (not buffer-read-only) - :help "Paste (yank) text most recently cut/copied")) + (setq x-initialized t)) + +(add-to-list 'handle-args-function-alist '(x . x-handle-args)) +(add-to-list 'frame-creation-function-alist '(x . x-create-frame-with-faces)) +(add-to-list 'window-system-initialization-alist '(x . x-initialize-window-system)) + +(provide 'x-win) ;; Initiate drag and drop (add-hook 'after-make-frame-functions 'x-dnd-init-frame) - (global-set-key [drag-n-drop] 'x-dnd-handle-drag-n-drop-event) + (define-key special-event-map [drag-n-drop] 'x-dnd-handle-drag-n-drop-event) -;; Let F10 do menu bar navigation. -(and (fboundp 'menu-bar-open) - (global-set-key [f10] 'menu-bar-open)) - ;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78 ;;; x-win.el ends here diff --cc lisp/term/xterm.el index 9c4b8b1190b,9ea51a2f774..2e498a8de86 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@@ -27,181 -27,6 +27,210 @@@ ;;; Code: +(defvar xterm-function-map (make-sparse-keymap) + "Function key map overrides for xterm.") + +;; xterm from X.org 6.8.2 uses these key definitions. +(define-key xterm-function-map "\eOP" [f1]) +(define-key xterm-function-map "\eOQ" [f2]) +(define-key xterm-function-map "\eOR" [f3]) +(define-key xterm-function-map "\eOS" [f4]) +(define-key xterm-function-map "\e[15~" [f5]) +(define-key xterm-function-map "\e[17~" [f6]) +(define-key xterm-function-map "\e[18~" [f7]) +(define-key xterm-function-map "\e[19~" [f8]) +(define-key xterm-function-map "\e[20~" [f9]) +(define-key xterm-function-map "\e[21~" [f10]) +(define-key xterm-function-map "\e[23~" [f11]) +(define-key xterm-function-map "\e[24~" [f12]) + +(define-key xterm-function-map "\eO2P" [S-f1]) +(define-key xterm-function-map "\eO2Q" [S-f2]) +(define-key xterm-function-map "\eO2R" [S-f3]) +(define-key xterm-function-map "\eO2S" [S-f4]) +(define-key xterm-function-map "\e[15;2~" [S-f5]) +(define-key xterm-function-map "\e[17;2~" [S-f6]) +(define-key xterm-function-map "\e[18;2~" [S-f7]) +(define-key xterm-function-map "\e[19;2~" [S-f8]) +(define-key xterm-function-map "\e[20;2~" [S-f9]) +(define-key xterm-function-map "\e[21;2~" [S-f10]) +(define-key xterm-function-map "\e[23;2~" [S-f11]) +(define-key xterm-function-map "\e[24;2~" [S-f12]) + +(define-key xterm-function-map "\eO5P" [C-f1]) +(define-key xterm-function-map "\eO5Q" [C-f2]) +(define-key xterm-function-map "\eO5R" [C-f3]) +(define-key xterm-function-map "\eO5S" [C-f4]) +(define-key xterm-function-map "\e[15;5~" [C-f5]) +(define-key xterm-function-map "\e[17;5~" [C-f6]) +(define-key xterm-function-map "\e[18;5~" [C-f7]) +(define-key xterm-function-map "\e[19;5~" [C-f8]) +(define-key xterm-function-map "\e[20;5~" [C-f9]) +(define-key xterm-function-map "\e[21;5~" [C-f10]) +(define-key xterm-function-map "\e[23;5~" [C-f11]) +(define-key xterm-function-map "\e[24;5~" [C-f12]) + +(define-key xterm-function-map "\eO6P" [C-S-f1]) +(define-key xterm-function-map "\eO6Q" [C-S-f2]) +(define-key xterm-function-map "\eO6R" [C-S-f3]) +(define-key xterm-function-map "\eO6S" [C-S-f4]) +(define-key xterm-function-map "\e[15;6~" [C-S-f5]) +(define-key xterm-function-map "\e[17;6~" [C-S-f6]) +(define-key xterm-function-map "\e[18;6~" [C-S-f7]) +(define-key xterm-function-map "\e[19;6~" [C-S-f8]) +(define-key xterm-function-map "\e[20;6~" [C-S-f9]) +(define-key xterm-function-map "\e[21;6~" [C-S-f10]) +(define-key xterm-function-map "\e[23;6~" [C-S-f11]) +(define-key xterm-function-map "\e[24;6~" [C-S-f12]) + +(define-key xterm-function-map "\eO3P" [A-f1]) +(define-key xterm-function-map "\eO3Q" [A-f2]) +(define-key xterm-function-map "\eO3R" [A-f3]) +(define-key xterm-function-map "\eO3S" [A-f4]) +(define-key xterm-function-map "\e[15;3~" [A-f5]) +(define-key xterm-function-map "\e[17;3~" [A-f6]) +(define-key xterm-function-map "\e[18;3~" [A-f7]) +(define-key xterm-function-map "\e[19;3~" [A-f8]) +(define-key xterm-function-map "\e[20;3~" [A-f9]) +(define-key xterm-function-map "\e[21;3~" [A-f10]) +(define-key xterm-function-map "\e[23;3~" [A-f11]) +(define-key xterm-function-map "\e[24;3~" [A-f12]) + +(define-key xterm-function-map "\eOA" [up]) +(define-key xterm-function-map "\eOB" [down]) +(define-key xterm-function-map "\eOC" [right]) +(define-key xterm-function-map "\eOD" [left]) +(define-key xterm-function-map "\eOF" [end]) +(define-key xterm-function-map "\eOH" [home]) + +(define-key xterm-function-map "\e[1;2A" [S-up]) +(define-key xterm-function-map "\e[1;2B" [S-down]) +(define-key xterm-function-map "\e[1;2C" [S-right]) +(define-key xterm-function-map "\e[1;2D" [S-left]) +(define-key xterm-function-map "\e[1;2F" [S-end]) +(define-key xterm-function-map "\e[1;2H" [S-home]) + +(define-key xterm-function-map "\e[1;5A" [C-up]) +(define-key xterm-function-map "\e[1;5B" [C-down]) +(define-key xterm-function-map "\e[1;5C" [C-right]) +(define-key xterm-function-map "\e[1;5D" [C-left]) +(define-key xterm-function-map "\e[1;5F" [C-end]) +(define-key xterm-function-map "\e[1;5H" [C-home]) + +(define-key xterm-function-map "\e[1;6A" [C-S-up]) +(define-key xterm-function-map "\e[1;6B" [C-S-down]) +(define-key xterm-function-map "\e[1;6C" [C-S-right]) +(define-key xterm-function-map "\e[1;6D" [C-S-left]) +(define-key xterm-function-map "\e[1;6F" [C-S-end]) +(define-key xterm-function-map "\e[1;6H" [C-S-home]) + +(define-key xterm-function-map "\e[1;3A" [A-up]) +(define-key xterm-function-map "\e[1;3B" [A-down]) +(define-key xterm-function-map "\e[1;3C" [A-right]) +(define-key xterm-function-map "\e[1;3D" [A-left]) +(define-key xterm-function-map "\e[1;3F" [A-end]) +(define-key xterm-function-map "\e[1;3H" [A-home]) + +(define-key xterm-function-map "\e[2~" [insert]) +(define-key xterm-function-map "\e[3~" [delete]) +(define-key xterm-function-map "\e[5~" [prior]) +(define-key xterm-function-map "\e[6~" [next]) + +(define-key xterm-function-map "\e[2;2~" [S-insert]) +(define-key xterm-function-map "\e[3;2~" [S-delete]) +(define-key xterm-function-map "\e[5;2~" [S-prior]) +(define-key xterm-function-map "\e[6;2~" [S-next]) + +(define-key xterm-function-map "\e[2;5~" [C-insert]) +(define-key xterm-function-map "\e[3;5~" [C-delete]) +(define-key xterm-function-map "\e[5;5~" [C-prior]) +(define-key xterm-function-map "\e[6;5~" [C-next]) + +(define-key xterm-function-map "\e[2;6~" [C-S-insert]) +(define-key xterm-function-map "\e[3;6~" [C-S-delete]) +(define-key xterm-function-map "\e[5;6~" [C-S-prior]) +(define-key xterm-function-map "\e[6;6~" [C-S-next]) + +(define-key xterm-function-map "\e[2;3~" [A-insert]) +(define-key xterm-function-map "\e[3;3~" [A-delete]) +(define-key xterm-function-map "\e[5;3~" [A-prior]) +(define-key xterm-function-map "\e[6;3~" [A-next]) + +(define-key xterm-function-map "\e[4~" [select]) +(define-key xterm-function-map "\e[29~" [print]) + - ;; These keys are available in xterm starting from version 214 ++;; These keys are available in xterm starting from version 216 +;; if the modifyOtherKeys resource is set to 1. ++ ++(define-key xterm-function-map "\e[27;5;39~" [?\C-\']) ++(define-key xterm-function-map "\e[27;5;45~" [?\C--]) ++ ++(define-key xterm-function-map "\e[27;5;48~" [?\C-0]) ++(define-key xterm-function-map "\e[27;5;49~" [?\C-1]) ++;; Not all C-DIGIT keys have a distinct binding. ++(define-key xterm-function-map "\e[27;5;57~" [?\C-9]) ++ ++(define-key xterm-function-map "\e[27;5;59~" [?\C-\;]) ++(define-key xterm-function-map "\e[27;5;61~" [?\C-=]) ++ ++ ++(define-key xterm-function-map "\e[27;6;33~" [?\C-!]) ++(define-key xterm-function-map "\e[27;6;34~" [?\C-\"]) ++(define-key xterm-function-map "\e[27;6;35~" [?\C-#]) ++(define-key xterm-function-map "\e[27;6;36~" [?\C-$]) ++(define-key xterm-function-map "\e[27;6;37~" [?\C-%]) ++(define-key xterm-function-map "\e[27;6;38~" [(C-&)]) ++(define-key xterm-function-map "\e[27;6;40~" [?\C-(]) ++(define-key xterm-function-map "\e[27;6;41~" [?\C-)]) ++(define-key xterm-function-map "\e[27;6;42~" [?\C-*]) ++(define-key xterm-function-map "\e[27;6;43~" [?\C-+]) ++ ++(define-key xterm-function-map "\e[27;6;58~" [?\C-:]) ++(define-key xterm-function-map "\e[27;6;60~" [?\C-<]) ++(define-key xterm-function-map "\e[27;6;62~" [?\C->]) ++(define-key xterm-function-map "\e[27;6;63~" [(C-\?)]) ++ +(define-key xterm-function-map "\e[27;5;9~" [C-tab]) +(define-key xterm-function-map "\e[27;5;13~" [C-return]) +(define-key xterm-function-map "\e[27;5;44~" [?\C-,]) +(define-key xterm-function-map "\e[27;5;46~" [?\C-.]) +(define-key xterm-function-map "\e[27;5;47~" [?\C-/]) +(define-key xterm-function-map "\e[27;5;92~" [?\C-\\]) + +(define-key xterm-function-map "\e[27;2;9~" [S-tab]) +(define-key xterm-function-map "\e[27;2;13~" [S-return]) + +(define-key xterm-function-map "\e[27;6;9~" [(C-S-tab)]) + +(define-key xterm-function-map "\e[27;13;46~" [?\C-\M-.]) + + +;; Other versions of xterm might emit these. +(define-key xterm-function-map "\e[A" [up]) +(define-key xterm-function-map "\e[B" [down]) +(define-key xterm-function-map "\e[C" [right]) +(define-key xterm-function-map "\e[D" [left]) +(define-key xterm-function-map "\e[1~" [home]) + +(define-key xterm-function-map "\e[1;2A" [S-up]) +(define-key xterm-function-map "\e[1;2B" [S-down]) +(define-key xterm-function-map "\e[1;2C" [S-right]) +(define-key xterm-function-map "\e[1;2D" [S-left]) +(define-key xterm-function-map "\e[1;2F" [S-end]) +(define-key xterm-function-map "\e[1;2H" [S-home]) + +(define-key xterm-function-map "\e[1;5A" [C-up]) +(define-key xterm-function-map "\e[1;5B" [C-down]) +(define-key xterm-function-map "\e[1;5C" [C-right]) +(define-key xterm-function-map "\e[1;5D" [C-left]) +(define-key xterm-function-map "\e[1;5F" [C-end]) +(define-key xterm-function-map "\e[1;5H" [C-home]) + +(define-key xterm-function-map "\e[11~" [f1]) +(define-key xterm-function-map "\e[12~" [f2]) +(define-key xterm-function-map "\e[13~" [f3]) +(define-key xterm-function-map "\e[14~" [f4]) + (defun terminal-init-xterm () "Terminal initialization function for xterm." ;; rxvt terminals sometimes set the TERM variable to "xterm", but diff --cc lisp/x-dnd.el index 04ef4f0b6dc,c229b0868e4..717fcf207da --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@@ -121,9 -121,14 +121,15 @@@ any protocol specific data." (defun x-dnd-init-frame (&optional frame) "Setup drag and drop for FRAME (i.e. create appropriate properties)." - (x-register-dnd-atom "DndProtocol" frame) - (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame) - (x-register-dnd-atom "XdndEnter" frame) - (x-register-dnd-atom "XdndPosition" frame) - (x-register-dnd-atom "XdndLeave" frame) - (x-register-dnd-atom "XdndDrop" frame) - (x-dnd-init-xdnd-for-frame frame) - (x-dnd-init-motif-for-frame frame)) + (when (eq 'x (window-system frame)) ++ (x-register-dnd-atom "DndProtocol" frame) ++ (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame) ++ (x-register-dnd-atom "XdndEnter" frame) ++ (x-register-dnd-atom "XdndPosition" frame) ++ (x-register-dnd-atom "XdndLeave" frame) ++ (x-register-dnd-atom "XdndDrop" frame) + (x-dnd-init-xdnd-for-frame frame) + (x-dnd-init-motif-for-frame frame))) (defun x-dnd-get-state-cons-for-frame (frame-or-window) "Return the entry in x-dnd-current-state for a frame or window." diff --cc src/keyboard.c index f1bfea0f18c,662aacf91a6..681018bbab9 --- a/src/keyboard.c +++ b/src/keyboard.c @@@ -2714,9 -2705,9 +2792,10 @@@ read_char (commandflag, nmaps, maps, pr around any call to sit_for or kbd_buffer_get_event; it *must not* be in effect when we call redisplay. */ + jmpcount = SPECPDL_INDEX (); if (_setjmp (local_getcjmp)) { + /* Handle quits while reading the keyboard. */ /* We must have saved the outer value of getcjmp here, so restore it now. */ restore_getcjmp (save_jump); @@@ -8874,14 -8755,6 +8937,13 @@@ read_key_sequence (keybuf, bufsize, pro keybuf[0..mock_input] holds the sequence we should reread. */ replay_sequence: + /* We may switch keyboards between rescans, so we need to + reinitialize fkey and keytran before each replay. */ + fkey.map = fkey.parent = current_kboard->Vlocal_function_key_map; + keytran.map = keytran.parent = current_kboard->Vlocal_key_translation_map; - /* If there is no translation map, turn off scanning. */ - fkey.start = fkey.end = KEYMAPP (fkey.map) ? 0 : bufsize + 1; - keytran.start = keytran.end = KEYMAPP (keytran.map) ? 0 : bufsize + 1; ++ fkey.start = fkey.end = 0; ++ keytran.start = keytran.end = 0; + starting_buffer = current_buffer; first_unbound = bufsize + 1; diff --cc src/puresize.h index 5d39be5a541,5dd374af207..d5a33e3cda5 --- a/src/puresize.h +++ b/src/puresize.h @@@ -43,7 -43,7 +43,7 @@@ Boston, MA 02110-1301, USA. * #endif #ifndef BASE_PURESIZE - #define BASE_PURESIZE (1126000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) -#define BASE_PURESIZE (1120000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) ++#define BASE_PURESIZE (1130000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) #endif /* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */