annotate lisp/startup.el @ 502:7039e6323819

[xemacs-hg @ 2001-05-04 22:41:46 by ben] ----------------------- byte-comp warning fixes ----------------- New functions for cleanly eliminating byte-compiler warnings. Their definitions require no changes at all in bytecomp.el, meaning that any package that wants to use them and be compatible with older versions of XEmacs need only copy the code and rename the functions (i.e. prefix them with the package name). Eliminate byte-compiler warnings using the new functions in bytecomp-runtime.el. Move coding-system-put,get,category, since they're not Mule-specific and are used in prefer-coding-system. font.el was incredibly ugly. Clean it up. Avoid using defsubst for any exported functions, to avoid possible compatibility problems if we later change the internal interface. (It happened before, with face accessors, between 19.8 and 19.9). Fix tons of warnings. Clean up (new function gpm-is-supported-p eliminates duplicate code in gpm-create/delete-device-hook) and eliminate warnings. ---------- make byte-recompile-directory work in the --------- core `lisp' dir, even in the absence of a Mule XEmacs (i.e. make it skip the Mule files rather than trying to compile them). now you should be able to do `touch *.el' in the `lisp' dir, then M-x byte-recompile-directory, and get no warnings. Avoid trying to compile Mule files in byte-recompile-directory when we're not in a Mule XEmacs, since we're highly likely to get syntax errors. Add a coding-system cookie to all Mule files so that byte-recompile-directory ignores them. Magic cookie function moved to files.el from code-files.el (for use by bytecomp even in a non-coding-system XEmacs), and changed names and semantics for use by bytecomp. NOTE: IMO this is an internal function that we can change as we like (and there is absolutely no code anywhere else using the function). ---------------- GUI improvements: menus, help ------------------- Rearrange order of keymap declarations to be alphabetical. Improve help on help to include all bindings, and group by category. Add bindings for new Info commands. Remove warnings. Use command-hyper-apropos in place of command-apropos. Add a function to do the equivalent of command-apropos. Evals its help-text argument so you can put expressions there. Used now by help-for-help. Add binding to continue text searches. Expand index searches to work over multiple info documents. Add commands to search text/index in User and Lispref. Add new entry, "Uncomment Region" (parallels "Comment Out Region"). Redo Help menu; add bindings for new Info commands to search the index or text of the User and Lispref manuals. Add command for mark-paragraph, activate-region. Make Edit->R accelerator be rectangle, not register (more commonly used), and put rectangle first. Fix the Edit Init File entry to never load the .elc file. Simplify the default-popup-menu. Add Cmds->Tabs menu. Use kp-left not kp_left, etc. ---------------- Miscellaneous bug fixes/cleanup ------------------- byte-compiler-options: Correct doc string. easy-menu-do-define: fix extra quote. fill-paragraph-or-region:Rewrite to be more correct -- use call-interactively so that we always get exactly the same behavior as if the functions were called directly. No need to fiddle with zmacs-region-stays, now that bogus clearing of it (2001-04-28 src/ChangeLog) is removed. Put dialog titles back in -- this time correctly. Fix various other problems with leaks and such. key-sequence-list-description: Clean up fun to always correctly canonicalize. Clean up Kinsoku comments, synch comment-region with FSF 20.7. * simple.el (region-exists-p): * simple.el (region-active-p): Add comment about which one is correct to use in menu specs. * sound.el (load-sound-file): Minor code clean up. * startup.el: * startup.el (command-line-early): * startup.el (initial-scratch-message): Comment changes. Add info about sample.init.el to splash screen. Improve initial-scratch-message and clarify purpose of Scratch buffer. Fix byte-compile warning. ------------------------ Added features ------------------------- Add new variable to control whether etags checks all parent directories for tag files. (On by default.) * hash-table.el: New file, useful utility functions. * dumped-lisp.el (preloaded-file-list): Dump hash-table.el. ------------ notable bug fix: Windows event code -------------- Get critical quit working. ------------ notable bug fix and new feature: regex code -------------- Shy groups were implemented in a horrible, half-assed way that would cause them to screw up regex searching in most cases. Fixed to work correctly. Also extended back-reference syntax past 9. Only is recognized as such if there are at least that many non-shy groups; and optionally will warn about such uses, to catch old code that might be using them differently. (Added variable to control this in search.c -- `warn-about-possibly-incompatible-back- references', on by default for the moment. Declared in lisp.h. ---------------- process/SIGIO improvements ------------------- define USE_GETADDRINFO to replace more complex conditional, and use it. the code conditionalized on this in unix_open_network_stream had *serious* problems handling errors. it's now fixed, and major amounts of duplicate code between the two versions were combined. don't disable SIGIO and other interrupts unless CONNECT_NEEDS_SLOWED_INTERRUPTS is defined -- don't penalize OS's without bugs. similarly for a freebsd bug that was affecting all OS's. * s\ultrix.h: define CONNECT_NEEDS_SLOWED_INTERRUPTS, since that's the OS mentioned as having a kernel bug. * sysdep.c (request_sigio_on_device): * sysdep.c (unrequest_sigio_on_device): fix SIGIO problems on Linux. add check for O_ASYNC in case it's defined and FASYNC isn't. add comment about other ways to do SIGIO on Linux. * callproc.c (Fold_call_process_internal): * process.c (Fstart_process_internal): Deal with the possibility that `default-directory' doesn't have terminating slash. Correct comments about vfork. ---------------- Miscellaneous bug fixes/cleanup ------------------- * callint.c (Finteractive): Add lots of documentation -- exactly what the Lisp equivalents of all the interactive specs are. * console.h (struct console): change type of quit_char to Emchar. * event-msw.c (lstream_type_create_mswindows_selectable): spacing change. Eliminate events-mod.h and combine into events.h. * emacs.c: * emacs.c (make_arg_list_1): * emacs.c (main_1): A couple of char->Extbyte changes, add a comment. * glyphs-msw.c: Correct indentation of function defns to not exceed 80 cols. Try (sort of) to fix some code that sets the colors of the progress gauge. (Commented out) * keymap.c (syms_of_keymap): use DEFSYMBOL. * process.c (read_process_output): No need to fiddle with zmacs_region_stays, now that bogus clearing of it (see below) is removed. * search.c (Freplace_match): warning fix.
author ben
date Fri, 04 May 2001 22:42:35 +0000
parents 54fa1a5c2d12
children ef4d2466a29c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; startup.el --- process XEmacs shell arguments
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1985-1986, 1990, 1992-1997 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 ;; Copyright (c) 1993, 1994 Sun Microsystems, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Copyright (C) 1995 Board of Trustees, University of Illinois
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 ;; Maintainer: XEmacs Development Team
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ;; Keywords: internal, dumped
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 ;; This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 ;; XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ;; under the terms of the GNU General Public License as published by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 ;; any later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 ;; General Public License for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
23 ;; along with XEmacs; see the file COPYING. If not, write to the
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 ;; Free Software Foundation, 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 ;;; Synched up with: FSF 19.34.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;; This file is dumped with XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
33 ;; It handles the all aspects of startup once the C code has finished
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
34 ;; initializing itself. Entry from C is through the function set in
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
35 ;; the `top-level' variable, which is normally `normal-top-level'. At
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
36 ;; the point that `normal-top-level' has been invoked:
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
37 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
38 ;; (1) the dumped Elisp files are available. Either they were loaded
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
39 ;; during this invocation of temacs and it was then converted to
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
40 ;; XEmacs using the run-temacs mechanism, or (more likely) the
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
41 ;; loadup and dumping occurred at some point in the past and we
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
42 ;; just read in the dumped data.
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
43 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
44 ;; (2) All C subsystems have been initialized.
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
45 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
46 ;; (3) A "stream" device has been created, which does I/O over stdin
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
47 ;; and stdout. This is the only device we have available and our
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
48 ;; only means of communication, other than disk files.
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
49 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
50 ;; (4) The command-line arguments have been sorted according to
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
51 ;; priority specs (this implies that the names of all arguments
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
52 ;; must be hard-coded into emacs.c), and certain low-level
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
53 ;; arguments such as -sd, -t, -nd, -nw, -batch, etc. have been
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
54 ;; processed by main_1() and removed. (NOTE: main_1() is the name
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
55 ;; in the source code, but in the object file it has some other
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
56 ;; name, such as xemacs_21_2_34_mips_sgi_irix6().) Certain other
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
57 ;; arguments such as -version and -help are partially-processed,
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
58 ;; triggering some special behavior but being left on the list for
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
59 ;; further processing by the Lisp code.
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
60 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
61 ;; The job of the code here is to process the remaining command-line
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
62 ;; args, set up the various paths, locate where all the packages are
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
63 ;; and set things up for them (initialize the load path, read in the
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
64 ;; autoloads, etc.), read in the init files, display the splash
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
65 ;; screen, and set up any remaining environment-dependent variables.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 ;;; Code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 (setq top-level '(normal-top-level))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 (defvar command-line-processed nil "t once command line has been processed")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 (defconst startup-message-timeout 12000) ; More or less disable the timeout
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 (defconst splash-frame-timeout 7) ; interval between splash frame elements
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 (defconst inhibit-startup-message nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 "*Non-nil inhibits the initial startup message.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 This is for use in your personal init file, once you are familiar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 with the contents of the startup message.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 ;; #### FSFmacs randomness
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 ;;(defconst inhibit-startup-echo-area-message nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 ;; "*Non-nil inhibits the initial startup echo area message.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 ;;Inhibition takes effect only if your `.emacs' file contains
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 ;;a line of this form:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 ;; (setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 ;;If your `.emacs' file is byte-compiled, use the following form instead:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 ;; (eval '(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 ;;Thus, someone else using a copy of your `.emacs' file will see
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 ;;the startup message unless he personally acts to inhibit it.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (defconst inhibit-default-init nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 "*Non-nil inhibits loading the `default' library.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 (defvar command-line-args-left nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 "List of command-line args not yet processed.") ; bound by `command-line'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 (defvar command-line-default-directory nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 "Default directory to use for command line arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 This is normally copied from `default-directory' when XEmacs starts.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 (defvar before-init-hook nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 "Functions to call after handling urgent options but before init files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 The frame system uses this to open frames to display messages while
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 XEmacs loads the user's initialization file.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 (defvar after-init-hook nil
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
108 "*Functions to call after loading the init file.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 The call is not protected by a condition-case, so you can set `debug-on-error'
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
110 in the init file, and put all the actual code on `after-init-hook'.")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 (defvar term-setup-hook nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 "*Functions to be called after loading terminal-specific Lisp code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 See `run-hooks'. This variable exists for users to set, so as to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 override the definitions made by the terminal-specific file. XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 never sets this variable itself.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 (defvar keyboard-type nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 "The brand of keyboard you are using.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 This variable is used to define the proper function and keypad keys
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 for use under X. It is used in a fashion analogous to the environment
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 value TERM.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 (defvar window-setup-hook nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 "Normal hook run to initialize window system display.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 XEmacs runs this hook after processing the command line arguments and loading
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 the user's init file.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 (defconst initial-major-mode 'lisp-interaction-mode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 "Major mode command symbol to use for the initial *scratch* buffer.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 (defvar emacs-roots nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 "List of plausible roots of the XEmacs hierarchy.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 (defvar user-init-directory-base ".xemacs"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 "Base of directory where user-installed init files may go.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 (defvar user-init-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 (file-name-as-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 (paths-construct-path (list "~" user-init-directory-base)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 "Directory where user-installed init files may go.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
143 (defvar user-init-file-base "init.el"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
144 "Default name of the user init file if uncompiled.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
145 This should be used for migration purposes only.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
146
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
147 (defvar user-init-file-base-list '("init.elc" "init.el")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
148 "List of allowed init files in the user's init directory.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
149 The first one found takes precedence.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
150
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
151 (defvar user-home-init-file-base-list
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
152 (append '(".emacs.elc" ".emacs.el" ".emacs")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
153 (and (eq system-type 'windows-nt)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
154 '("_emacs.elc" "_emacs.el" "_emacs")))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
155 "List of allowed init files in the user's home directory.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
156 The first one found takes precedence.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
157
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
158 (defvar load-home-init-file nil
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
159 "Non-nil if XEmacs should load the init file from the home directory.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
160 Otherwise, XEmacs will offer migration to the init directory.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
161
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 (defvar load-user-init-file-p t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 "Non-nil if XEmacs should load the user's init file.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 ;; #### called `site-run-file' in FSFmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
167 (defvar site-start-file "site-start"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 "File containing site-wide run-time initializations.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 This file is loaded at run-time before `.emacs'. It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 contains inits that need to be in place for the entire site, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 which, due to their higher incidence of change, don't make sense to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 load into XEmacs' dumped image. Thus, the run-time load order is:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 1. file described in this variable, if non-nil;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 2. `.emacs';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 3. `/path/to/xemacs/lisp/default.el'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 Don't use the `site-start.el' file for things some users may not like.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 Put them in `default.el' instead, so that users can more easily
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 override them. Users can prevent loading `default.el' with the `-q'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 option or by setting `inhibit-default-init' in their own init files,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 but inhibiting `site-start.el' requires `--no-site-file', which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 is less convenient.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 ;;(defconst iso-8859-1-locale-regexp "8859[-_]?1"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 ;; "Regexp that specifies when to enable the ISO 8859-1 character set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 ;;We do that if this regexp matches the locale name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 ;;specified by the LC_ALL, LC_CTYPE and LANG environment variables.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
190 (defcustom mail-host-address nil
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
191 "*Name of this machine, for purposes of naming users."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
192 :type 'string
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
193 :group 'mail)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
195 (defcustom user-mail-address nil
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 "*Full mailing address of this user.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 This is initialized based on `mail-host-address',
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
198 after your init file is read, in case it sets `mail-host-address'."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
199 :type 'string
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
200 :group 'mail)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 (defvar init-file-debug nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 (defvar init-file-had-error nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 (defvar init-file-loaded nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 "True after the user's init file has been loaded (or suppressed with -q).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 This will be true when `after-init-hook' is run and at all times
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 after, and will not be true at any time before.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 (defvar initial-frame-unmapped-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 (defvar command-switch-alist
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
216 '(("-help" . command-line-do-help)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
217 ("-version". command-line-do-version)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
218 ("-V" . command-line-do-version)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
219 ("-funcall". command-line-do-funcall)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
220 ("-f" . command-line-do-funcall)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
221 ("-e" . command-line-do-funcall-1)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
222 ("-eval" . command-line-do-eval)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
223 ("-load" . command-line-do-load)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
224 ("-l" . command-line-do-load)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
225 ("-insert" . command-line-do-insert)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
226 ("-i" . command-line-do-insert)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
227 ("-kill" . command-line-do-kill)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
228 ;; Options like +35 are handled specially.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
229 ;; Window-system, site, or package-specific code might add to this.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
230 ;; X11 handles its options by letting Xt remove args from this list.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
231 )
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 "Alist of command-line switches.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 HANDLER-FUNCTION receives switch name as sole arg;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 remaining command-line args are in the variable `command-line-args-left'.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 ;;; default switches
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 ;;; Note: these doc strings are semi-magical.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 (defun command-line-do-help (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 "Print the XEmacs usage message and exit."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 (let ((standard-output 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 (princ (concat "\n" (emacs-version) "\n\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 (princ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 (if (featurep 'x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 (concat "When creating a window on an X display, "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 (emacs-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 " accepts all standard X Toolkit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 command line options plus the following:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 -iconname <title> Use title as the icon name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 -mc <color> Use color as the mouse color.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 -cr <color> Use color as the text-cursor foregound color.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 -private Install a private colormap.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 In addition, the")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 "The"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 (princ " following options are accepted:
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents: 444
diff changeset
258 -sd Show dump ID. Ignored when configured without --pdump.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents: 444
diff changeset
259 -nd Don't load the dump file. Roughly like old temacs.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents: 444
diff changeset
260 Ignored when configured without --pdump.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 -t <device> Use TTY <device> instead of the terminal for input
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 and output. This implies the -nw option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 -nw Inhibit the use of any window-system-specific
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 display code: use the current tty.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 -batch Execute noninteractively (messages go to stderr).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 -debug-init Enter the debugger if an error in the init file occurs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 -unmapped Do not map the initial frame.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 -no-site-file Do not load the site-specific init file (site-start.el).
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
269 -no-init-file Do not load the user-specific init file.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 -no-early-packages Do not process early packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 -no-autoloads Do not load global symbol files (auto-autoloads) at
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 startup. Also implies `-vanilla'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 -vanilla Equivalent to -q -no-site-file -no-early-packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 -q Same as -no-init-file.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 -user-init-file <file> Use <file> as init file.
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents: 444
diff changeset
276 -user-init-directory <directory> Use <directory> as init directory.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 -user <user> Load user's init file instead of your own.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 -u <user> Same as -user.\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 (let ((l command-switch-alist)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 (insert (lambda (&rest x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 (princ " ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 (let ((len 2))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 (while x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 (princ (car x))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 (incf len (length (car x)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 (setq x (cdr x)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 (when (>= len 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 (terpri) (setq len 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 (while (< len 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 (princ " ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 (incf len))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 (while l
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 (let ((name (car (car l)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 (fn (cdr (car l)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 doc arg cons)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 ((and (symbolp fn) (get fn 'undocumented)) nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 (setq doc (documentation fn))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 (if (member doc '(nil "")) (setq doc "(undocumented)"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 (cond ((string-match "\n\\(<.*>\\)\n?\\'" doc)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 ;; Doc of the form "The frobber switch\n<arg1> <arg2>"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 (setq arg (substring doc (match-beginning 1) (match-end 1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 doc (substring doc 0 (match-beginning 0))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 ((string-match "\n+\\'" doc)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 (setq doc (substring doc 0 (match-beginning 0)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 (if (and (setq cons (rassq fn command-switch-alist))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 (not (eq cons (car l))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 (setq doc (format "Same as %s." (car cons))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 (if arg
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 (funcall insert name " " arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 (funcall insert name))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 (princ doc)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 (terpri))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 (setq l (cdr l))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 (princ (concat "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 +N <file> Start displaying <file> at line N.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 Anything else is considered a file name, and is placed into a buffer for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 editing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 " (emacs-name) " has an online tutorial and manuals. Type ^Ht (Control-h t) after
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 starting XEmacs to run the tutorial. Type ^Hi to enter the manual browser.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 (kill-emacs 0))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 (defun command-line-do-funcall (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 "Invoke the named lisp function with no arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 <function>"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 (funcall (intern (pop command-line-args-left))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 (fset 'command-line-do-funcall-1 'command-line-do-funcall)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 (put 'command-line-do-funcall-1 'undocumented t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 (defun command-line-do-eval (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 "Evaluate the lisp form. Quote it carefully.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 <form>"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 (eval (read (pop command-line-args-left))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 (defun command-line-do-load (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 "Load the named file of Lisp code into XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 <file>"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 (let ((file (pop command-line-args-left)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 ;; Take file from default dir if it exists there;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 ;; otherwise let `load' search for it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 (if (file-exists-p (expand-file-name file))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 (setq file (expand-file-name file)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 (load file nil t)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 (defun command-line-do-insert (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 "Insert file into the current buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 <file>"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 (insert-file-contents (pop command-line-args-left)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 (defun command-line-do-kill (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 "Exit XEmacs."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 (kill-emacs t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 (defun command-line-do-version (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 "Print version info and exit."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 (princ (concat (emacs-version) "\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 (kill-emacs 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 ;;; Processing the command line and loading various init files
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 (defun early-error-handler (&rest debugger-args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 "You should probably not be using this."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 ;; Used as the debugger during XEmacs initialization; if an error occurs,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 ;; print some diagnostics, and kill XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 ;; output the contents of the warning buffer, since it won't be seen
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 ;; otherwise.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 ;; #### kludge! The call to Feval forces the pending warnings to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 ;; get output. There definitely needs to be a better way.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 (let ((buffer (eval (get-buffer-create "*Warnings*"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 (princ (buffer-substring (point-min buffer) (point-max buffer) buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 (let ((string "Initialization error")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 (error (nth 1 debugger-args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 (debug-on-error nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 (stream 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 (if (null error)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 (princ string stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 (princ (concat "\n" string ": ") stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 (condition-case ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 (display-error error stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 (error (princ "<<< error printing error message >>>" stream)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 (princ "\n" stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 (if (memq (car-safe error) '(void-function void-variable))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 (princ "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 This probably means that XEmacs is picking up an old version of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 the lisp library, or that some .elc files are not up-to-date.\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 stream)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 (when (not suppress-early-error-handler-backtrace)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 (let ((print-length 1000)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 (print-level 1000)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 (print-escape-newlines t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 (print-readably nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 (when (getenv "EMACSLOADPATH")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 (princ (format "\n$EMACSLOADPATH is %s" (getenv "EMACSLOADPATH"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 stream))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 (princ (format "\nexec-directory is %S" exec-directory) stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 (princ (format "\ndata-directory is %S" data-directory) stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 (princ (format "\ndata-directory-list is %S" data-directory-list) stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 (princ (format "\ndoc-directory is %S" doc-directory) stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 (princ (format "\nload-path is %S" load-path) stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 (princ "\n\n" stream)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 (when (not suppress-early-error-handler-backtrace)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 (backtrace stream t)))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
412 (if (fboundp 'mswindows-message-box)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
413 (mswindows-message-box "Initialization error"))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 (kill-emacs -1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 (defun normal-top-level ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 (if command-line-processed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 (message "Back to top level.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 (setq command-line-processed t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 ;; Canonicalize HOME (PWD is canonicalized by init_buffer in buffer.c)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 (let ((value (user-home-directory)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 (if (and value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 (< (length value) (length default-directory))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 (equal (file-attributes default-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 (file-attributes value)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 (setq default-directory (file-name-as-directory value))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 (setq default-directory (abbreviate-file-name default-directory))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 (initialize-xemacs-paths)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 (startup-set-invocation-environment)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 (let ((debug-paths (or debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 (and (getenv "EMACSDEBUGPATHS")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 t))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 (setq emacs-roots (paths-find-emacs-roots invocation-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 invocation-name))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
438
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 (princ (format "emacs-roots:\n%S\n" emacs-roots)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 'external-debugging-output))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
442
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 (if (null emacs-roots)
458
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
444 (startup-find-roots-warning))
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
445 (startup-setup-paths emacs-roots
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
446 user-init-directory
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
447 inhibit-early-packages
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
448 inhibit-site-lisp
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 452
diff changeset
449 debug-paths)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 (startup-setup-paths-warning))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 (if (and (not inhibit-autoloads)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 lisp-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 (load (expand-file-name (file-name-sans-extension autoload-file-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 lisp-directory) nil t))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
456
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 (if (not inhibit-autoloads)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 (if (not inhibit-early-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 (packages-load-package-auto-autoloads early-package-load-path))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 (packages-load-package-auto-autoloads late-package-load-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 (packages-load-package-auto-autoloads last-package-load-path)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 (unwind-protect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465 (command-line)
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
466 ;; Do this again, in case the init file defined more abbreviations.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 (setq default-directory (abbreviate-file-name default-directory))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 ;; Specify the file for recording all the auto save files of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 ;; this session. This is used by recover-session.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
470 (if auto-save-list-file-prefix
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
471 (setq auto-save-list-file-name
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
472 (expand-file-name
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
473 (format "%s%d-%s"
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
474 auto-save-list-file-prefix
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
475 (emacs-pid)
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
476 (system-name)))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 (run-hooks 'emacs-startup-hook)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 (and term-setup-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 (run-hooks 'term-setup-hook))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 (setq term-setup-hook nil)
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
481 ;; ;; Modify the initial frame based on what the init file puts into
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 ;; ;; ...-frame-alist.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 (frame-notice-user-settings)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 ;; ;;####FSFmacs junk
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 ;; ;; Now we know the user's default font, so add it to the menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 ;; (if (fboundp 'font-menu-add-default)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 ;; (font-menu-add-default))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 (when window-setup-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 (run-hooks 'window-setup-hook))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 (setq window-setup-hook nil))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
491
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
492 (if load-user-init-file-p
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
493 (maybe-migrate-user-init-file))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 ;;####FSFmacs junk
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 ;; (or menubar-bindings-done
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 ;; (precompute-menubar-bindings))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 ))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 ;;####FSFmacs junk
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500 ;;; Precompute the keyboard equivalents in the menu bar items.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 ;;(defun precompute-menubar-bindings ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 ;; (if (eq window-system 'x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 ;; (let ((submap (lookup-key global-map [menu-bar])))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504 ;; (while submap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 ;; (and (consp (car submap))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 ;; (symbolp (car (car submap)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 ;; (stringp (car-safe (cdr (car submap))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 ;; (keymapp (cdr (cdr (car submap))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
509 ;; (x-popup-menu nil (cdr (cdr (car submap)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
510 ;; (setq submap (cdr submap))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 (defun command-line-early (args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 ;; This processes those switches which need to be processed before
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 ;; starting up the window system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 (setq command-line-default-directory default-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 ;; See if we should import version-control from the environment variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 (let ((vc (getenv "VERSION_CONTROL")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 (cond ((eq vc nil)) ;don't do anything if not set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 ((or (string= vc "t")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 (string= vc "numbered"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 (setq version-control t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524 ((or (string= vc "nil")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 (string= vc "existing"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526 (setq version-control nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
527 ((or (string= vc "never")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
528 (string= vc "simple"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529 (setq version-control 'never))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 ;;####FSFmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 ;; (if (let ((ctype
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533 ;; ;; Use the first of these three envvars that has a nonempty value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 ;; (or (let ((string (getenv "LC_ALL")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535 ;; (and (not (equal string "")) string))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 ;; (let ((string (getenv "LC_CTYPE")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537 ;; (and (not (equal string "")) string))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 ;; (let ((string (getenv "LANG")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 ;; (and (not (equal string "")) string)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 ;; (and ctype
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 ;; (string-match iso-8859-1-locale-regexp ctype)))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
542 ;; (progn
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 ;; (standard-display-european t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 ;; (require 'iso-syntax)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546 (setq load-user-init-file-p (not (noninteractive)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548 ;; Allow (at least) these arguments anywhere in the command line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 (let ((new-args nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550 (arg nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551 (while args
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 (setq arg (pop args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
553 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
554 ((or (string= arg "-q")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
555 (string= arg "-no-init-file"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 (setq load-user-init-file-p nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
557 ((string= arg "-no-site-file")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
558 (setq site-start-file nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
559 ((or (string= arg "-no-early-packages")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
560 (string= arg "--no-early-packages"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
561 (setq inhibit-early-packages t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
562 ((or (string= arg "-vanilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
563 (string= arg "--vanilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
564 ;; Some work on this one already done in emacs.c.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
565 (string= arg "-no-autoloads")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
566 (string= arg "--no-autoloads"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
567 (setq load-user-init-file-p nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
568 site-start-file nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
569 ((string= arg "-user-init-file")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
570 (setq user-init-file (pop args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
571 ((string= arg "-user-init-directory")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
572 (setq user-init-directory (file-name-as-directory (pop args))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
573 ((or (string= arg "-u")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
574 (string= arg "-user"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
575 (let* ((user (pop args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 (home-user (concat "~" user)))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
577 (setq user-init-directory (file-name-as-directory
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
578 (paths-construct-path
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
579 (list home-user user-init-directory-base))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
580 (setq user-init-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
581 (find-user-init-file user-init-directory home-user))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
582 (setq custom-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
583 (make-custom-file-name user-init-file))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584 ((string= arg "-debug-init")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585 (setq init-file-debug t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 ((string= arg "-unmapped")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587 (setq initial-frame-unmapped-p t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 ((or (string= arg "-debug-paths")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 (string= arg "--debug-paths"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
590 t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
591 ((or (string= arg "--") (string= arg "-"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
592 (while args
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
593 (push (pop args) new-args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
594 (t (push arg new-args))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
595
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
596 (with-obsolete-variable 'init-file-user
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
597 (setq init-file-user (and load-user-init-file-p "")))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
598
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
599 (nreverse new-args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
600
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
601 (defconst initial-scratch-message "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
602 ;; This buffer is for notes you don't want to save, and for Lisp evaluation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
603 ;; If you want to create a file, first visit that file with C-x C-f,
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
604 ;; then enter the text in that file's own buffer. (C-x is the standard
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
605 ;; XEmacs abbreviation for `Control+X', i.e. hold down the Control key
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
606 ;; while hitting the X key.)
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
607 ;;
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 487
diff changeset
608 ;; For Lisp evaluation, type an expression, move to the end and hit C-j.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
609
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
610 "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
611 "Initial message displayed in *scratch* buffer at startup.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
612 If this is nil, no message will be displayed.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
613
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
614 (defun command-line ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
615 (let ((command-line-args-left (cdr command-line-args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
616
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
617 (let ((debugger 'early-error-handler)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
618 (debug-on-error t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
619
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
620 ;; Process magic command-line switches like -q and -u. Do this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621 ;; before creating the first frame because some of these switches
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622 ;; may affect that. I think it's ok to do this before establishing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623 ;; the X connection, and maybe someday things like -nw can be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
624 ;; handled here instead of down in C.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
625 (setq command-line-args-left (command-line-early command-line-args-left))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
627 ;; Setup the toolbar icon directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
628 (when (featurep 'toolbar)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
629 (init-toolbar-location))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
630
487
54fa1a5c2d12 [xemacs-hg @ 2001-04-28 07:48:36 by ben]
ben
parents: 470
diff changeset
631 (if (featurep 'toolbar)
54fa1a5c2d12 [xemacs-hg @ 2001-04-28 07:48:36 by ben]
ben
parents: 470
diff changeset
632 (if (featurep 'infodock)
54fa1a5c2d12 [xemacs-hg @ 2001-04-28 07:48:36 by ben]
ben
parents: 470
diff changeset
633 (require 'id-x-toolbar)
54fa1a5c2d12 [xemacs-hg @ 2001-04-28 07:48:36 by ben]
ben
parents: 470
diff changeset
634 (init-toolbar)))
54fa1a5c2d12 [xemacs-hg @ 2001-04-28 07:48:36 by ben]
ben
parents: 470
diff changeset
635
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
636 ;; Run the window system's init function. tty is considered to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
637 ;; a type of window system for this purpose. This creates the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
638 ;; initial (non stdio) device.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
639 (when (and initial-window-system (not noninteractive))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
640 (funcall (intern (concat "init-"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
641 (symbol-name initial-window-system)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
642 "-win"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
643
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
644 ;; When not in batch mode, this creates the first visible frame,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
645 ;; and deletes the stdio device.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
646 (frame-initialize))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
647
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
648 ;; Reinitialize faces if necessary. This function changes face if
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
649 ;; it is created during auto-autoloads loading. Otherwise, it
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
650 ;; does nothing.
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
651 (startup-initialize-custom-faces)
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
652
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
653 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
654 ;; We have normality, I repeat, we have normality. Anything you still
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655 ;; can't cope with is therefore your own problem. (And we don't need
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 ;; to kill XEmacs for it.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 ;;; Load init files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 (load-init-file)
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
661
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662 (with-current-buffer (get-buffer "*scratch*")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664 ;; (insert initial-scratch-message)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 (set-buffer-modified-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666 (when (eq major-mode 'fundamental-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 (funcall initial-major-mode)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
668
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669 ;; Load library for our terminal type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
670 ;; User init file can set term-file-prefix to nil to prevent this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671 ;; Note that for any TTY's opened subsequently, the TTY init
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
672 ;; code will run this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673 (when (and (eq 'tty (console-type))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674 (not (noninteractive)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 (load-terminal-library))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
676
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
677 ;; Process the remaining args.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
678 (command-line-1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 ;; it was turned on by default so that the warnings don't get displayed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
681 ;; until after the splash screen.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
682 (setq inhibit-warning-display nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
683 ;; If -batch, terminate after processing the command options.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
684 (when (noninteractive) (kill-emacs t))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
685
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
686 (defun load-terminal-library ()
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
687 (when term-file-prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
688 (let ((term (getenv "TERM"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
689 hyphend)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
690 (while (and term
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
691 (not (load (concat term-file-prefix term) t t)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
692 ;; Strip off last hyphen and what follows, then try again
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
693 (if (setq hyphend (string-match "[-_][^-_]+\\'" term))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
694 (setq term (substring term 0 hyphend))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
695 (setq term nil))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
696
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
697 (defun find-user-init-directory-init-file (&optional init-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
698 "Determine the user's init file if in the init directory."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
699 (let ((init-directory (or init-directory user-init-directory)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
700 (catch 'found
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
701 (dolist (file user-init-file-base-list)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
702 (let ((expanded (expand-file-name file init-directory)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
703 (when (file-readable-p expanded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
704 (throw 'found expanded)))))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
705
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
706 (defun find-user-home-directory-init-file (&optional home-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
707 "Determine the user's init file if in the home directory."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
708 (let ((home-directory (or home-directory "~")))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
709 (catch 'found
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
710 (dolist (file user-home-init-file-base-list)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
711 (let ((expanded (expand-file-name file home-directory)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
712 (when (file-readable-p expanded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
713 (throw 'found expanded))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
714 nil)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
715
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
716 (defun find-user-init-file (&optional init-directory home-directory)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
717 "Determine the user's init file."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
718 (if load-home-init-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
719 (find-user-home-directory-init-file home-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
720 (or (find-user-init-directory-init-file init-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
721 (find-user-home-directory-init-file home-directory))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
722
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
723 (defun maybe-migrate-user-init-file ()
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
724 "Ask user if she wants to migrate the init file(s) to new location."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
725 (if (and (not load-home-init-file)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
726 (not (find-user-init-directory-init-file user-init-directory))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
727 (stringp user-init-file)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
728 (file-readable-p user-init-file))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
729 (if (with-output-to-temp-buffer (help-buffer-name nil)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
730 (progn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
731 (princ "XEmacs recommends that the initialization code in
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
732 ")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
733 (princ user-init-file)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
734 (princ "
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
735 be migrated to the ")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
736 (princ user-init-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
737 (princ " directory. XEmacs can
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
738 perform the migration automatically.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
739
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
740 After the migration, init.el/init.elc holds user-written
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
741 initialization code. Moreover the customize settings will be in
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
742 custom.el.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
743
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
744 You can undo the migration at any time with
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
745 M-x maybe-unmigrate-user-init-file.
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
746
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
747 If you choose not to do this now, XEmacs will not ask you this
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
748 question in the future. However, you can still make XEmacs
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
749 perform the migration at any time with M-x migrate-user-init-file.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
750 (show-temp-buffer-in-current-frame standard-output)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
751 (yes-or-no-p-minibuf (concat "Migrate init file to "
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
752 user-init-directory
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
753 "? "))))
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
754 (progn
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
755 (migrate-user-init-file)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
756 (maybe-create-compatibility-dot-emacs))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
757 (customize-save-variable 'load-home-init-file t))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
758
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
759 (defun maybe-create-compatibility-dot-emacs ()
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
760 "Ask user if she wants to create a .emacs compatibility file."
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
761 (if (with-output-to-temp-buffer (help-buffer-name nil)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
762 (progn
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
763 (princ "The initialization code has now been migrated to the ")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
764 (princ user-init-directory)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
765 (princ "directory.
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
766
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
767 For backwards compatibility with, for example, older versions of XEmacs,
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
768 XEmacs can create a special old-style .emacs file in your home
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
769 directory which will load the relocated initialization code.")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
770 (show-temp-buffer-in-current-frame standard-output)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
771 (yes-or-no-p-minibuf "Create compatibility .emacs? ")))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
772 (create-compatibility-dot-emacs)))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
773
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
774 (defun migrate-user-init-file ()
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
775 "Migrate the init file from the home directory."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
776 (interactive)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
777 (if (not (file-exists-p user-init-directory))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
778 (progn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
779 (message "Creating %s directory..." user-init-directory)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
780 (make-directory user-init-directory)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
781 (message "Migrating custom file...")
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
782 (customize-set-value 'load-home-init-file nil)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
783 (custom-migrate-custom-file (make-custom-file-name user-init-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
784 'force-new))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
785 (message "Moving init file...")
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
786 (let ((new-user-init-file (expand-file-name user-init-file-base
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
787 user-init-directory)))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
788 (rename-file user-init-file new-user-init-file)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
789 (setq user-init-file new-user-init-file))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
790 (message "Migration done."))
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
791
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
792 (defun create-compatibility-dot-emacs ()
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
793 "Create .emacs compatibility file for migrated setup."
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
794 (message "Creating .emacs compatibility file.")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
795 (with-temp-file (expand-file-name ".emacs" "~")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
796 (insert ";;; XEmacs backwards compatibility file\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
797 (insert "(setq user-init-file\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
798 (insert " (expand-file-name \"init.el\"\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
799 (insert " (expand-file-name \".xemacs\" \"~\")))\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
800 (insert "(setq custom-file\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
801 (insert " (expand-file-name \"custom.el\"\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
802 (insert " (expand-file-name \".xemacs\" \"~\")))\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
803 (insert "\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
804 (insert "(load-file user-init-file)\n")
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
805 (insert "(load-file custom-file)"))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
806 (message "Created .emacs compatibility file."))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
807
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
808 (defun maybe-unmigrate-user-init-file ()
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
809 "Possibly unmigrate the user's init and custom files."
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
810 (interactive)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
811 (let ((dot-emacs-file-name (expand-file-name ".emacs" "~")))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
812 (if (and (not load-home-init-file)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
813 (or (not (file-exists-p dot-emacs-file-name))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
814 (yes-or-no-p-minibuf (concat "Overwrite " dot-emacs-file-name
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
815 "? "))))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
816 (unmigrate-user-init-file dot-emacs-file-name))))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
817
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
818 (defun unmigrate-user-init-file (&optional target-file-name)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
819 "Unmigrate the user's init and custom files."
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
820 (interactive)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
821 (let ((target-file-name
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
822 (or target-file-name (expand-file-name ".emacs" "~"))))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
823 (rename-file user-init-file target-file-name 'ok-if-already-exists)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
824 (setq user-init-file target-file-name)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
825 (let ((old-custom-file custom-file))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
826 (custom-migrate-custom-file target-file-name)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
827 (customize-save-variable 'load-home-init-file t)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
828 (delete-file old-custom-file))))
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 446
diff changeset
829
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
830 (defun load-user-init-file ()
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
831 "This function actually reads the init file."
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
832 (if (not user-init-file)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
833 (setq user-init-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
834 (find-user-init-file user-init-directory)))
470
8a548306e08d [xemacs-hg @ 2001-04-17 15:50:10 by didierv]
didierv
parents: 460
diff changeset
835 (if (not custom-file)
8a548306e08d [xemacs-hg @ 2001-04-17 15:50:10 by didierv]
didierv
parents: 460
diff changeset
836 (setq custom-file (make-custom-file-name user-init-file)))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
837 (if (and user-init-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
838 (file-readable-p user-init-file))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
839 (load user-init-file t t t))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
840 (if (and custom-file
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
841 (or (not user-init-file)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
842 (not (string= custom-file user-init-file)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
843 (file-readable-p custom-file))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
844 (load custom-file t t t))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
845 (unless inhibit-default-init
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
846 (let ((inhibit-startup-message nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
847 ;; Users are supposed to be told their rights.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
848 ;; (Plus how to get help and how to undo.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
849 ;; Don't you dare turn this off for anyone except yourself.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
850 (load "default" t t))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
851
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
852 ;;; Load user's init file and default ones.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
853 (defun load-init-file ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
854 (run-hooks 'before-init-hook)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
855
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
856 ;; Run the site-start library if it exists. The point of this file is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
857 ;; that it is run before .emacs. There is no point in doing this after
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
858 ;; .emacs; that is useless.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
859 (when site-start-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
860 (load site-start-file t t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
861
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
862 ;; Sites should not disable this. Only individuals should disable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
863 ;; the startup message.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
864 (setq inhibit-startup-message nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
865
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
866 (let (debug-on-error-from-init-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
867 debug-on-error-should-be-set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
868 (debug-on-error-initial
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
869 (if (eq init-file-debug t) 'startup init-file-debug)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
870 (let ((debug-on-error debug-on-error-initial))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
871 (if (and load-user-init-file-p init-file-debug)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
872 (progn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
873 ;; Do this without a condition-case if the user wants to debug.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
874 (load-user-init-file))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
875 (condition-case error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
876 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
877 (if load-user-init-file-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
878 (load-user-init-file))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
879 (setq init-file-had-error nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
880 (error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
881 (message "Error in init file: %s" (error-message-string error))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
882 (display-warning 'initialization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
883 (format "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
884 An error has occurred while loading %s:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
885
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
886 %s
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
887
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
888 To ensure normal operation, you should investigate the cause of the error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
889 in your initialization file and remove it. Use the `-debug-init' option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
890 to XEmacs to view a complete error backtrace."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
891 user-init-file (error-message-string error))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
892 'error)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
893 (setq init-file-had-error t))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
894 ;; If we can tell that the init file altered debug-on-error,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
895 ;; arrange to preserve the value that it set up.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
896 (or (eq debug-on-error debug-on-error-initial)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
897 (setq debug-on-error-should-be-set t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
898 debug-on-error-from-init-file debug-on-error)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
899 (when debug-on-error-should-be-set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
900 (setq debug-on-error debug-on-error-from-init-file)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
901
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
902 (setq init-file-loaded t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
903
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
904 ;; Do this here in case the init file sets mail-host-address.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
905 ;; Don't do this here unless noninteractive, it is frequently wrong. -sb
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
906 ;; (or user-mail-address
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
907 (when noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
908 (setq user-mail-address (concat (user-login-name) "@"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
909 (or mail-host-address
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
910 (system-name)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
911
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
912 (run-hooks 'after-init-hook)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
913 nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
914
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
915 (defun load-options-file (filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
916 "Load the file of saved options (from the Options menu) called FILENAME.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
917 Currently this does nothing but call `load', but it might be redefined
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
918 in the future to support automatically converting older options files to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
919 a new format, when variables have changed, etc."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
920 (load filename))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
921
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
922 (defun command-line-1 ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
923 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
924 ((null command-line-args-left)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
925 (unless noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
926 ;; If there are no switches to process, run the term-setup-hook
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
927 ;; before displaying the copyright notice; there may be some need
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
928 ;; to do it before doing any output. If we're not going to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
929 ;; display a copyright notice (because other options are present)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
930 ;; then this is run after those options are processed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
931 (run-hooks 'term-setup-hook)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
932 ;; Don't let the hook be run twice.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
933 (setq term-setup-hook nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
934
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
935 ;; Don't clobber a non-scratch buffer if init file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
936 ;; has selected it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
937 (when (string= (buffer-name) "*scratch*")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
938 (unless (or inhibit-startup-message
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
939 (input-pending-p))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
940 (let (tmout circ-tmout)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
941 (unwind-protect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
942 ;; Guts of with-timeout
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
943 (catch 'tmout
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
944 (setq tmout (add-timeout startup-message-timeout
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
945 (lambda (ignore)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
946 (condition-case nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
947 (throw 'tmout t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
948 (error nil)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
949 nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
950 (setq circ-tmout (display-splash-frame))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
951 (or nil;; (pos-visible-in-window-p (point-min))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
952 (goto-char (point-min)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
953 (sit-for 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
954 (setq unread-command-event (next-command-event)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
955 (when tmout (disable-timeout tmout))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
956 (when circ-tmout (disable-timeout circ-tmout)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
957 (with-current-buffer (get-buffer "*scratch*")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
958 ;; In case the XEmacs server has already selected
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
959 ;; another buffer, erase the one our message is in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
960 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
961 (when (stringp initial-scratch-message)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
962 (insert initial-scratch-message))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
963 (set-buffer-modified-p nil)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
964
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
965 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
966 ;; Command-line-options exist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
967 (let ((dir command-line-default-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
968 (file-count 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
969 (line nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
970 (end-of-options nil)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
971 file-p arg tem)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
972 (while command-line-args-left
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
973 (setq arg (pop command-line-args-left))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
974 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
975 (end-of-options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
976 (setq file-p t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
977 ((setq tem (when (eq (aref arg 0) ?-)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
978 (or (assoc arg command-switch-alist)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
979 (assoc (substring arg 1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
980 command-switch-alist))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
981 (funcall (cdr tem) arg))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
982 ((string-match "\\`\\+[0-9]+\\'" arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
983 (setq line (string-to-int arg)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
984 ;; "- file" means don't treat "file" as a switch
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
985 ;; ("+0 file" has the same effect; "-" added
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
986 ;; for unixoidiality).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
987 ;; This is worthless; the `unixoid' way is "./file". -jwz
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
988 ((or (string= arg "-") (string= arg "--"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
989 (setq end-of-options t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
990 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
991 (setq file-p t)))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
992
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
993 (when file-p
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
994 (setq file-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
995 (incf file-count)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
996 (setq arg (expand-file-name arg dir))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
997 (cond
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
998 ((= file-count 1)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
999 (find-file arg))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1000 (noninteractive (find-file arg))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1001 (t (find-file-other-window arg)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1002 (when line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1003 (goto-line line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1004 (setq line nil))))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1005
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1006 (defvar startup-presentation-hack-keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1007 (let ((map (make-sparse-keymap)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1008 (set-keymap-name map 'startup-presentation-hack-keymap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1009 (define-key map '[button1] 'startup-presentation-hack)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1010 (define-key map '[button2] 'startup-presentation-hack)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1011 map)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1012 "Putting yesterday in the future tomorrow.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1013
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1014 (defun startup-presentation-hack ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1015 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1016 (let ((e last-command-event))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1017 (and (button-press-event-p e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1018 (setq e (extent-at (event-point e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1019 (event-buffer e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1020 'startup-presentation-hack))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1021 (setq e (extent-property e 'startup-presentation-hack))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1022 (if (consp e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1023 (apply (car e) (cdr e))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1024 (while (keymapp (indirect-function e))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1025 (let ((map e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1026 (overriding-local-map (indirect-function e)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1027 (setq e (read-key-sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1028 (let ((p (keymap-prompt map t)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1029 (cond ((symbolp map)
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1030 (if p
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1031 (format "%s %s " map p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1032 (format "%s " map)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1033 (p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1034 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1035 (prin1-to-string map))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1036 (if (and (button-release-event-p (elt e 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1037 (null (key-binding e)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1038 (setq e map) ; try again
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1039 (setq e (key-binding e)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1040 (call-interactively e)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1041
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1042 (defun startup-presentation-hack-help (e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1043 (setq e (extent-property e 'startup-presentation-hack))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1044 (if (consp e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1045 (format "Evaluate %S" e)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1046 (symbol-name e)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1047
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1048 (defun splash-frame-present-hack (e v)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1049 ;; (set-extent-property e 'mouse-face 'highlight)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1050 ;; (set-extent-property e 'keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1051 ;; startup-presentation-hack-keymap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1052 ;; (set-extent-property e 'startup-presentation-hack v)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1053 ;; (set-extent-property e 'help-echo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1054 ;; 'startup-presentation-hack-help)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1055 )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1056
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1057 (defun splash-hack-version-string ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1058 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1059 (save-restriction
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1060 (goto-char (point-min))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1061 (re-search-forward "^XEmacs" nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1062 (narrow-to-region (point-at-bol) (point-at-eol))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1063 (goto-char (point-min))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1064 (when (re-search-forward " \\[Lucid\\]" nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1065 (delete-region (match-beginning 0) (match-end 0)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1066 (when (re-search-forward "[^(][^)]*-[^)]*-" nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1067 (delete-region (1+ (match-beginning 0)) (match-end 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1068 (insert "("))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1069 (goto-char (point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1070 (search-backward " " nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1071 (when (search-forward "." nil t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1072 (delete-region (1- (point)) (point-max))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1073
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1074 (defun splash-frame-present (l)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1075 (cond ((stringp l)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1076 (insert l))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1077 ((eq (car-safe l) 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1078 ;; (face name string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1079 (let ((p (point)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1080 (splash-frame-present (elt l 2))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1081 (if (fboundp 'set-extent-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1082 (set-extent-face (make-extent p (point))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1083 (elt l 1)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1084 ((eq (car-safe l) 'key)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1085 (let* ((c (elt l 1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1086 (p (point))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1087 (k (where-is-internal c nil t)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1088 (insert (if k (key-description k)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1089 (format "M-x %s" c)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1090 (if (fboundp 'set-extent-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1091 (let ((e (make-extent p (point))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1092 (set-extent-face e 'bold)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1093 (splash-frame-present-hack e c)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1094 ((eq (car-safe l) 'funcall)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1095 ;; (funcall (fun . args) string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1096 (let ((p (point)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1097 (splash-frame-present (elt l 2))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1098 (if (fboundp 'set-extent-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1099 (splash-frame-present-hack (make-extent p (point))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1100 (elt l 1)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1101 ((consp l)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1102 (mapcar 'splash-frame-present l))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1103 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1104 (error "WTF!?"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1106 (defun startup-center-spaces (glyph)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1107 ;; Return the number of spaces to insert in order to center
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1108 ;; the given glyph (may be a string or a pixmap).
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1109 ;; Assume spaces are as wide as avg-pixwidth.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1110 ;; Won't be quite right for proportional fonts, but it's the best we can do.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1111 ;; Maybe the new redisplay will export something a glyph-width function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1112 ;;; #### Yes, there is a glyph-width function but it isn't quite what
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1113 ;;; #### this was expecting. Or is it?
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1114 ;; (An alternate way to get avg-pixwidth would be to use x-font-properties
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1115 ;; and calculate RESOLUTION_X * AVERAGE_WIDTH / 722.7, but it's no better.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1116
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1117 ;; This function is used in about.el too.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1118 (let* ((avg-pixwidth (round (/ (frame-pixel-width) (frame-width))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1119 (fill-area-width (* avg-pixwidth (- fill-column left-margin)))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1120 (glyph-pixwidth (cond ((stringp glyph)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1121 (* avg-pixwidth (length glyph)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1122 ;; #### the pixmap option should be removed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1123 ;;((pixmapp glyph)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1124 ;; (pixmap-width glyph))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1125 ((glyphp glyph)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1126 (glyph-width glyph))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1127 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1128 (error "startup-center-spaces: bad arg")))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1129 (+ left-margin
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1130 (round (/ (/ (- fill-area-width glyph-pixwidth) 2) avg-pixwidth)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1132 (defun splash-frame-body ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1133 `[((face (blue bold underline)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1134 "\nDistribution, copying license, warranty:\n\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1135 "Please visit the XEmacs website at http://www.xemacs.org !\n\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1136 ,@(if (featurep 'sparcworks)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1137 `( "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1138 Sun provides support for the WorkShop/XEmacs integration package only.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1139 All other XEmacs packages are provided to you \"AS IS\".\n"
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1140 ,@(let ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1141 (getenv "LANG"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1142 (if (and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1143 (not (featurep 'mule)) ;; Already got mule?
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1144 ;; No Mule support on tty's yet
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1145 (not (eq 'tty (console-type)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1146 lang ;; Non-English locale?
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1147 (not (string= lang "C"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1148 (not (string-match "^en" lang))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1149 ;; Comes with Sun WorkShop
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1150 (locate-file "xemacs-mule" exec-path))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1151 '( "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1152 This version of XEmacs has been built with support for Latin-1 languages only.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1153 To handle other languages you need to run a Multi-lingual (`Mule') version of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1154 XEmacs, by either running the command `xemacs-mule', or by using the X resource
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1155 `ESERVE*defaultXEmacsPath: xemacs-mule' when starting XEmacs from Sun WorkShop.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1156 \n")))))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1157 ((key describe-no-warranty)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1158 ": "(face (red bold) "XEmacs comes with ABSOLUTELY NO WARRANTY\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1159 ((key describe-copying)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1160 ": conditions to give out copies of XEmacs\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1161 ((key describe-distribution)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1162 ": how to get the latest version\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1163 "\n--\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1164 (face italic "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1165 Copyright (C) 1985-1999 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1166 Copyright (C) 1990-1994 Lucid, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1167 Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1168 Copyright (C) 1994-1996 Board of Trustees, University of Illinois
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1169 Copyright (C) 1995-1996 Ben Wing\n"))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1170
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1171 ((face (blue bold underline) "\nInformation, on-line help:\n\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1172 "XEmacs comes with plenty of documentation...\n\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1173 ,@(if (string-match "beta" emacs-version)
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1174 `((key describe-beta)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1175 ": " (face (red bold)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1176 "This is an Experimental version of XEmacs.\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1177 `( "\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1178 ((key xemacs-local-faq)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1179 ": read the XEmacs FAQ (a " (face underline "capital") " F!)\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1180 ((key help-with-tutorial)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1181 ": read the XEmacs tutorial (also available through the "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1182 (face bold "Help") " menu)\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1183 ((key help-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1184 ": get help on using XEmacs (also available through the "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1185 (face bold "Help") " menu)\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1186 ((key info) ": read the on-line documentation\n\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1187 ((key describe-project) ": read about the GNU project\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1188 ((key about-xemacs) ": see who's developing XEmacs\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1189
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1190 ((face (blue bold underline) "\nUseful stuff:\n\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1191 "Things that you should know rather quickly...\n\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1192 ((key find-file) ": visit a file\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1193 ((key save-buffer) ": save changes\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1194 ((key advertised-undo) ": undo changes\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1195 ((key save-buffers-kill-emacs) ": exit XEmacs\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1196 ])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1198 ;; I really hate global variables, oh well.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1199 ;(defvar xemacs-startup-logo-function nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1200 ; "If non-nil, function called to provide the startup logo.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1201 ;This function should return an initialized glyph if it is used.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1202
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1203 ;; This will hopefully go away when gettext is functional.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1204 (defconst splash-frame-static-body
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1205 `(,(emacs-version) "\n\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1206 (face italic "`C-' means the control key,`M-' means the meta key\n\n")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1208
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1209 (defun circulate-splash-frame-elements (client-data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1210 (with-current-buffer (aref client-data 2)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1211 (let ((buffer-read-only nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1212 (elements (aref client-data 3))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1213 (indice (aref client-data 0)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1214 (goto-char (aref client-data 1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1215 (delete-region (point) (point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1216 (splash-frame-present (aref elements indice))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1217 (set-buffer-modified-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1218 (aset client-data 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1219 (if (= indice (- (length elements) 1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1220 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1221 (1+ indice )))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1222 )))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1223
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
1224 ;; #### This function now returns the (possibly nil) timeout circulating the
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1225 ;; splash-frame elements
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1226 (defun display-splash-frame ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1227 (let ((logo xemacs-logo)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1228 (buffer-read-only nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1229 (cramped-p (eq 'tty (console-type))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1230 (unless cramped-p (insert "\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1231 (indent-to (startup-center-spaces logo))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1232 (set-extent-begin-glyph (make-extent (point) (point)) logo)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1233 ;;(splash-frame-present-hack (make-extent p (point)) 'about-xemacs))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1234 (insert "\n\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1235 (splash-frame-present splash-frame-static-body)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1236 (splash-hack-version-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1237 (goto-char (point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1238 (let* ((after-change-functions nil) ; no font-lock, thank you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1239 (elements (splash-frame-body))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1240 (client-data `[ 1 ,(point) ,(current-buffer) ,elements ])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1241 tmout)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1242 (if (listp elements) ;; A single element to display
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1243 (splash-frame-present (splash-frame-body))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1244 ;; several elements to rotate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1245 (splash-frame-present (aref elements 0))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1246 (setq tmout (add-timeout splash-frame-timeout
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1247 'circulate-splash-frame-elements
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1248 client-data splash-frame-timeout)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1249 (set-buffer-modified-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1250 tmout)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1252 ;; (let ((present-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1253 ;; #'(lambda (f)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1254 ;; (splash-frame-present
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1255 ;; (list 'funcall
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1256 ;; (list 'find-file-other-window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1257 ;; (expand-file-name f data-directory))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1258 ;; f)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1259 ;; (insert "For customization examples, see the files ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1260 ;; (funcall present-file "sample.emacs")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1261 ;; (insert " and ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1262 ;; (funcall present-file "sample.Xdefaults")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1263 ;; (insert (format "\nin the directory %s." data-directory)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1264
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1265 (defun startup-set-invocation-environment ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1266 ;; XEmacs -- Steven Baur says invocation directory is nil if you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1267 ;; try to use XEmacs as a login shell.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1268 (or invocation-directory (setq invocation-directory default-directory))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1269 (setq invocation-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1270 ;; don't let /tmp_mnt/... get into the load-path or exec-path.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1271 (abbreviate-file-name invocation-directory)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1272
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1273 (defun startup-setup-paths (roots user-init-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1274 &optional
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1275 inhibit-early-packages inhibit-site-lisp
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1276 debug-paths)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1277 "Setup all the various paths.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1278 ROOTS is a list of plausible roots of the XEmacs directory hierarchy.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1279 If INHIBIT-PACKAGES is non-NIL, don't do packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1280 If INHIBIT-SITE-LISP is non-NIL, don't do site-lisp.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1281 If DEBUG-PATHS is non-NIL, print paths as they are detected.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1282 It's idempotent, so call this as often as you like!"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1283
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1284 (apply #'(lambda (early late last)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1285 (setq early-packages (and (not inhibit-early-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1286 early))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1287 (setq late-packages late)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1288 (setq last-packages last))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1289 (packages-find-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1290 roots
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1291 (packages-compute-package-locations user-init-directory)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1292
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1293 (setq early-package-load-path (packages-find-package-load-path early-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1294 (setq late-package-load-path (packages-find-package-load-path late-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1295 (setq last-package-load-path (packages-find-package-load-path last-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1296
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1297 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1298 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1299 (princ (format "configure-package-path:\n%S\n" configure-package-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1300 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1301 (princ (format "early-packages and early-package-load-path:\n%S\n%S\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1302 early-packages early-package-load-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1303 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1304 (princ (format "late-packages and late-package-load-path:\n%S\n%S\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1305 late-packages late-package-load-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1306 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1307 (princ (format "last-packages and last-package-load-path:\n%S\n%S\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1308 last-packages last-package-load-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1309 'external-debugging-output)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1310
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1311 (setq lisp-directory (paths-find-lisp-directory roots))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1312
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1313 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1314 (princ (format "lisp-directory:\n%S\n" lisp-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1315 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1316
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1317 (if (featurep 'mule)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1318 (progn
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1319 (setq mule-lisp-directory
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1320 (paths-find-mule-lisp-directory roots
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1321 lisp-directory))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1322 (if debug-paths
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1323 (princ (format "mule-lisp-directory:\n%S\n"
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1324 mule-lisp-directory)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1325 'external-debugging-output)))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1326 (setq mule-lisp-directory '()))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1327
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1328 (setq site-directory (and (null inhibit-site-lisp)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1329 (paths-find-site-lisp-directory roots)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1330
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1331 (if (and debug-paths (null inhibit-site-lisp))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1332 (princ (format "site-directory:\n%S\n" site-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1333 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1334
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1335 (setq load-path (paths-construct-load-path roots
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1336 early-package-load-path
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1337 late-package-load-path
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1338 last-package-load-path
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1339 lisp-directory
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1340 site-directory
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1341 mule-lisp-directory))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1342
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1343 (setq Info-directory-list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1344 (paths-construct-info-path roots
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1345 early-packages late-packages last-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1346
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1347
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1348 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1349 (princ (format "Info-directory-list:\n%S\n" Info-directory-list)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1350 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1351
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1352 (setq exec-directory (paths-find-exec-directory roots))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1353
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1354 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1355 (princ (format "exec-directory:\n%s\n" exec-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1356 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1357
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1358 (setq exec-path
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1359 (paths-construct-exec-path roots exec-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1360 early-packages late-packages last-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1361
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1362 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1363 (princ (format "exec-path:\n%S\n" exec-path)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1364 'external-debugging-output))
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
1365
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1366 (setq doc-directory (paths-find-doc-directory roots))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1367
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1368 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1369 (princ (format "doc-directory:\n%S\n" doc-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1370 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1372 (setq data-directory (paths-find-data-directory roots))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1373
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1374 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1375 (princ (format "data-directory:\n%S\n" data-directory)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1376 'external-debugging-output))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1377
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1378 (setq data-directory-list (paths-construct-data-directory-list data-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1379 early-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1380 late-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1381 last-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1382 (if debug-paths
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1383 (princ (format "data-directory-list:\n%S\n" data-directory-list)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1384 'external-debugging-output)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1385
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1386 (defun startup-find-roots-warning ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1387 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1388 (set-buffer (get-buffer-create " *warning-tmp*"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1389 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1390 (buffer-disable-undo (current-buffer))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1391
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1392 (insert "Couldn't find an obvious default for the root of the\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1393 "XEmacs hierarchy.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1394
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1395 (princ "\nWARNING:\n" 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1396 (princ (buffer-string) 'external-debugging-output)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1397
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1398 (defun startup-setup-paths-warning ()
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1399 (let ((warnings '()))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1400 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1401 ((null (and lisp-directory exec-directory data-directory doc-directory
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
1402 load-path))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1403 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1404 (set-buffer (get-buffer-create " *warning-tmp*"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1405 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1406 (buffer-disable-undo (current-buffer))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1407 (if (null lisp-directory) (push "lisp-directory" warnings))
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1408 (if (and (featurep 'mule)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1409 (null mule-lisp-directory))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 458
diff changeset
1410 (push "mule-lisp-directory" warnings))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1411 (if (null exec-directory) (push "exec-directory" warnings))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1412 (if (null data-directory) (push "data-directory" warnings))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1413 (if (null doc-directory) (push "doc-directory" warnings))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1414 (if (null load-path) (push "load-path" warnings))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1415
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1416 (insert "Couldn't find obvious defaults for:\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1417 (while warnings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1418 (insert (car warnings) "\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1419 (setq warnings (cdr warnings)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1420 (insert "Perhaps some directories don't exist, "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1421 "or the XEmacs executable,\n" (concat invocation-directory
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1422 invocation-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1423 "\nis in a strange place?")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1424
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1425 (princ "\nWARNING:\n" 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1426 (princ (buffer-string) 'external-debugging-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1427 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1428 t)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1429
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1430 ;;; startup.el ends here