annotate etc/sample.init.el @ 5797:a1808d52a34a

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