From d2fd733eb40fcb20dbed9a1b8ad1798e622e8f0f Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 16 Sep 2009 17:54:13 +0000 Subject: [PATCH] (command-line): Initialize the window-system after processing the command-line. --- lisp/ChangeLog | 3 ++ lisp/startup.el | 78 +++++++++++++++++++++++++------------------------ 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 37e4facd8a3..df2c734a341 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2009-09-16 Stefan Monnier + * startup.el (command-line): Initialize the window-system after + processing the command-line. + * textmodes/page.el (what-page): Make sure we don't inf-loop if page-delimiter matches the empty string. diff --git a/lisp/startup.el b/lisp/startup.el index e7e988d367c..8ce63b3f037 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -727,44 +727,6 @@ opening the first frame (e.g. open a connection to an X server).") (setq eol-mnemonic-dos "(DOS)" eol-mnemonic-mac "(Mac)"))) - ;; Make sure window system's init file was loaded in loadup.el if - ;; using a window system. - (condition-case error - (unless noninteractive - (if (and initial-window-system - (not (featurep - (intern - (concat (symbol-name initial-window-system) "-win"))))) - (error "Unsupported window system `%s'" initial-window-system)) - ;; Process window-system specific command line parameters. - (setq command-line-args - (funcall - (or (cdr (assq initial-window-system handle-args-function-alist)) - (error "Unsupported window system `%s'" initial-window-system)) - command-line-args)) - ;; Initialize the window system. (Open connection, etc.) - (funcall - (or (cdr (assq initial-window-system window-system-initialization-alist)) - (error "Unsupported window system `%s'" initial-window-system)))) - ;; If there was an error, print the error message and exit. - (error - (princ - (if (eq (car error) 'error) - (apply 'concat (cdr error)) - (if (memq 'file-error (get (car error) 'error-conditions)) - (format "%s: %s" - (nth 1 error) - (mapconcat (lambda (obj) (prin1-to-string obj t)) - (cdr (cdr error)) ", ")) - (format "%s: %s" - (get (car error) 'error-message) - (mapconcat (lambda (obj) (prin1-to-string obj t)) - (cdr error) ", ")))) - 'external-debugging-output) - (terpri 'external-debugging-output) - (setq initial-window-system nil) - (kill-emacs))) - (set-locale-environment nil) ;; Convert preloaded file names in load-history to absolute. @@ -869,6 +831,46 @@ opening the first frame (e.g. open a connection to an X server).") (and command-line-args (setcdr command-line-args args))) + ;; Make sure window system's init file was loaded in loadup.el if + ;; using a window system. + ;; Initialize the window-system only after processing the command-line + ;; args so that -Q can influence this initialization. + (condition-case error + (unless noninteractive + (if (and initial-window-system + (not (featurep + (intern + (concat (symbol-name initial-window-system) "-win"))))) + (error "Unsupported window system `%s'" initial-window-system)) + ;; Process window-system specific command line parameters. + (setq command-line-args + (funcall + (or (cdr (assq initial-window-system handle-args-function-alist)) + (error "Unsupported window system `%s'" initial-window-system)) + command-line-args)) + ;; Initialize the window system. (Open connection, etc.) + (funcall + (or (cdr (assq initial-window-system window-system-initialization-alist)) + (error "Unsupported window system `%s'" initial-window-system)))) + ;; If there was an error, print the error message and exit. + (error + (princ + (if (eq (car error) 'error) + (apply 'concat (cdr error)) + (if (memq 'file-error (get (car error) 'error-conditions)) + (format "%s: %s" + (nth 1 error) + (mapconcat (lambda (obj) (prin1-to-string obj t)) + (cdr (cdr error)) ", ")) + (format "%s: %s" + (get (car error) 'error-message) + (mapconcat (lambda (obj) (prin1-to-string obj t)) + (cdr error) ", ")))) + 'external-debugging-output) + (terpri 'external-debugging-output) + (setq initial-window-system nil) + (kill-emacs))) + (run-hooks 'before-init-hook) ;; Under X Window, this creates the X frame and deletes the terminal frame. -- 2.39.2