comparison lisp/startup.el @ 452:3d3049ae1304 r21-2-41

Import from CVS: tag r21-2-41
author cvs
date Mon, 13 Aug 2007 11:40:21 +0200
parents 1ccc32a20af4
children c33ae14dd6d0
comparison
equal deleted inserted replaced
451:8ad70c5cd5d7 452:3d3049ae1304
75 "Functions to call after handling urgent options but before init files. 75 "Functions to call after handling urgent options but before init files.
76 The frame system uses this to open frames to display messages while 76 The frame system uses this to open frames to display messages while
77 XEmacs loads the user's initialization file.") 77 XEmacs loads the user's initialization file.")
78 78
79 (defvar after-init-hook nil 79 (defvar after-init-hook nil
80 "*Functions to call after loading the init file (`.emacs'). 80 "*Functions to call after loading the init file.
81 The call is not protected by a condition-case, so you can set `debug-on-error' 81 The call is not protected by a condition-case, so you can set `debug-on-error'
82 in `.emacs', and put all the actual code on `after-init-hook'.") 82 in the init file, and put all the actual code on `after-init-hook'.")
83 83
84 (defvar term-setup-hook nil 84 (defvar term-setup-hook nil
85 "*Functions to be called after loading terminal-specific Lisp code. 85 "*Functions to be called after loading terminal-specific Lisp code.
86 See `run-hooks'. This variable exists for users to set, so as to 86 See `run-hooks'. This variable exists for users to set, so as to
87 override the definitions made by the terminal-specific file. XEmacs 87 override the definitions made by the terminal-specific file. XEmacs
236 display code: use the current tty. 236 display code: use the current tty.
237 -batch Execute noninteractively (messages go to stderr). 237 -batch Execute noninteractively (messages go to stderr).
238 -debug-init Enter the debugger if an error in the init file occurs. 238 -debug-init Enter the debugger if an error in the init file occurs.
239 -unmapped Do not map the initial frame. 239 -unmapped Do not map the initial frame.
240 -no-site-file Do not load the site-specific init file (site-start.el). 240 -no-site-file Do not load the site-specific init file (site-start.el).
241 -no-init-file Do not load the user-specific init file (~/.emacs). 241 -no-init-file Do not load the user-specific init file.
242 -no-early-packages Do not process early packages. 242 -no-early-packages Do not process early packages.
243 -no-autoloads Do not load global symbol files (auto-autoloads) at 243 -no-autoloads Do not load global symbol files (auto-autoloads) at
244 startup. Also implies `-vanilla'. 244 startup. Also implies `-vanilla'.
245 -vanilla Equivalent to -q -no-site-file -no-early-packages. 245 -vanilla Equivalent to -q -no-site-file -no-early-packages.
246 -q Same as -no-init-file. 246 -q Same as -no-init-file.
247 -user-init-file <file> Use <file> as init file. 247 -user-init-file <file> Use <file> as init file.
248 -user-init-directory <directory> Use <directory> as init directory. 248 -user-init-directory <directory> Use <directory> as init directory.
249 -user <user> Load user's init file instead of your own. 249 -user <user> Load user's init file instead of your own.
250 Equivalent to -user-init-file ~<user>/.emacs
251 -user-init-directory ~<user>/.xemacs/
252 -u <user> Same as -user.\n") 250 -u <user> Same as -user.\n")
253 (let ((l command-switch-alist) 251 (let ((l command-switch-alist)
254 (insert (lambda (&rest x) 252 (insert (lambda (&rest x)
255 (princ " ") 253 (princ " ")
256 (let ((len 2)) 254 (let ((len 2))
435 (packages-load-package-auto-autoloads late-package-load-path) 433 (packages-load-package-auto-autoloads late-package-load-path)
436 (packages-load-package-auto-autoloads last-package-load-path))) 434 (packages-load-package-auto-autoloads last-package-load-path)))
437 435
438 (unwind-protect 436 (unwind-protect
439 (command-line) 437 (command-line)
440 ;; Do this again, in case .emacs defined more abbreviations. 438 ;; Do this again, in case the init file defined more abbreviations.
441 (setq default-directory (abbreviate-file-name default-directory)) 439 (setq default-directory (abbreviate-file-name default-directory))
442 ;; Specify the file for recording all the auto save files of 440 ;; Specify the file for recording all the auto save files of
443 ;; this session. This is used by recover-session. 441 ;; this session. This is used by recover-session.
444 (if auto-save-list-file-prefix 442 (if auto-save-list-file-prefix
445 (setq auto-save-list-file-name 443 (setq auto-save-list-file-name
450 (system-name))))) 448 (system-name)))))
451 (run-hooks 'emacs-startup-hook) 449 (run-hooks 'emacs-startup-hook)
452 (and term-setup-hook 450 (and term-setup-hook
453 (run-hooks 'term-setup-hook)) 451 (run-hooks 'term-setup-hook))
454 (setq term-setup-hook nil) 452 (setq term-setup-hook nil)
455 ;; ;; Modify the initial frame based on what .emacs puts into 453 ;; ;; Modify the initial frame based on what the init file puts into
456 ;; ;; ...-frame-alist. 454 ;; ;; ...-frame-alist.
457 (frame-notice-user-settings) 455 (frame-notice-user-settings)
458 ;; ;;####FSFmacs junk 456 ;; ;;####FSFmacs junk
459 ;; ;; Now we know the user's default font, so add it to the menu. 457 ;; ;; Now we know the user's default font, so add it to the menu.
460 ;; (if (fboundp 'font-menu-add-default) 458 ;; (if (fboundp 'font-menu-add-default)
703 701
704 After the migration, init.el/init.elc holds user-written 702 After the migration, init.el/init.elc holds user-written
705 initialization code. Moreover the customize settings will be in 703 initialization code. Moreover the customize settings will be in
706 custom.el. 704 custom.el.
707 705
706 You can undo the migration at any time with
707 M-x maybe-unmigrate-user-init-file.
708
708 If you choose not to do this now, XEmacs will not ask you this 709 If you choose not to do this now, XEmacs will not ask you this
709 question in the future. However, you can still make XEmacs 710 question in the future. However, you can still make XEmacs
710 perform the migration at any time with M-x migrate-user-init-file.") 711 perform the migration at any time with M-x migrate-user-init-file.")
711 (show-temp-buffer-in-current-frame standard-output) 712 (show-temp-buffer-in-current-frame standard-output)
712 (yes-or-no-p-minibuf (concat "Migrate init file to " 713 (yes-or-no-p-minibuf (concat "Migrate init file to "
713 user-init-directory 714 user-init-directory
714 "? ")))) 715 "? "))))
715 (migrate-user-init-file) 716 (progn
717 (migrate-user-init-file)
718 (maybe-create-compatibility-dot-emacs))
716 (customize-save-variable 'load-home-init-file t)))) 719 (customize-save-variable 'load-home-init-file t))))
720
721 (defun maybe-create-compatibility-dot-emacs ()
722 "Ask user if she wants to create a .emacs compatibility file."
723 (if (with-output-to-temp-buffer (help-buffer-name nil)
724 (progn
725 (princ "The initialization code has now been migrated to the ")
726 (princ user-init-directory)
727 (princ "directory.
728
729 For backwards compatibility with, for example, older versions of XEmacs,
730 XEmacs can create a special old-style .emacs file in your home
731 directory which will load the relocated initialization code.")
732 (show-temp-buffer-in-current-frame standard-output)
733 (yes-or-no-p-minibuf "Create compatibility .emacs? ")))
734 (create-compatibility-dot-emacs)))
717 735
718 (defun migrate-user-init-file () 736 (defun migrate-user-init-file ()
719 "Migrate the init file from the home directory." 737 "Migrate the init file from the home directory."
720 (interactive) 738 (interactive)
721 (if (not (file-exists-p user-init-directory)) 739 (if (not (file-exists-p user-init-directory))
722 (progn 740 (progn
723 (message "Creating %s directory..." user-init-directory) 741 (message "Creating %s directory..." user-init-directory)
724 (make-directory user-init-directory))) 742 (make-directory user-init-directory)))
725 (message "Migrating custom file...") 743 (message "Migrating custom file...")
744 (customize-set-value 'load-home-init-file nil)
726 (custom-migrate-custom-file (make-custom-file-name user-init-file 745 (custom-migrate-custom-file (make-custom-file-name user-init-file
727 'force-new)) 746 'force-new))
728 (message "Moving init file...") 747 (message "Moving init file...")
729 (rename-file user-init-file 748 (let ((new-user-init-file (expand-file-name user-init-file-base
730 (expand-file-name user-init-file-base 749 user-init-directory)))
731 user-init-directory)) 750 (rename-file user-init-file new-user-init-file)
751 (setq user-init-file new-user-init-file))
732 (message "Migration done.")) 752 (message "Migration done."))
753
754 (defun create-compatibility-dot-emacs ()
755 "Create .emacs compatibility file for migrated setup."
756 (message "Creating .emacs compatibility file.")
757 (with-temp-file (expand-file-name ".emacs" "~")
758 (insert ";;; XEmacs backwards compatibility file\n")
759 (insert "(setq user-init-file\n")
760 (insert " (expand-file-name \"init.el\"\n")
761 (insert " (expand-file-name \".xemacs\" \"~\")))\n")
762 (insert "(setq custom-file\n")
763 (insert " (expand-file-name \"custom.el\"\n")
764 (insert " (expand-file-name \".xemacs\" \"~\")))\n")
765 (insert "\n")
766 (insert "(load-file user-init-file)\n")
767 (insert "(load-file custom-file)"))
768 (message "Created .emacs compatibility file."))
769
770 (defun maybe-unmigrate-user-init-file ()
771 "Possibly unmigrate the user's init and custom files."
772 (interactive)
773 (let ((dot-emacs-file-name (expand-file-name ".emacs" "~")))
774 (if (and (not load-home-init-file)
775 (or (not (file-exists-p dot-emacs-file-name))
776 (yes-or-no-p-minibuf (concat "Overwrite " dot-emacs-file-name
777 "? "))))
778 (unmigrate-user-init-file dot-emacs-file-name))))
779
780 (defun unmigrate-user-init-file (&optional target-file-name)
781 "Unmigrate the user's init and custom files."
782 (interactive)
783 (let ((target-file-name
784 (or target-file-name (expand-file-name ".emacs" "~"))))
785 (rename-file user-init-file target-file-name 'ok-if-already-exists)
786 (setq user-init-file target-file-name)
787 (let ((old-custom-file custom-file))
788 (custom-migrate-custom-file target-file-name)
789 (customize-save-variable 'load-home-init-file t)
790 (delete-file old-custom-file))))
733 791
734 (defun load-user-init-file () 792 (defun load-user-init-file ()
735 "This function actually reads the init file." 793 "This function actually reads the init file."
736 (if (not user-init-file) 794 (if (not user-init-file)
737 (setq user-init-file 795 (setq user-init-file