annotate etc/sample.init.el @ 589:37fe04af1590

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