debug-paths)
(startup-setup-paths-warning))
- (if (and (not inhibit-autoloads)
- lisp-directory)
- (load (expand-file-name (file-name-sans-extension autoload-file-name)
- lisp-directory) nil t))
+ (when (and (not inhibit-autoloads)
+ lisp-directory)
+ (load (expand-file-name (file-name-sans-extension autoload-file-name)
+ lisp-directory) nil t)
+ (if (featurep 'utf-2000)
+ (load (expand-file-name
+ (file-name-sans-extension autoload-file-name)
+ (expand-file-name "utf-2000" lisp-directory))
+ nil t)))
(if (not inhibit-autoloads)
(progn
(packages-load-package-auto-autoloads late-package-load-path)
(packages-load-package-auto-autoloads last-package-load-path)))
- (unwind-protect
- (command-line)
+ (let (error-data)
+ (condition-case data
+ (command-line)
+ ;; catch non-error signals, especially quit
+ (t (setq error-data data)))
;; Do this again, in case the init file defined more abbreviations.
(setq default-directory (abbreviate-file-name default-directory))
;; Specify the file for recording all the auto save files of
;; (font-menu-add-default))
(when window-setup-hook
(run-hooks 'window-setup-hook))
- (setq window-setup-hook nil))
+ (setq window-setup-hook nil)
+ (if error-data
+ ;; re-signal, and don't allow continuation as that will probably
+ ;; wipe out the user's .emacs if she hasn't migrated yet!
+ (signal-error (car error-data) (cdr error-data))))
(if load-user-init-file-p
(maybe-migrate-user-init-file))
- ;;####FSFmacs junk
- ;; (or menubar-bindings-done
- ;; (precompute-menubar-bindings))
+ ;; FSF calls precompute-menubar-bindings. We don't mix menubars
+ ;; and keymaps.
))
-;;####FSFmacs junk
-;;; Precompute the keyboard equivalents in the menu bar items.
-;;(defun precompute-menubar-bindings ()
-;; (if (eq window-system 'x)
-;; (let ((submap (lookup-key global-map [menu-bar])))
-;; (while submap
-;; (and (consp (car submap))
-;; (symbolp (car (car submap)))
-;; (stringp (car-safe (cdr (car submap))))
-;; (keymapp (cdr (cdr (car submap))))
-;; (x-popup-menu nil (cdr (cdr (car submap)))))
-;; (setq submap (cdr submap))))))
-
(defun command-line-early (args)
;; This processes those switches which need to be processed before
;; starting up the window system.
(push (pop args) new-args)))
(t (push arg new-args))))
+ ;; obsolete, initialize for backward compatibility
(setq init-file-user (and load-user-init-file-p ""))
(nreverse new-args)))
;; handled here instead of down in C.
(setq command-line-args-left (command-line-early command-line-args-left))
+ (when (eq system-type 'windows-nt)
+ (init-mswindows-at-startup))
+
;; Setup the toolbar icon directory
(when (featurep 'toolbar)
(init-toolbar-location))
(yes-or-no-p-minibuf (concat "Migrate init file to "
user-init-directory
"? "))))
- (progn
- (migrate-user-init-file)
- (maybe-create-compatibility-dot-emacs))
- (customize-save-variable 'load-home-init-file t))))
-(defun maybe-create-compatibility-dot-emacs ()
- "Ask user if she wants to create a .emacs compatibility file."
- (if (with-output-to-temp-buffer (help-buffer-name nil)
- (progn
- (princ "The initialization code has now been migrated to the ")
- (princ user-init-directory)
- (princ "directory.
+ (let ((backup (migrate-user-init-file)))
+ (with-output-to-temp-buffer (help-buffer-name nil)
+ (progn
+ (princ "The initialization code has now been migrated to the ")
+ (princ user-init-directory)
+ (princ "directory.
For backwards compatibility with, for example, older versions of XEmacs,
XEmacs can create a special old-style .emacs file in your home
directory which will load the relocated initialization code.")
- (show-temp-buffer-in-current-frame standard-output)
- (yes-or-no-p-minibuf "Create compatibility .emacs? ")))
+ (if backup
+ (progn
+ (princ "\nMoreover, a backup of your old .emacs file was created as\n")
+ (princ backup)
+ (princ ".\n")))
+ (show-temp-buffer-in-current-frame standard-output)
+ (maybe-create-compatibility-dot-emacs))))
+ (customize-save-variable 'load-home-init-file t))))
+
+(defun maybe-create-compatibility-dot-emacs ()
+ "Ask user if she wants to create a .emacs compatibility file."
+ (if (yes-or-no-p-minibuf "Create compatibility .emacs? ")
(create-compatibility-dot-emacs)))
(defun migrate-user-init-file ()
- "Migrate the init file from the home directory."
+ "Migrate the init file from the home directory.
+Return the name of backup file, if one was created."
(interactive)
(if (not (file-exists-p user-init-directory))
(progn
(message "Creating %s directory..." user-init-directory)
(make-directory user-init-directory)))
(message "Migrating custom file...")
- (customize-set-value 'load-home-init-file nil)
- (custom-migrate-custom-file (make-custom-file-name user-init-file
- 'force-new))
- (message "Moving init file...")
- (let ((new-user-init-file (expand-file-name user-init-file-base
- user-init-directory)))
- (rename-file user-init-file new-user-init-file)
- (setq user-init-file new-user-init-file))
- (message "Migration done."))
+ (let* ((backup (concat user-init-file ".backup"))
+ (backup-p
+ (and (not (file-exists-p backup))
+ (progn
+ (copy-file user-init-file backup)
+ t))))
+ (customize-set-value 'load-home-init-file nil)
+ (custom-migrate-custom-file (make-custom-file-name user-init-file
+ 'force-new))
+ (message "Moving init file...")
+ (let ((new-user-init-file (expand-file-name user-init-file-base
+ user-init-directory)))
+ (rename-file user-init-file new-user-init-file)
+ (setq user-init-file new-user-init-file))
+ (message "Migration done.")
+ (and backup-p backup)))
(defun create-compatibility-dot-emacs ()
"Create .emacs compatibility file for migrated setup."
(find-user-init-file user-init-directory)))
(if (not custom-file)
(setq custom-file (make-custom-file-name user-init-file)))
+ ;; #### should test load-user-init-file-p here, not in load-init-file
+ ;; see comment there
(if (and user-init-file
(file-readable-p user-init-file))
(load user-init-file t t t))
(debug-on-error-initial
(if (eq init-file-debug t) 'startup init-file-debug)))
(let ((debug-on-error debug-on-error-initial))
+ ;; #### I believe this test is incorrect, it leads to custom-file
+ ;; (at least) being undefined
(if (and load-user-init-file-p init-file-debug)
(progn
;; Do this without a condition-case if the user wants to debug.
(load-user-init-file))
(condition-case error
(progn
+ ;; #### probably incorrect, see comment above
(if load-user-init-file-p
(load-user-init-file))
(setq init-file-had-error nil))
Copyright (C) 1990-1994 Lucid, Inc.
Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved.
Copyright (C) 1994-1996 Board of Trustees, University of Illinois
-Copyright (C) 1995-2001 Ben Wing\n"))
+Copyright (C) 1995-2001 Ben Wing
+Copyright (C) 1996-2002 MORIOKA Tomohiko
+"))
((face (blue bold underline) "\nInformation, on-line help:\n\n")
"XEmacs comes with plenty of documentation...\n\n"
((key about-xemacs) ": see who's developing XEmacs\n"))
((face (blue bold underline) "\nUseful stuff:\n\n")
- "Things that you should know rather quickly...\n\n"
+ "Things that you should learn rather quickly...\n\n"
((key find-file) ": visit a file\n")
((key save-buffer) ": save changes\n")
((key advertised-undo) ": undo changes\n")
'external-debugging-output)))
(setq mule-lisp-directory '()))
+ (if (featurep 'utf-2000)
+ (progn
+ (setq utf-2000-lisp-directory
+ (paths-find-utf-2000-lisp-directory roots
+ lisp-directory))
+ (if debug-paths
+ (princ (format "utf-2000-lisp-directory:\n%S\n"
+ utf-2000-lisp-directory)
+ 'external-debugging-output)))
+ (setq utf-2000-lisp-directory '()))
+
(setq site-directory (and (null inhibit-site-lisp)
(paths-find-site-lisp-directory roots)))
last-package-load-path
lisp-directory
site-directory
- mule-lisp-directory))
+ mule-lisp-directory
+ utf-2000-lisp-directory))
(setq Info-directory-list
(paths-construct-info-path roots
(if (and (featurep 'mule)
(null mule-lisp-directory))
(push "mule-lisp-directory" warnings))
+ (if (and (featurep 'utf-2000)
+ (null utf-2000-lisp-directory))
+ (push "utf-2000-lisp-directory" warnings))
(if (null exec-directory) (push "exec-directory" warnings))
(if (null data-directory) (push "data-directory" warnings))
(if (null doc-directory) (push "doc-directory" warnings))