annotate etc/sample.init.el @ 5880:44ba043ceada

Fix a small typo
author Vin Shelton <acs@xemacs.org>
date Sat, 28 Mar 2015 16:03:33 -0400
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1 ;; -*- Mode: Emacs-Lisp -*-
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 ;; Copyright (C) 2000, 2001 Ben Wing.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5 ;; Author: Mostly Ben Wing <ben@xemacs.org>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6 ;; Maintainer: XEmacs Development Team
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 ;; Keywords: sample, initialization
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
11 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
12 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
13 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
14 ;; option) any later version.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
17 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
18 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
19 ;; for more details.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 1959
diff changeset
22 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 ;; #### to do:
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
25 ;; -- scan for #### markers and fix the problems noted there.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
26 ;; -- #### maybe the setqs in this file should be changed to defvars
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
27 ;; to avoid tromping on customizations when custom.el is loaded
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
28 ;; early (dv and sjt at least favor making this the default)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
29 ;; -- #### update documentation in (lispref)Starting Up XEmacs, in
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
30 ;; (xemacs)Entering Emacs, and in (custom), then point to them
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
31 ;; instead of going into detail here.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
33 ;;; This is a sample init file. It can be used without modification
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
34 ;;; as your init.el or .emacs. In older versions of XEmacs, this file
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
35 ;;; was called .emacs and placed in your home directory. (Under MS
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
36 ;;; Windows, that directory is controlled by the HOME environment
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
37 ;;; variable and defaults to C:\. You can find out where XEmacs
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
38 ;;; thinks your home directory is using
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 ;;; ESC : (expand-file-name "~")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42 ;;; . This means type ESC, then colon, then the following text, then hit
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 ;;; return.) In more recent versions of XEmacs, this file has migrated to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44 ;;; the .xemacs/ subdirectory and is called init.el. Other files are
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 ;;; also located here, such as custom.el (the auto-generated file
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 ;;; containing Customization options that you saved when using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 ;;; Options->Save Options).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 ;;; Changes to your init.el file will not take effect until the next
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 ;;; time you start up XEmacs, unless you load it explicitly with
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 ;;; M-x load-file RET ~/.xemacs/init.el RET
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 ;;; The language that this file (and most other XEmacs init files) is
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 ;;; written in is called "XEmacs Lisp" or more commonly "Elisp".
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
57 ;;; Brief descriptions of how the init process works and how to
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
58 ;;; accomplish many useful customizations are given below in this
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
59 ;;; file. There are many sources of further information:
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 ;;; -- the XEmacs User's Manual (Access using the online Info browser:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 ;;; Use `Help->Info (Online Docs)->XEmacs User's Manual' (if
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 ;;; there is such an entry); or get to the Info contents page
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 ;;; using `Help->Info Contents' or `C-h i', and then
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 ;;; *middle-click* the XEmacs link or move the cursor into the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 ;;; link and hit ENTER. This manual contains a great deal of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 ;;; documentation on customization: Scroll down to the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68 ;;; Customization link and select it in the same fashion as for
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69 ;;; the XEmacs link just mentioned.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
70
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 ;;; -- the XEmacs FAQ (`C-h F' for the local version; get either the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72 ;;; local version or the very latest version off the net using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 ;;; the Help menu)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75 ;;; -- the XEmacs Lisp Reference Manual, containing detailed
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 ;;; documentation on Elisp. (Access using Info, just like for the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77 ;;; XEmacs User's Manual.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
78
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
79 ;;; -- the documentation strings for specific commands, functions,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 ;;; key sequences, and variables. NOTE: This is *not* the same
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
81 ;;; information as in the XEmacs User's Manual or XEmacs Lisp
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
82 ;;; Reference Manual! In general, the doc strings are more
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 ;;; terse and more up-to-date than what is found in the manuals.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84 ;;; Once you understand the general concepts, these doc strings
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85 ;;; should be your first point of reference for further
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86 ;;; info. (Access using menu entries under `Help->Commands,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 ;;; Variables, Keys' or using the keyboard: `C-h k' for a key
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
88 ;;; sequence, `C-h f' for a named command or Elisp function,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89 ;;; `C-h v' for a variable. There is various other useful
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90 ;;; information accessible similarly, such as `C-h a'
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 ;;; ["Apropos", i.e. search for a command, function, or variable
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
92 ;;; by name]; `C-h C-a' ["Apropos Docs", i.e. search through the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
93 ;;; text of the doc strings]; `C-h b' to list all key bindings;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
94 ;;; `C-h m' to describe the current major and minor modes; etc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
95 ;;; Type `C-h ? ?' for a complete list.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
96
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
97 ;;; -- Getting Started with XEmacs [aka the "New User's Guide"], a
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
98 ;;; more introductory manual than the XEmacs User's Manual.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
99 ;;; (Access using Info, just like for the XEmacs User's Manual.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
100 ;;; There are some sections on customization here.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
101
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
102 ;;; -- the XEmacs tutorial, a very simple introduction to XEmacs for
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
103 ;;; total beginners. (`C-h t' for English; get the version in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
104 ;;; various languages from the Help menu)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
105
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
106 ;;; -- the XEmacs web site, www.xemacs.org.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
107
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
108 ;;; -- the XEmacs mailing lists (xemacs-FOO@xemacs.org;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
109 ;;; see http://www.xemacs.org/Lists/ for more info. Before
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
110 ;;; posting, consider looking through the archives -- they go back
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
111 ;;; years and there is a powerful searching interface. Currently
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
112 ;;; the archives are at http://list-archive.xemacs.org/, but if
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
113 ;;; this doesn't work, you can always access them through
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
114 ;;; www.xemacs.org.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
115
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
116 ;;; -- the XEmacs newsgroup, comp.emacs.xemacs. This is
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
117 ;;; bi-directionally gatewayed with xemacs@xemacs.org. WARNING:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
118 ;;; The developers do not normally hang out on this newsgroup. If
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
119 ;;; you need to contact them, use xemacs-beta@xemacs.org.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
120
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
121 ;;; -- the XEmacs internals manual, for those interested in working on
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
122 ;;; the XEmacs C code. (Available through Info.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
123
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
124 ;;; -- `Help->About XEmacs' to find out who the maintainers are.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
125
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
126
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
127 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
128 ;; Theory of Operation ;;
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
129 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
130
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
131 ;;; XEmacs allows you to make persistent changes to editor behavior by
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
132 ;;; saving code in files which are by default loaded at startup.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
133
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
134 ;; These files are just Lisp libraries with names built in to XEmacs.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
135 ;; There are files for the use of the user (the init file and the
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
136 ;; custom file), for the site administrator (default.el and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
137 ;; site-start.el), and for the XEmacs maintainers (auto-autoloads
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
138 ;; files). See the Lispref for user and site files (node Starting Up
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
139 ;; XEmacs, currently inaccurate (it doesn't describe the custom
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
140 ;; file)). Interactions among the files are complex; see
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
141 ;; lisp/startup.el for details.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
142
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
143 ;; Briefly, after very basic initializations including processing a
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
144 ;; special command line options (including GUI toolkit options),
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
145 ;; setting up the terminal, and setting up `load-path', it executes
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
146 ;; customization code as follows:
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
147
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
148 ;; 1. It runs the normal hook `before-init-hook'.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
149 ;; 2. It loads the library `site-start' (by default `site-start.el').
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
150 ;; 3. It loads the init file (by default `~/.xemacs/init.el').
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
151 ;; 4. It loads the custom file (by default `~/.xemacs/custom.el').
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
152 ;; 5. It loads the library `default' (by default `default.el').
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
153 ;; 6. It runs the normal hook `after-init-hook'.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
154
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
155 ;; After this the *scratch* buffer is set up and the remaining command
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
156 ;; line arguments (actions and file names) are processed.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
157
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
158 ;; N.B. Switching the order of steps 3 and 4 is under discussion and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
159 ;; favored by several core developers.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
160
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
161 ;; Step 2 is inhibited by the -no-site-file command line switch.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
162 ;; Steps 3 and 4 are inhibited (as a unit) by the -no-init-file
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
163 ;; command line switch (-q is a convenient synonym). Step 5 is
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
164 ;; inhibited by -no-init-file or a non-nil value of
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
165 ;; `inhibit-default-init' (set it in the init file). From now on the
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
166 ;; hooks and the site initialization files will be ignored.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
167
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
168 ;; The custom file and the init file contain customizations managed by
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
169 ;; XEmacs itself via the Custom subsystem and manual customizations,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
170 ;; respectively. Originally both were placed in the same file,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
171 ;; usually ~/.emacs, but occasionally XEmacs would trash user settings
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
172 ;; when automatically changing options, and more frequently users
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
173 ;; would trash the automatically generated code. So these functions
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
174 ;; have been reallocated to separate files, usually named custom.el
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
175 ;; and init.el, respectively.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
176
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
177 ;; The Custom system is accessed most conveniently from the
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
178 ;; Options->Advanced (Customize) menu (also, the Options->Fonts and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
179 ;; Options->Sizes menus are implicitly managed by Custom, and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
180 ;; Options->Edit Faces explicitly invokes Custom). You can also use
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
181 ;; the suite of customize commands directly (cf C-h a customize RET).
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
182 ;; Currently, Custom possesses specialized facilities for setting
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
183 ;; ordinary variables of many types, and for customizing faces. As a
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
184 ;; general rule, variable and face initialization should be done using
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
185 ;; Custom, and other initializations should be done in the init file.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
186
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
187 ;; A possible exception is a subsystem with its own complex init file,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
188 ;; eg, Gnus and .gnus. In these cases it is often preferable to keep
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
189 ;; even simple variable initializations together, and you may wish to
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
190 ;; maintain these configurations by hand.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
191
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
192 ;; You should avoid editing the custom file by hand. The syntax used
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
193 ;; is complex but concise, and it is easy to silently break the whole
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
194 ;; file with a single error that happens to result in a valid Lisp
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
195 ;; form. On the other hand, the init file is just a Lisp library that
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
196 ;; is loaded before starting the read-eval-redisplay loop.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
197
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
198 ;; The interactions between the custom file and other init files are
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
199 ;; governed by a simple idea:
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
200
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
201 ;; Custom to User: ALL VARIABLES YOURS OURS NOW ARE.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
202
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
203 ;; To be precise, Custom is pretty good about noticing and respecting
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
204 ;; existing settings in interactive use. However, it is weak in
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
205 ;; understanding advanced use of specifier variables (these are used
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
206 ;; for customizations which depend on display characteristics and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
207 ;; configuration in complex ways), and can be quite brutal at
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
208 ;; initialization.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
209
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
210 ;; Normal practice for Custom at initialization is to (1) reset all
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
211 ;; customized faces before applying customizations and (2) force all
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
212 ;; variables to the values specified in custom.el. For this reason,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
213 ;; and because it is generally the case that the init file can
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
214 ;; usefully depend on customized variables, but Custom pays no
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
215 ;; attention to behavior of the init file, it is probably a good idea
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
216 ;; to force custom.el to be loaded before the init file. (As
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
217 ;; mentioned, this will probably become the default in future versions
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
218 ;; of XEmacs.)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
219
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
220 ;; To enable early loading of custom.el, uncomment the following line:
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
221 ;(setq Init-inhibit-custom-file-p (not (assoc custom-file load-history)))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
222
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
223 ;; Code to implement early loading where late loading is the default.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
224 ;; A crucial snippet of code must be the last thing in this file.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
225
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
226 ;; defvars only initialize uninitialized variables; if the setq above
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
227 ;; is active, the variable below is defined but the value will not be
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
228 ;; altered.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
229 (defvar Init-inhibit-custom-file-p nil
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
230 "Internal user init flag. Don't use this yourself.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
231
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
232 Non-nil if we need to inhibit XEmacs from loading custom.el after init.el.")
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
233
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
234 (when Init-inhibit-custom-file-p
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
235 ;; This is the default custom-file.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
236 (let ((file (expand-file-name "~/.xemacs/custom.el")))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
237 (add-one-shot-hook 'after-init-hook
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
238 `(lambda () (setq custom-file ,file)))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
239 (cond ((file-readable-p file)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
240 (load file))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
241 ((file-exists-p file)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
242 (warn "Existing custom file \"%s\" is not readable!" file)))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
243 (cond ((not (file-exists-p file))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
244 (display-warning ' resource
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
245 (format "Custom file \"%s\" not found." file)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
246 'info))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
247 ((not (file-writable-p file))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
248 (warn "Existing custom file \"%s\" is not writable!" file)))))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
249
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
250
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
251 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
252 ;; Basic Customization ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
253 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
254
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
255 ;; TIP: Control-L characters are ignored in Lisp files and are the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
256 ;; standard way of indicating major section divisions. You can enter
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
257 ;; such a character using C-q C-l.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
258
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
259 ;; Define a variable to indicate whether we're running XEmacs/Lucid
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
260 ;; Emacs. (You do not have to defvar a global variable before using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
261 ;; it -- you can just call `setq' directly. It's clearer this way,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
262 ;; though. Note also how we check if this variable already exists
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
263 ;; using `boundp', because it's defined in recent versions of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
264 ;; XEmacs.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
265
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
266 (or (boundp 'running-xemacs)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
267 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
268
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
269 ;; Define a function to make it easier to check which version we're
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
270 ;; running. This function already exists in recent XEmacs versions,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
271 ;; and in fact all we've done is copied the definition. Note again
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
272 ;; how we check to avoid clobbering an existing definition. (It's good
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
273 ;; style to do this, in case some improvement was made to the
1959
b10161763edf [xemacs-hg @ 2004-03-20 12:51:25 by adrian]
adrian
parents: 863
diff changeset
274 ;; already-existing function -- otherwise we might substitute an older
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
275 ;; definition and possibly break some code elsewhere.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
276 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
277 ;; NOTE ALSO: It is in general *NOT* a good idea to do what we're
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
278 ;; doing -- i.e. provide a definition of a function that is present in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
279 ;; newer versions of XEmacs but not older ones. The reason is that it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
280 ;; may confuse code that notices the presence of the function and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
281 ;; proceeds to use it and other functionality that goes along with it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
282 ;; -- but which we may not have defined. What's better is to create
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
283 ;; the function with a different name -- typically, prefix it with the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
284 ;; name of your module, which in this case might be `Init-'. For
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
285 ;; `emacs-version>=' we make an exception because (a) the function has
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
286 ;; been around a long time, (b) there isn't really any other
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
287 ;; functionality that is paired with it, (c) it's definition hasn't
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
288 ;; changed and isn't likely to, and (d) the calls to `emacs-version>='
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
289 ;; or its renamed replacement would be scattered throughout the code
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
290 ;; below, and with a replacement name the code would become
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
291 ;; significantly less portable into someone else's init.el file. (BUT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
292 ;; NOTE BELOW: We do follow the procedure outlined above with renaming
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
293 ;; in a different case where the specifics are much different.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
294 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
295 ;; TIP: At this point you may be wondering how I wrote all these nice,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
296 ;; long, nicely-justified textual stretches -- didn't I go crazy
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
297 ;; sticking in the semicolons everywhere and having to delete them and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
298 ;; rearrange everything whenever I wanted to make any corrections to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
299 ;; the text? The answer is -- of course not! Use M-q. This does all
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
300 ;; the magic for you, justifying and breaking lines appropriately and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
301 ;; putting any necessary semicolons or whatever at the left (it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
302 ;; figures out what this ought to be by looking in a very clever
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
303 ;; fashion at what's already at the beginning of each line in the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
304 ;; paragraph). You may need `filladapt' set up (it's done below in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
305 ;; this file) in order for this to work properly. Finally, if you
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
306 ;; want to turn on automatic filling (like in a word processor, but
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
307 ;; not quite as automatic), use M-x auto-fill-mode or the binding set
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
308 ;; up below in this file (Meta-F9).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
309
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
310 (or (fboundp 'emacs-version>=)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
311 (defun emacs-version>= (major &optional minor patch)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
312 "Return true if the Emacs version is >= to the given MAJOR, MINOR,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
313 and PATCH numbers.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
314 The MAJOR version number argument is required, but the other arguments
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
315 argument are optional. Only the Non-nil arguments are used in the test."
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
316 (let ((emacs-patch (or emacs-patch-level emacs-beta-version -1)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
317 (cond ((> emacs-major-version major))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
318 ((< emacs-major-version major) nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
319 ((null minor))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
320 ((> emacs-minor-version minor))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
321 ((< emacs-minor-version minor) nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
322 ((null patch))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
323 ((>= emacs-patch patch))))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
324
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
325 ;; 19.13 was released ages ago (Sep. 1995), and lots of graphic and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
326 ;; window-system stuff doesn't work before then.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
327
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
328 (or (not running-xemacs)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
329 (emacs-version>= 19 13)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
330 (error "This init file does not support XEmacs before 19.13"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
331
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
332 ;; Here are some example code snippets that you can use if you need to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
333 ;; conditionalize on a particular version of Emacs (in general, though,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
334 ;; it is much better to use `fboundp', `featurep', or other such
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
335 ;; feature-specific checks rather than version-specific checks):
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
336
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
337 ; (cond ((and running-xemacs
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
338 ; (emacs-version>= 21 2))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
339 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
340 ; ;; Code requiring XEmacs version 21.2 or newer goes here
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
341 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
342 ; ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
343
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
344 ; (cond ((emacs-version >= 19 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
345 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
346 ; ;; Code for any vintage-19 Emacs goes here
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
347 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
348 ; ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
349
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
350 ; (cond ((and (not running-xemacs)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
351 ; (emacs-version>= 20 0))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
352 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
353 ; ;; Code specific to GNU Emacs 20 or newer (not XEmacs) goes here
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
354 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
355 ; ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
356
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
357 (defun Init-safe-require (feat)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
358 "Try to REQUIRE the specified feature. Errors occurring are silenced.
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
359 \(Perhaps in the future there will be a way to get at the error.)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
360 Returns t if the feature was successfully required."
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
361 (condition-case nil
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
362 (progn (require feat) t)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
363 (error nil)))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
364
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
365
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
366 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
367 ;; Key Definitions ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
368 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
369
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
370 ;;; Set up the function keys to do common tasks to reduce Emacs pinky
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
371 ;;; and such.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
372
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
373 ;; You can set a key sequence either to a command or to another key
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
374 ;; sequence. (Use `C-h k' to map a key sequence to its command. Use
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
375 ;; `C-h w' to go the other way.) In general, however, it works better
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
376 ;; to specify the command name. For example, it does not currently
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
377 ;; work to say
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
378
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
379 ;; (global-set-key 'f5 "\C-x\C-f")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
380
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
381 ;; The reason is that macros (which is what the string on the right
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
382 ;; really is) can't currently use the minibuffer. This is an
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
383 ;; extremely longstanding bug in Emacs. Eventually, it will be
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
384 ;; fixed. (Hopefully ..)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
385
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
386 ;; Note also that you may sometimes see the idiom
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
387
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
388 ;; (define-key global-map ...)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
389
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
390 ;; in place of (global-set-key ...). These are exactly the same.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
391
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
392 ;; Here I've tried to put all the most common commands on simple
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
393 ;; non-modifier function keys to take the pressure off your modifier
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
394 ;; fingers. Furthermore, on my keyboard at least, the function keys
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
395 ;; are grouped into three groups of four with spaces between them, and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
396 ;; so it's easier to hit the keys at the edge of the groups --
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
397 ;; i.e. f1, f4, f5, f8, f9, and f12. Finally, you may note that f9,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
398 ;; f11, and f12 are purposely left blank. [F6 is defined below.]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
399 ;; That's because I use them for _, {, and } -- see below.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
400
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
401 (global-set-key 'f1 'advertised-undo) ;; Undo
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
402 (global-set-key 'f2 'kill-primary-selection) ;; Cut
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
403 (global-set-key 'f3 'copy-primary-selection) ;; Copy
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
404 (global-set-key 'f4 'yank-clipboard-selection) ;; Paste
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
405 (global-set-key 'f5 'find-file) ;; C-x C-f
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
406 (global-set-key 'f7 'save-buffer) ;; C-x C-s
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
407
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
408 ;; I considered having this retain the current column after killing
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
409 ;; the line, but that messes up the common idiom `f8 move-cursor f4'.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
410
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
411 (defun Init-kill-entire-line (&optional arg)
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
412 "Kill the entire line.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
413 With prefix argument, kill that many lines from point. Negative
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
414 arguments kill lines backward.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
415
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
416 When calling from a program, nil means \"no arg\",
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
417 a number counts as a prefix arg."
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
418 (interactive "*P")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
419 (let ((kill-whole-line t))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
420 (beginning-of-line)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
421 (call-interactively 'kill-line)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
422
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
423 (global-set-key 'f8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
424 (if (fboundp 'kill-entire-line) 'kill-entire-line 'Init-kill-entire-line))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
425
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
426 ;; A keystroke repeated incredible amounts of times. We need to patch
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
427 ;; into the isearch keymap so that repeat searches while in isearch
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
428 ;; mode still work. Here we show how to make a key in a keymap have the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
429 ;; same binding as another key in the keymap, without knowing what the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
430 ;; binding is in advance; instead, we find it with `lookup-key'. This
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
431 ;; way, if the binding of C-s changes (e.g. to a different function) but
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
432 ;; the meaning is basically the same, we automatically do the right thing.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
433 ;; If we put in the actual binding, which is 'isearch-repeat-forward,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
434 ;; this automatic tracking wouldn't happen.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
435 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
436 ;; TIP: To find out what the (lookup-key ...) expression evaluates to,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
437 ;; move just to the right of the closing paren and type C-x C-e.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
438
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
439 (global-set-key 'f10 'isearch-forward)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
440 (define-key isearch-mode-map 'f10 (lookup-key isearch-mode-map "\C-s"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
441 (define-key minibuffer-local-isearch-map 'f10
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
442 (lookup-key minibuffer-local-isearch-map "\C-s"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
443 (global-set-key '(shift f10) 'isearch-backward)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
444 (define-key isearch-mode-map '(shift f10) (lookup-key isearch-mode-map "\C-r"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
445 (define-key minibuffer-local-isearch-map '(shift f10)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
446 (lookup-key minibuffer-local-isearch-map "\C-r"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
447
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
448 ;; Here we define our own function and then bind a key to it.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
449
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
450 (defun start-or-end-kbd-macro ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
451 ;; A doc string. This is optional.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
452 "Start defining a keyboard macro, or stop if we're already defining."
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
453 ;; IMPORTANT: Any function bound to a key MUST have an interactive spec,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
454 ;; usually just the following line:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
455 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
456 (if defining-kbd-macro
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
457 (end-kbd-macro)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
458 (start-kbd-macro nil)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
459
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
460 ;; The macros used to have their place in the function keys, but I
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
461 ;; find that I use them significantly less than the really basic
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
462 ;; things on the function keys. When using a macro, you call the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
463 ;; macro much more than define it, so the setup below makes some
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
464 ;; sense.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
465
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
466 (global-set-key '(shift kp-multiply) 'start-or-end-kbd-macro)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
467 (global-set-key 'kp-multiply 'call-last-kbd-macro) ;; C-x e
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
468
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
469 ;; Note that you can refer to a key sequence either using an ASCII
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
470 ;; string or the "long way", with vectors and conses. You saw above
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
471 ;; (in a comment) the string form for specifying the key sequence `C-x
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
472 ;; C-f', which is "\C-x\C-f". (For those curious, \C-x is just an
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
473 ;; escape sequence that puts a ^X character into the string. Thus,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
474 ;; the string just mentioned really just contains two characters, a ^X
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
475 ;; and a ^F.) The long way to specify the sequence `C-x C-f' would be
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
476 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
477 ;; [(control x) (control f)]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
478 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
479 ;; The long format lets you specify all possible key sequences, while the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
480 ;; string form only lets you specify sequences involving ASCII characters
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
481 ;; and/or modifiers and in fact only a subset of them.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
482 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
483 ;; Other examples are:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
484 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
485 ;; [(control x) n]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
486 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
487 ;; (You can leave out the parens when there is no modifier specified in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
488 ;; the keystroke, and that's normally done.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
489 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
490 ;; [(shift control meta left)]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
491 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
492 ;; (You can put more than one modifier in a keystroke.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
493 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
494 ;; (shift control meta left)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
495 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
496 ;; (This is the same as the previous. when there's only one keystroke in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
497 ;; the sequence, you can leave out the brackets, and that's normally
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
498 ;; done.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
499 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
500 ;; [(control x) (shift button3)]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
501 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
502 ;; (You can refer to mouse buttons just like keys -- apply modifiers,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
503 ;; intermingle them in key sequences, etc. But there's only problem
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
504 ;; here, which is that with the mouse you don't just have one possible
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
505 ;; gesture, like with keys. You'd really like to control button-down,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
506 ;; button-up, button-click (down and up without selecting anything),
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
507 ;; button drag, button double-click, etc. This is normally done by
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
508 ;; binding your key sequence to `mouse-track', and then putting hooks
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
509 ;; onto `mouse-track-click-hook', `mouse-track-drag-up-hook', etc. to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
510 ;; customize the specific behavior.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
511 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
512 ;; 'left
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
513 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
514 ;; (Ultimate reductionism -- no brackets, no parens. This is the form, in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
515 ;; that, that the 'f1, 'f2, etc. took, which where in fact "long"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
516 ;; forms.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
517 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
518 ;; '(control C)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
519 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
520 ;; (You cannot use '(control shift c) here. This applies whenever Shift +
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
521 ;; key translates to a single character. Note also that you can't use
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
522 ;; "\C-C" either; this refers to the non-shifted C-c, just like "\C-c"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
523 ;; would.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
524 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
525 ;; '(control \()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
526 ;; (Put a backslash in front of characters used in Lisp syntax.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
527 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
528 ;; Also, you can find out the name of a key using C-h c. WARNING:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
529 ;; This does not report the correct name of the keys named `delete',
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
530 ;; `backspace', `return', `tab', `space', `escape', and `linefeed'!
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
531 ;; (More correct results can be achieved using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
532 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
533 ;; ESC : (read-key-sequence "foo: ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
534 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
535 ;; .)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
536
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
537 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
538
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
539 ;; Keystrokes to conveniently switch buffers.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
540
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
541 ;; F6 is invaluable for flipping back and forth between two buffers
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
542 ;; you're working with.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
543
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
544 (global-set-key 'f6 'switch-to-other-buffer) ;; M-C-l
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
545
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
546 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
547
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
548 ;; Other text keystrokes.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
549
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
550 ;; Make a keystroke to insert a literal TAB character. (`C-q TAB' is
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
551 ;; annoying because difficult to repeat.) Note that this does not work
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
552 ;; in TTY frames, where TAB and Shift-TAB are indistinguishable.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
553 (define-key global-map '(shift tab) 'tab-to-tab-stop)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
554
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
555 ;; Toggle auto-filling. Useful with text but annoying with code. You
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
556 ;; can manually fill with M-q.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
557 (global-set-key '(meta f9) 'auto-fill-mode)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
558
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
559 ;; You cannot say '(meta shift t) here -- see above.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
560 (if (fboundp 'transpose-line-down)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
561 (global-set-key '(meta T) 'transpose-line-down))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
562 (if (fboundp 'transpose-line-up)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
563 (global-set-key '(control T) 'transpose-line-up))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
564
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
565 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
566
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
567 ;; Rearrange some inconvenient bindings.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
568
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
569 ;; ESC ESC ESC is a useful command, but too long. ESC ESC would be
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
570 ;; much more logical, but interferes with Meta + keypad/arrow keys on
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
571 ;; TTY's. But most people only use window systems and no such problem
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
572 ;; exists there, so set up the more logical binding there.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
573 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
574 ;; Note also the use of if vs. cond/when/unless/or/and to express
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
575 ;; conditional statements. The difference is purely stylistic.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
576
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
577 (when (console-on-window-system-p)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
578 (global-set-key '(meta escape) 'keyboard-escape-quit)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
579 (define-key isearch-mode-map '(meta escape) 'isearch-cancel))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
580
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
581 ;; The standard definition of C-z causes iconification on window
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
582 ;; systems, which is both useless and annoying. Instead, bind it to a
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
583 ;; useful command that's not on any keys. (This also makes a neat
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
584 ;; parallelism with M-z, which does zap-to-char.) Don't override the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
585 ;; TTY binding, which does "Suspend". If you want this new binding on
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
586 ;; TTY's, and can train yourself to use C-x C-z to suspend, then
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
587 ;; remove or comment out the `when' statement. (Here's the proper way
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
588 ;; to comment out such a statement:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
589 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
590 ;; ;(when (console-on-window-system-p)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
591 ;; (global-set-key "\C-z" 'zap-up-to-char)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
592 ;; ; )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
593 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
594 ;; To do this, I first moved the closing paren to a new line,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
595 ;; reindented with TAB, then added the semicolons.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
596
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
597 (when (console-on-window-system-p)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
598 (global-set-key "\C-z" 'zap-up-to-char))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
599
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
600 ;; When not on a TTY, remove the binding of C-x C-c, which normally
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
601 ;; exits XEmacs. It's easy to hit this by mistake, and that can be
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
602 ;; annoying. You can always quit with the "Exit XEmacs" option on the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
603 ;; File menu.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
604
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
605 (when (console-on-window-system-p)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 558
diff changeset
606 (global-set-key "\C-x\C-c"
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 558
diff changeset
607 #'(lambda () (interactive)
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 558
diff changeset
608 (beep)
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 558
diff changeset
609 (message "Use the \"File/Exit XEmacs\" menu item to exit XEmacs"))))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
610
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
611 ;; Make C-k always delete the whole line, which is what most people want,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
612 ;; anyway.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
613 (setq kill-whole-line 'always)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
614 ;; M-k does the old behavior (kill to end of line).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
615 (global-set-key '(meta k) #'(lambda ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
616 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
617 (if (fboundp 'historical-kill-line)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
618 (call-interactively #'historical-kill-line)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
619 (let ((kill-whole-line nil))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
620 (call-interactively #'kill-line)))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
621 ;; and Meta-Shift-K does what used to be on M-k, and should
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
622 ;; (hopefully) even work under TTY's.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
623 (global-set-key '(meta K) 'kill-sentence)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
624
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
625 ;; Make sure we get Windows-like shifted-motion key selection behavior
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
626 ;; on recent XEmacs versions.
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
627 (cond ((boundp 'shifted-motion-keys-select-region)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
628 (setq shifted-motion-keys-select-region t))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
629 ;; otherwise, try the pc-select package --
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
630 ((Init-safe-require 'pc-select)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
631 (pc-select-mode 1)))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
632
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
633 ;; The following commented-out code rearranges the keymap in an
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
634 ;; unconventional but extremely useful way for programmers. Parens
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
635 ;; and braces are both available without using the shift key (using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
636 ;; the bracket keys and f11/f12, respectively). Brackets (much less
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
637 ;; used) are the shifted versions of the new paren keys (i.e. where
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
638 ;; the braces normally are).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
639 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
640 ;; The idea for this comes from Jamie Zawinski.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
641 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
642 ;; Also make a convenient keystroke for _, used constantly in C code.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
643 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
644 ;; NOTE: you can (semi-) conveniently uncomment a region using
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
645 ;; C-u M-x comment-region, or the "Uncomment Region" menu item on the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
646 ;; Lisp menu in new enough versions of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
647
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
648 ;(keyboard-translate ?[ ?()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
649 ;(keyboard-translate ?] ?))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
650 ;(keyboard-translate ?{ ?[)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
651 ;(keyboard-translate ?} ?])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
652 ;;; We don't use `keyboard-translate' for these because it messes up
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
653 ;;; bindings for M-F9 and the like.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
654 ;(define-key key-translation-map 'f11 "{")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
655 ;(define-key key-translation-map 'f12 "}")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
656 ;(define-key key-translation-map 'f9 "_")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
657
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
658
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
659 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
660
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
661 ;; Useful programming-related keystrokes.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
662
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
663 (defun describe-foo-at-point ()
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
664 "Show the documentation of the Elisp function and variable near point.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
665 This checks in turn:
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
666
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
667 -- for a function name where point is
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
668 -- for a variable name where point is
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
669 -- for a surrounding function call
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
670 "
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
671 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
672 (let (sym)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
673 ;; sigh, function-at-point is too clever. we want only the first half.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
674 (cond ((setq sym (ignore-errors
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
675 (with-syntax-table emacs-lisp-mode-syntax-table
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
676 (save-excursion
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
677 (or (not (zerop (skip-syntax-backward "_w")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
678 (eq (char-syntax (char-after (point))) ?w)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
679 (eq (char-syntax (char-after (point))) ?_)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
680 (forward-sexp -1))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
681 (skip-chars-forward "`'")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
682 (let ((obj (read (current-buffer))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
683 (and (symbolp obj) (fboundp obj) obj))))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
684 (describe-function sym))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
685 ((setq sym (variable-at-point)) (describe-variable sym))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
686 ;; now let it operate fully -- i.e. also check the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
687 ;; surrounding sexp for a function call.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
688 ((setq sym (function-at-point)) (describe-function sym)))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
689
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
690 (global-set-key '(shift f4) 'next-error) ;; C-x `
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
691 (global-set-key '(control f4) 'previous-error)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
692 (global-set-key '(shift f5) 'find-library)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
693 (global-set-key '(control f5) 'find-function)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
694 (global-set-key '(meta f5) 'find-variable)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
695 (global-set-key '(shift f11) 'describe-foo-at-point)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
696 (global-set-key '(control f11) 'eval-last-sexp)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
697 ;; Edebug is a source-level debugger for Emacs Lisp programs. Put
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
698 ;; the cursor at the end of a function definition and "instrument" it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
699 ;; with this command; then, you can single step through it the next
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
700 ;; time it's run.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
701 (global-set-key '(meta f11) 'edebug-defun)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
702 (global-set-key '(meta f12) 'add-change-log-entry)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
703
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
704 ;; This nicely parallels M-*, which pops the tag stack. See below for
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
705 ;; how to set up tags.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
706 (global-set-key '(control *) 'find-tag-at-point)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
707
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
708 ;; Define a function to conveniently determine where time is being
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
709 ;; spent when executing commands or Lisp code.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
710 (defun toggle-profiling ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
711 "Start profiling, or stop it and print results.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
712 This lets you figure out where time is being spent when executing Lisp code."
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
713 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
714 (if (profiling-active-p)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
715 (progn
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
716 (stop-profiling)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
717 (message "...Finished profiling")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
718 (profile-results))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
719 (message "Profiling...")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
720 (clear-profiling-info)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
721 (start-profiling)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
722
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
723 ;; Note that sequences of C-c plus a letter are specifically
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
724 ;; reserved for users and should never be bound by any packages.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
725
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
726 (global-set-key "\C-cp" 'toggle-profiling)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
727
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
728 ;; LISPM bindings of Control-Shift-C and Control-Shift-E.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
729 ;; See comment above about bindings like this.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
730 (define-key emacs-lisp-mode-map '(control C) 'compile-defun)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
731 (define-key emacs-lisp-mode-map '(control E) 'eval-defun)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
732
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
733 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
734
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
735 ;; Numeric keypad.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
736
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
737 ;; The numeric keypad as a whole is underused, and it's a good source
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
738 ;; of keys to bind to commands. Here we add some useful bindings.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
739 ;; Because this is a sample file and I want to avoid unpleasant
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
740 ;; surprises for novices, I don't actually bind the shared
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
741 ;; numeric/cursor-motion keys because
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
742 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
743 ;; (a) someone keypads don't have separate motion keys (e.g. laptops?), and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
744 ;; (b) TTY's and some X servers might not distinguish the regular and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
745 ;; numeric-keypad motion keys.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
746
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
747 ;; `kill-current-buffer' (defined below) deletes the current
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
748 ;; buffer. (Don't worry, you will be prompted to save if it's
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
749 ;; modified.) By repeatedly pressing keypad-minus, you can
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
750 ;; conveniently reduce the number of open buffers to a manageable size
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
751 ;; after you've opened a whole bunch of files and finished working on
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
752 ;; them. Shift plus keypad-minus kills both the current buffer and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
753 ;; its window, and Control plus keypad-minus kills just the current
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
754 ;; window.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
755
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
756 (global-set-key 'kp-subtract 'kill-current-buffer)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
757 (global-set-key '(shift kp-subtract) 'kill-current-buffer-and-window)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
758 (global-set-key '(control kp-subtract) 'delete-window)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
759 ;; Ugh, modes that use `suppress-keymap' and are dumped with XEmacs will
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
760 ;; need their own definition. There is no easy way to fix this.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
761 (define-key help-mode-map 'kp-subtract 'kill-current-buffer)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
762 (define-key help-mode-map '(shift kp-subtract)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
763 'kill-current-buffer-and-window)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
764 (define-key list-mode-map 'kp-subtract 'kill-current-buffer)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
765 (define-key list-mode-map '(shift kp-subtract)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
766 'kill-current-buffer-and-window)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
767
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
768 (defun kill-current-buffer ()
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
769 "Kill the current buffer (prompting if it is modified)."
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
770 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
771 (kill-buffer (current-buffer)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
772
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
773 (defun kill-current-buffer-and-window ()
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
774 "Kill the current buffer (prompting if it is modified) and its window."
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
775 (interactive)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
776 (kill-buffer (current-buffer))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
777 (delete-window))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
778
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
779 (defvar grep-all-files-history nil)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
780
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
781 (defvar grep-all-files-omitted-expressions
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
782 '("*~" "#*" ".#*" ",*" "*.elc" "*.obj" "*.o" "*.exe" "*.dll" "*.lib" "*.a"
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
783 "*.dvi" "*.class" "*.bin")
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
784 "List of expressions matching files to be omitted in `grep-all-files-...'.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
785 Each entry should be a simple name or a shell wildcard expression.")
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
786
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
787 (defvar grep-all-files-omitted-directories '("CVS" "RCS" "SCCS")
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
788 "List of directories not to recurse into in `grep-all-files-...'.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
789 Each entry should be a simple name or a shell wildcard expression.")
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
790
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
791 (defun construct-grep-all-files-command (find-segment grep-segment)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
792 (let ((omit-annoying
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
793 (mapconcat #'(lambda (wildcard)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
794 (concat "-name '" wildcard "' -or "))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
795 grep-all-files-omitted-expressions
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
796 "")))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
797 (cond ((eq grep-find-use-xargs 'gnu)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
798 (format "find . %s %s -type f -print0 | xargs -0 -e %s"
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
799 find-segment omit-annoying grep-segment))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
800 (grep-find-use-xargs
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
801 (format "find . %s %s -type f -print | xargs %s"
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
802 find-segment omit-annoying grep-segment))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
803 (t
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
804 (format "find . %s %s -type f -exec %s {} /dev/null \\;"
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
805 find-segment omit-annoying grep-segment)))))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
806
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
807 (defun grep-all-files-in-current-directory (command)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
808 "Run `grep' in all non-annoying files in the current directory.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
809 `Non-annoying' excludes backup files, autosave files, CVS merge files, etc.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
810 More specifically, this is controlled by `grep-all-files-omitted-expressions'.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
811
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
812 This function does not recurse into subdirectories. If you want this,
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
813 use \\[grep-all-files-in-current-directory-and-below]."
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
814 (interactive
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
815 (progn
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
816 (require 'compile)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
817 (list (read-shell-command "Run grep (like this): "
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
818 grep-command 'grep-all-files-history))))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
819 (require 'compile)
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
820 (grep (construct-grep-all-files-command
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
821 "-name . -or -type d -prune -or" command)))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
822
479
52626a2f02ef [xemacs-hg @ 2001-04-20 11:31:53 by ben]
ben
parents: 464
diff changeset
823 (defun grep-all-files-in-current-directory-and-below (command)
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
824 "Run `grep' in all non-annoying files in the current directory and below.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
825 `Non-annoying' excludes backup files, autosave files, CVS merge files, etc.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
826 More specifically, this is controlled by `grep-all-files-omitted-expressions'.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
827
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
828 This function recurses into subdirectories. If you do not want this,
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
829 use \\[grep-all-files-in-current-directory]."
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
830 (interactive
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
831 (progn
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
832 (require 'compile)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
833 (list (read-shell-command "Run grep (like this): "
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
834 grep-command 'grep-all-files-history))))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
835 (require 'compile)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
836 (grep (construct-grep-all-files-command
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
837 ;; prune all specified directories.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
838 (mapconcat #'(lambda (wildcard)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
839 (concat "-name '" wildcard "' -prune -or "))
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
840 grep-all-files-omitted-directories
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
841 "")
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
842 command)))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
843
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
844 (defun clear-select ()
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
845 "Repeatedly select ever larger balanced expressions around the cursor.
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
846 Once you have such an expression marked, you can expand to the end of
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
847 the following expression with \\[mark-sexp] and to the beginning of the
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
848 previous with \\[backward-sexp]."
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
849 (interactive "_") ;this means "preserve the active region after this command"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
850 (backward-up-list 1)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
851 (let ((end (save-excursion (forward-sexp) (point))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
852 (push-mark end nil t)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
853
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
854 ;; #### no kp-divide because it doesn't (currently) work on MS Windows
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
855 ;; -- always reports as /. #### this should be fixable.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
856 (global-set-key 'kp-add 'query-replace)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
857 (global-set-key '(shift kp-add) 'query-replace-regexp)
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
858 (global-set-key '(control kp-add) 'grep-all-files-in-current-directory)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
859 (global-set-key '(meta kp-add) 'grep-all-files-in-current-directory-and-below)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
860 (global-set-key 'clear 'clear-select)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
861 ;; Note that you can use a "lambda" expression (an anonymous function)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
862 ;; in place of a function name. This function would be called
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
863 ;; `pop-local-mark' and lets you repeatedly cycle back through recent
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
864 ;; marks (marks are set whenever you begin a selection, begin a
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
865 ;; successful search, are about to jump to the beginning or end of the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
866 ;; buffer, etc.).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
867 (global-set-key 'kp-enter (lambda () (interactive) (set-mark-command t)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
868 (global-set-key '(shift kp-enter) 'repeat-complex-command)
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
869 (global-set-key 'pause 'repeat-complex-command) ;; useful on Windows-style kbds
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
870 (global-set-key '(control kp-enter) 'eval-expression)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
871
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
872 ;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
873
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
874 ;; Misc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
875
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
876 ;; If you want button2 to insert the selected text
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
877 ;; at point (where the text cursor is), instead of at the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
878 ;; position clicked, uncomment the following:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
879
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
880 ;(setq mouse-yank-at-point t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
881
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
882 ;; If you like the FSF Emacs binding of button3 (single-click
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
883 ;; extends the selection, double-click kills the selection),
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
884 ;; uncomment the following:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
885
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
886 ;(define-key global-map 'button3 'mouse-track-adjust)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
887
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
888 ;(add-hook 'mouse-track-click-hook
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
889 ; (lambda (event count)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
890 ; (if (or (/= (event-button event) 3)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
891 ; (/= count 2))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
892 ; nil ;; do the normal operation
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
893 ; (kill-region (point) (mark))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
894 ; t ;; don't do the normal operations.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
895 ; )))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
896
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
897 ;; Uncomment this to enable "sticky modifier keys". With sticky
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
898 ;; modifier keys enabled, you can press and release a modifier key
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
899 ;; before pressing the key to be modified, like how the ESC key works
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
900 ;; always. If you hold the modifier key down, however, you still get
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
901 ;; the standard behavior. I personally think this is the best thing
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
902 ;; since sliced bread (and a *major* win when it comes to reducing
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
903 ;; Emacs pinky), but it's disorienting at first so I'm not enabling it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
904 ;; here by default.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
905
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
906 ;(setq modifier-keys-are-sticky t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
907
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
908 ;; Enable the command `narrow-to-region' ("C-x n n"). It's a useful
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
909 ;; command, but possibly confusing to a new user, so it's disabled by
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
910 ;; default.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
911 (put 'narrow-to-region 'disabled nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
912
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
913 ;; Enable obvious hyperlink following with button1.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
914 (setq Info-button1-follows-hyperlink t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
915
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
916
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
917 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
918 ;; Change Some Basic Behaviors ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
919 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
920
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
921 ;; Change the values of some variables.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
922 ;; (t means true; nil means false.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
923 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
924 ;; Use C-h v or `Help->Commands, Variables, Keys->Describe Variable...'
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
925 ;; to find out what these variables mean.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
926 (setq
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
927 find-file-compare-truenames t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
928 minibuffer-max-depth nil
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
929 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
930
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
931 ;; When running ispell, consider all 1-3 character words as correct.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
932 (setq ispell-extra-args '("-W" "3"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
933
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
934 ;;; pending-delete-mode causes typed text to replace a selection,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
935 ;;; rather than append -- standard behavior under all window systems
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
936 ;;; nowadays.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
937
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
938 (if (fboundp 'pending-delete-mode)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
939 (pending-delete-mode 1))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
940
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
941 ;;; NOTE: In this context, `windows-nt' actually refers to all MS
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
942 ;;; Windows operating systems!
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
943 (when (eq system-type 'windows-nt)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
944 ;; Get mail working under Windows.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
945 (setq send-mail-function 'smtpmail-send-it)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
946 (setq smtpmail-debug-info t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
947 ;; Substitute your info here.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
948 ;(setq user-mail-address "ben@xemacs.org")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
949 ;(setq user-full-name "Ben Wing")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
950 ;(setq smtpmail-smtp-server "pop.tcsn.uswest.net")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
951
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
952 ;; Make Meta+accelerator traverse to the menu in new enough XEmacs
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
953 ;; versions. Note that this only overrides Meta bindings that would
464
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
954 ;; actually invoke a menu, and the most common commands that are
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
955 ;; overridden have preferred alternative bindings using the arrow
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
956 ;; keys. You can always access the overridden ones using
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
957 ;; Shift+Meta+Key. (Note that "Alt" and "Meta" normally refer to the
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
958 ;; same key, except on some Sun keyboards [where "Meta" is actually
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
959 ;; labelled with a diamond] or if you have explicitly made them
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
960 ;; different under X Windows using `xmodmap'.)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
961 ;;
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
962 ;; More specifically, the following bindings are overridden:
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
963 ;;
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
964 ;; M-f (use C-right or Sh-M-f instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
965 ;; M-e (use M-C-right or Sh-M-e instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
966 ;; M-v (use Prior aka PgUp or Sh-M-v instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
967 ;; M-m (use Sh-M-m instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
968 ;; M-t (use Sh-M-t instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
969 ;; M-o (normally undefined)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
970 ;; M-b (use C-left or Sh-M-b instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
971 ;; M-h (use M-e h or Sh-M-h instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
972 ;; in Lisp mode, M-l (use Sh-M-l instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
973 ;; in C mode, M-c (use Sh-M-c instead)
5aa1854ad537 Import from CVS: tag r21-2-47
cvs
parents: 462
diff changeset
974
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
975 (setq menu-accelerator-enabled 'menu-force)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
976
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
977 ;; Make Cygwin `make' work inside a shell buffer.
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
978 (if (boundp 'setenv) (setenv "MAKE_MODE" "UNIX")))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
979
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
980 ;; This shows how to set up the XEmacs side of tags. (To create the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
981 ;; TAGS table, use the `etags' program found in the XEmacs bin
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
982 ;; directory. Run it in the root directory of your source tree and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
983 ;; specify all source and include files on the command line.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
984 ;(setq tag-table-alist
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
985 ; '(
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
986 ; ;; Everywhere in the /src/xemacs/gui/ source tree will use the TAGS
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
987 ; ;; file in /src/xemacs/gui/.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
988 ; ("/src/xemacs/gui/" . "/src/xemacs/gui/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
989 ; ;; Everywhere in the /src/xemacs/mule/ source tree will use the TAGS
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
990 ; ;; file in /src/xemacs/mule/.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
991 ; ("/src/xemacs/mule/" . "/src/xemacs/mule/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
992 ; ;; etc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
993 ; ("/src/xemacs/fixup/" . "/src/xemacs/fixup/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
994 ; ("/src/emacs/emacs-20.6/" . "/src/emacs/emacs-20.6/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
995 ; ("/src/xemacs/latest/" . "/src/xemacs/latest/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
996 ; ;; Everywhere else will use the TAGS file in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
997 ; ;; /src/xemacs/fixup/.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
998 ; ("" . "/src/xemacs/fixup/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
999 ; ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1000
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1001
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1002 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1003 ;; Change Some Aspects of GUI Appearance ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1004 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1005
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1006 ;; Changes the text in the window title bar, to switch to MS Windows
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1007 ;; format (filename goes first, for best identification in icons) and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1008 ;; add the version and full executable path. (However, it is not
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1009 ;; changed unless it currently has the default value, to avoid
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1010 ;; interfering with a -wn command line argument I may have started
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1011 ;; XEmacs with.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1012
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1013 (if (or (equal frame-title-format "%S: %b")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1014 (equal frame-title-format "%b - XEmacs"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1015 (setq frame-title-format
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1016 (concat "%b - XEmacs "
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1017 (progn (string-match "\\(.*?\\)\\( XEmacs Lucid\\)?$"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1018 emacs-version)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1019 (match-string 1 emacs-version))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1020 " [" invocation-directory invocation-name "]")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1021
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1022 ;; Load some nifty sounds that will replace the default beep.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1023 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1024 ;; (Note that sampled sounds only work if XEmacs was compiled with
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1025 ;; sound support and we're running on MS Windows, on a machine which
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1026 ;; has a NetAudio or ESD server, or on the console of a Linux, Sparc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1027 ;; HP, or SGI machine. Otherwise, you just get the standard beep.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1028
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1029 (cond ((and (fboundp 'load-default-sounds)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1030 (or (and (getenv "DISPLAY")
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1031 (string-match ":0" (getenv "DISPLAY")))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1032 (and (eq (console-type) 'mswindows)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1033 (device-sound-enabled-p))))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1034 (condition-case nil
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1035 (progn
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1036 (load-default-sounds)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1037 ;; On Windows, at least, the sound "quiet-beep", which is normally
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1038 ;; given the symbolic name `quiet' and is used for Quit and such,
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1039 ;; is just totally disgusting. So make this name correspond to a
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1040 ;; more innocuous sound.
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1041 (load-sound-file "drum-beep" 'quiet 80))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1042 (error nil)))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1043 (t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1044 (setq bell-volume 40)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1045 (setq sound-alist
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1046 (append sound-alist '((no-completion :pitch 500))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1047 ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1048
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1049 ;; Change the continuation glyph face so it stands out more
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1050 (make-face-bold (glyph-face continuation-glyph))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1051
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1052 ;; Change the pointer used during garbage collection.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1053 ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1054 ;; Note that this pointer image is rather large as pointers go,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1055 ;; and so it won't work on some X servers (such as the MIT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1056 ;; R5 Sun server) because servers may have lamentably small
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1057 ;; upper limits on pointer size.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1058 ;;(if (featurep 'xpm)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1059 ;; (set-glyph-image gc-pointer-glyph
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1060 ;; (expand-file-name "trash.xpm" data-directory)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1061
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1062 ;; Here's another way to do that: it first tries to load the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1063 ;; pointer once and traps the error, just to see if it's
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1064 ;; possible to load that pointer on this system; if it is,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1065 ;; then it sets gc-pointer-glyph, because we know that
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1066 ;; will work. Otherwise, it doesn't change that variable
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1067 ;; because we know it will just cause some error messages.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1068 (if (featurep 'xpm)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1069 (let ((file (expand-file-name "recycle.xpm" data-directory)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1070 (if (condition-case nil
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1071 ;; check to make sure we can use the pointer.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1072 (make-image-instance file nil
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1073 '(pointer))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1074 (error nil)) ; returns nil if an error occurred.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1075 (set-glyph-image gc-pointer-glyph file))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1076
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1077 ;(when (featurep 'menubar)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1078 ; ;; Add `dired' to the File menu
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1079 ; (add-menu-button '("File") ["Edit Directory" dired])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1080
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1081 ; ;; Here's a way to add scrollbar-like buttons to the menubar
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1082 ; (add-menu-button nil ["Top" beginning-of-buffer])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1083 ; (add-menu-button nil ["<<<" scroll-down])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1084 ; (add-menu-button nil [" . " recenter])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1085 ; (add-menu-button nil [">>>" scroll-up])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1086 ; (add-menu-button nil ["Bot" end-of-buffer]))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1087
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1088 ;; Here's a cute hack that shows how to programmatically change some
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1089 ;; text colors. It changes the background color of the window if it's
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1090 ;; not on the local machine, or if it's running as root:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1091
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1092 ;; local emacs background: whitesmoke [i.e. the default color]
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1093 ;; remote emacs background: palegreen1
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1094 ;; root emacs background: coral2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1095
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1096 ;; Uncomment to enable.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1097
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1098 ;(cond
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1099 ; ((and running-xemacs
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1100 ; (console-on-window-system-p)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1101 ; ;; this does not make much sense on Windows.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1102 ; (not (eq system-type 'windows-nt)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1103 ; (let* ((root-p (eq 0 (user-uid)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1104 ; (dpy (or (getenv "DISPLAY") ""))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1105 ; (remote-p (not
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1106 ; (or (string-match "^\\(\\|unix\\|localhost\\):" dpy)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1107 ; (let ((s (system-name)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1108 ; (if (string-match "\\.\\(netscape\\|mcom\\)\\.com" s)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1109 ; (setq s (substring s 0 (match-beginning 0))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1110 ; (string-match (concat "^" (regexp-quote s)) dpy)))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1111 ; (bg (cond (root-p "coral2")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1112 ; (remote-p "palegreen1")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1113 ; (t nil))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1114 ; (cond (bg
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1115 ; (let ((def (color-name (face-background 'default)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1116 ; (faces (face-list)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1117 ; (while faces
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1118 ; (let ((obg (face-background (car faces))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1119 ; (if (and obg (equal def (color-name obg)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1120 ; (set-face-background (car faces) bg)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1121 ; (setq faces (cdr faces)))))))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1122
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1123
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1124 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1125 ;; Changing the Modeline ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1126 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1127
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1128 ;; Enable line numbers and column numbers. This is done in C code now
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1129 ;; and is very fast.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1130 (line-number-mode 1)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1131 (column-number-mode 1)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1132
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1133 ;; Rearrange the modeline so that everything is to the left of the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1134 ;; long list of minor modes, which is relatively unimportant but takes
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1135 ;; up so much room that anything to the right is obliterated.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1136
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1137 (setq-default
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1138 modeline-format
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1139 (list
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1140 ""
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1141 (if (boundp 'modeline-multibyte-status) 'modeline-multibyte-status "")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1142 (cons modeline-modified-extent 'modeline-modified)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1143 (cons modeline-buffer-id-extent
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1144 (list (cons modeline-buffer-id-left-extent
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1145 (cons 15 (list
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1146 (list 'line-number-mode "L%l ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1147 (list 'column-number-mode "C%c ")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1148 (cons -3 "%p"))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1149 (cons modeline-buffer-id-right-extent "%17b")))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1150 " "
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1151 'global-mode-string
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1152 " %[("
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1153 (cons modeline-minor-mode-extent
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1154 (list "" 'mode-name 'minor-mode-alist))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1155 (cons modeline-narrowed-extent "%n")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1156 'modeline-process
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1157 ")%]----"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1158 "%-"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1159 ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1160
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1161 ;; Get rid of modeline information taking up too much space -- in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1162 ;; particular, minor modes that are always enabled.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1163 (setq pending-delete-modeline-string "")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1164 (setq filladapt-mode-line-string "")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1165 ;; lazy-lock doesn't have a variable for its modeline name, so we have
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1166 ;; to do a bit of surgery.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1167 (and (assoc 'lazy-lock-mode minor-mode-alist)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1168 (setcdr (cdr (cadr (assoc 'lazy-lock-mode minor-mode-alist))) ""))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1169
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1170
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1171
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1172 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1173 ;; Customization of Specific Packages ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1174 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1175
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1176
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1177 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1178 ;;; Load gnuserv, which will allow you to connect to XEmacs sessions
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1179 ;;; using `gnuclient'.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1180
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1181 ;; If you never run more than one XEmacs at a time, you might want to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1182 ;; always start gnuserv. Otherwise it is preferable to specify
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1183 ;; `-f gnuserv-start' on the command line to one of the XEmacsen.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1184 ; (gnuserv-start)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1185
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1186
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1187 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1188 ;;; Load efs, which uses the FTP protocol as a pseudo-filesystem.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1189 ;;; When this is loaded, the pathname syntax /user@host:/remote/path
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1190 ;;; refers to files accessible through ftp.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1191 ;;;
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1192 (Init-safe-require 'dired)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1193
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1194 (or (Init-safe-require 'efs-auto) (Init-safe-require 'ange-ftp))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1195
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1196 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1197 ;;; Load the default-dir.el package which installs fancy handling of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1198 ;;; the initial contents in the minibuffer when reading file names.
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1199 ;; #### but it seems to cause some breakage.
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1200 ;(Init-safe-require 'default-dir))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1201
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1202 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1203 ;;; Put all of your autosave files in one place, instead of scattering
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1204 ;;; them around the file system. This has many advantages -- e.g. it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1205 ;;; will eliminate slowdowns caused by editing files on a slow NFS
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1206 ;;; server. (*Provided* that your home directory is local or on a
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1207 ;;; fast server! If not, pick a value for `auto-save-directory' that
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1208 ;;; is fast fast fast!)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1209 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1210 ;;; Unfortunately, the code that implements this (auto-save.el) is
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1211 ;;; broken on Windows prior to 21.4.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1212 (unless (and (eq system-type 'windows-nt)
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1213 (not (emacs-version>= 21 4)))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1214 (setq auto-save-directory (expand-file-name "~/.autosave/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1215 auto-save-directory-fallback auto-save-directory
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1216 auto-save-hash-p nil
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1217 efs-auto-save t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1218 efs-auto-save-remotely nil
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1219 ;; now that we have auto-save-timeout, let's crank this up
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1220 ;; for better interactive response.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1221 auto-save-interval 2000
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1222 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1223 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1224
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1225
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1226 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1227 ;;; cc-mode (the mode you're in when editing C, C++, and Objective C files)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1228
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1229 ;; Tell cc-mode not to check for old-style (K&R) function declarations.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1230 ;; This speeds up indenting a lot.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1231 (setq c-recognize-knr-p nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1232
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1233 ;; Change the indentation amount to 4 spaces instead of 2.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1234 ;; You have to do it in this complicated way because of the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1235 ;; strange way the cc-mode initializes the value of `c-basic-offset'.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1236 ;; (add-hook 'c-mode-hook (lambda () (setq c-basic-offset 4)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1237
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1238
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1239 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1240 ;;; Load a partial-completion mechanism, which makes minibuffer completion
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1241 ;;; search multiple words instead of just prefixes; for example, the command
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1242 ;;; `M-x byte-compile-and-load-file RET' can be abbreviated as `M-x b-c-a RET'
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1243 ;;; because there are no other commands whose first three words begin with
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1244 ;;; the letters `b', `c', and `a' respectively.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1245 ;;;
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1246 (Init-safe-require 'completer)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1247
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1248
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1249 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1250 ;;; Load crypt, which is a package for automatically decoding and reencoding
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1251 ;;; files by various methods - for example, you can visit a .Z or .gz file,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1252 ;;; edit it, and have it automatically re-compressed when you save it again.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1253 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1254 (setq crypt-encryption-type 'pgp ; default encryption mechanism
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1255 crypt-confirm-password t ; make sure new passwords are correct
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1256 ;crypt-never-ever-decrypt t ; if you don't encrypt anything, set this to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1257 ; tell it not to assume that "binary" files
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1258 ; are encrypted and require a password.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1259 )
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1260 (Init-safe-require 'crypt)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1261
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1262
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1263 ;;; ********************
1959
b10161763edf [xemacs-hg @ 2004-03-20 12:51:25 by adrian]
adrian
parents: 863
diff changeset
1264 ;;; Filladapt is an adaptive text-filling package. When it is enabled it
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1265 ;;; makes filling (e.g. using M-q) much much smarter about paragraphs
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1266 ;;; that are indented and/or are set off with semicolons, dashes, etc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1267
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1268 (Init-safe-require 'filladapt)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1269 (setq-default filladapt-mode t)
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1270 (when (fboundp 'turn-off-filladapt-mode)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1271 (add-hook 'c-mode-hook 'turn-off-filladapt-mode)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1272 (add-hook 'outline-mode-hook 'turn-off-filladapt-mode))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1273
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1274
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1275 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1276 ;;; Font-Lock is a syntax-highlighting package. When it is enabled and you
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1277 ;;; are editing a program, different parts of your program will appear in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1278 ;;; different fonts or colors. For example, with the code below, comments
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1279 ;;; appear in red italics, function names in function definitions appear in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1280 ;;; blue bold, etc. The code below will cause font-lock to automatically be
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1281 ;;; enabled when you edit C, C++, Emacs-Lisp, and many other kinds of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1282 ;;; programs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1283 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1284 ;;; The "Options" menu has some commands for controlling this as well.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1285 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1286 (cond (running-xemacs
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1287
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1288 ;; The commented-out code below is an example of setting up custom
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1289 ;; font-lock colors.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1290
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1291 ; ;; If you want the default colors, you could do this:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1292 ; ;; (setq font-lock-use-default-fonts nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1293 ; ;; (setq font-lock-use-default-colors t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1294 ; ;; but I want to specify my own colors, so I turn off all
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1295 ; ;; default values.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1296 ; (setq font-lock-use-default-fonts nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1297 ; (setq font-lock-use-default-colors nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1298
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1299 (Init-safe-require 'font-lock)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1300
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1301 ; ;; Mess around with the faces a bit. Note that you have
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1302 ; ;; to change the font-lock-use-default-* variables *before*
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1303 ; ;; loading font-lock, and wait till *after* loading font-lock
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1304 ; ;; to customize the faces.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1305
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1306 ; ;; string face is green
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1307 ; (set-face-foreground 'font-lock-string-face "forest green")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1308
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1309 ; ;; comments are italic and red; doc strings are italic
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1310 ; (set-face-font 'font-lock-comment-face [italic])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1311 ; ;; Underlining comments looks terrible on tty's
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1312 ; (set-face-underline-p 'font-lock-comment-face nil 'global 'tty)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1313 ; (set-face-highlight-p 'font-lock-comment-face t 'global 'tty)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1314 ; (copy-face 'font-lock-comment-face 'font-lock-doc-string-face)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1315 ; (set-face-foreground 'font-lock-comment-face "red")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1316
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1317 ; ;; function names are bold and blue
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1318 ; (set-face-font 'font-lock-function-name-face [bold])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1319 ; (set-face-foreground 'font-lock-function-name-face "blue")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1320
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1321 ; ;; misc. faces
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1322 ; (set-face-font 'font-lock-preprocessor-face [bold])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1323 ; (set-face-font 'font-lock-type-face [italic])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1324 ; (set-face-font 'font-lock-keyword-face [bold])
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1325 ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1326
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1327
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1328 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1329 ;;; lazy-lock is a package which speeds up the highlighting of files
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1330 ;;; by doing it "on-the-fly" -- only the visible portion of the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1331 ;;; buffer is fontified. The results may not always be quite as
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1332 ;;; accurate as using full font-lock or fast-lock, but it's *much*
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1333 ;;; faster. No more annoying pauses when you load files.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1334
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1335 (if (fboundp 'turn-on-lazy-lock)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1336 (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock))
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1337
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1338 ;; I personally don't like "stealth mode" (where lazy-lock starts
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1339 ;; fontifying in the background if you're idle for 30 seconds)
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1340 ;; because it takes too long to wake up again.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1341 (setq lazy-lock-stealth-time nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1342
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1343
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1344 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1345 ;;; func-menu is a package that scans your source file for function
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1346 ;;; definitions and makes a menubar entry that lets you jump to any
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1347 ;;; particular function definition by selecting it from the menu. The
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1348 ;;; following code turns this on for all of the recognized languages.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1349 ;;; Scanning the buffer takes some time, but not much.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1350 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1351 ;;; Send bug reports, enhancements etc to:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1352 ;;; David Hughes <ukchugd@ukpmr.cs.philips.nl>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1353 ;;;
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1354 (cond ((and running-xemacs (Init-safe-require 'func-menu))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1355 (global-set-key '(shift f12) 'function-menu)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1356 (add-hook 'find-file-hooks 'fume-add-menubar-entry)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1357 (global-set-key "\C-cl" 'fume-list-functions)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1358 (global-set-key "\C-cg" 'fume-prompt-function-goto)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1359
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1360 ;; The Hyperbole information manager package uses (shift button2) and
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1361 ;; (shift button3) to provide context-sensitive mouse keys. If you
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1362 ;; use this next binding, it will conflict with Hyperbole's setup.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1363 ;; Choose another mouse key if you use Hyperbole.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1364 (global-set-key '(shift button3) 'mouse-function-menu)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1365
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1366 ;; For descriptions of the following user-customizable variables,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1367 ;; type C-h v <variable>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1368 (setq fume-max-items 25
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1369 fume-fn-window-position 3
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1370 fume-auto-position-popup t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1371 fume-display-in-modeline-p t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1372 fume-menubar-menu-name
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1373 (if (fboundp 'submenu-generate-accelerator-spec)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1374 "Function%_s" "Functions")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1375 fume-buffer-name "*Function List*"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1376 fume-no-prompt-on-valid-default nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1377 ))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1378
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1379
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1380 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1381 ;;; MH is a mail-reading system from the Rand Corporation that relies on a
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1382 ;;; number of external filter programs (which do not come with emacs.)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1383 ;;; Emacs provides a nice front-end onto MH, called "mh-e".
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1384 ;;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1385 ;; Bindings that let you send or read mail using MH
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1386 ;(global-set-key "\C-xm" 'mh-smail)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1387 ;(global-set-key "\C-x4m" 'mh-smail-other-window)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1388 ;(global-set-key "\C-cr" 'mh-rmail)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1389
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1390 ;; Customization of MH behavior.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1391 (setq mh-delete-yanked-msg-window t)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1392 (setq mh-yank-from-start-of-msg 'body)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1393 (setq mh-summary-height 11)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1394
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1395 ;; Use lines like the following if your version of MH
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1396 ;; is in a special place.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1397 ;(setq mh-progs "/usr/dist/pkgs/mh/bin.svr4/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1398 ;(setq mh-lib "/usr/dist/pkgs/mh/lib.svr4/")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1399
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1400
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1401 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1402 ;;; resize-minibuffer-mode makes the minibuffer automatically
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1403 ;;; resize as necessary when it's too small to hold its contents.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1404
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1405 (when (fboundp 'resize-minibuffer-mode)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1406 (resize-minibuffer-mode)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1407 (setq resize-minibuffer-window-exactly nil))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1408
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1409
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1410 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1411 ;;; scroll-in-place is a package that keeps the cursor on the same line (and in the same column) when scrolling by a page using PgUp/PgDn.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1412
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1413 (if (Init-safe-require 'scroll-in-place)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 479
diff changeset
1414 (turn-on-scroll-in-place))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1415
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1416
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1417 ;;; ********************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1418 ;;; W3 is a browser for the World Wide Web, and takes advantage of the very
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1419 ;;; latest redisplay features in XEmacs. You can access it simply by typing
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1420 ;;; 'M-x w3'; however, if you're unlucky enough to be on a machine that is
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1421 ;;; behind a firewall, you will have to do something like this first:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1422
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1423 ;(setq w3-use-telnet t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1424 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1425 ; ;; If the Telnet program you use to access the outside world is
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1426 ; ;; not called "telnet", specify its name like this.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1427 ; w3-telnet-prog "itelnet"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1428 ; ;;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1429 ; ;; If your Telnet program adds lines of junk at the beginning
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1430 ; ;; of the session, specify the number of lines here.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1431 ; w3-telnet-header-length 4
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1432 ; )
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1433
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1434 ;;; Inhibit loading of custom-file
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1435
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1436 ;; make-temp-name returns a name which does not refer to an existing file,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1437 ;; and thus the named file is unreadable.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1438 (when Init-inhibit-custom-file-p
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1439 (setq custom-file (make-temp-name "/tmp/non-existent-")))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 771
diff changeset
1440