annotate etc/sample.init.el @ 4844:91b3d00e717f

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