Mercurial > hg > xemacs-beta
comparison man/xemacs-faq.texi @ 2417:8b907450718f
[xemacs-hg @ 2004-12-05 08:48:12 by ben]
The section on Troubleshooting (now 2.3) has been completely written and
includes a lot of stuff that is not properly documented anywhere else. A
fair amount of obsolete info has been deleted and I've incorporated the
comments that people (mostly Stephen T) made. Former chapter 3 has been
split up in two, one pertaining to basic I/O and the other to external I/O.
What were formerly chapters 5 and 6 no longer exist as such; the info in
them has been distributed across various other chapters. Old chapter 4 got
split up, part going to the new chapter 4 on external I/O and part going to
the new chapter 5 on the Internet. In this new chapter, stuff not
pertaining to a specific package (e.g. VM or GNUS) was taken out of
package-specific sections and a general mail section was constituted. Part
of old chapter 5 remains in a new chapter 6 devoted to Emacs Lisp and other
advanced stuff, and a section from old chapter 3 on basic init-file Lisp
and some stuff from old chapter 5 on Info. The rest of chapter 5 was just
misc and has gotten scattered to the winds (mostly in chapters 3 and 4).
Old chapter 6 has also gotten quite scattered; there is no longer any
section specifically devoted to Windows except one of the Installation
sections (along with a section specfically devoted to Unix), and the rest
has moved to join the appropriate non-Windows-specific section elsewhere.
A lot of chapters had their sections rearranged and likewise for sections
having entries rearranged, with the intention that the new arrangement
should be more natural. In general I hope that stuff should be much easier
to locate. I also rewrote the entries on the relation between XEmacs and
GNU Emacs on the authors of XEmacs, including lots of info on who wrote
specific subsections. However, this history is certainly not complete; I
hope people will look over this and fix it up as necessary.
author | ben |
---|---|
date | Sun, 05 Dec 2004 08:48:12 +0000 |
parents | e0dc83407d58 |
children | e19aeba465d6 |
comparison
equal
deleted
inserted
replaced
2416:515786aa760a | 2417:8b907450718f |
---|---|
5 @setchapternewpage off | 5 @setchapternewpage off |
6 @c %**end of header | 6 @c %**end of header |
7 @finalout | 7 @finalout |
8 @titlepage | 8 @titlepage |
9 @title XEmacs FAQ | 9 @title XEmacs FAQ |
10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2004/07/05 10:42:30 $ | 10 @subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2004/12/05 08:48:12 $ |
11 @sp 1 | 11 @sp 1 |
12 @author Ben Wing <ben@@xemacs.org> | |
12 @author Tony Rossini <rossini@@u.washington.edu> | 13 @author Tony Rossini <rossini@@u.washington.edu> |
13 @author Ben Wing <ben@@xemacs.org> | |
14 @author Chuck Thompson <cthomp@@xemacs.org> | 14 @author Chuck Thompson <cthomp@@xemacs.org> |
15 @author Steve Baur <steve@@xemacs.org> | 15 @author Steve Baur <steve@@xemacs.org> |
16 @author Andreas Kaempf <andreas@@sccon.com> | 16 @author Andreas Kaempf <andreas@@sccon.com> |
17 @author Christian Nyb@o{} <chr@@mediascience.no> | 17 @author Christian Nyb@o{} <chr@@mediascience.no> |
18 @author Sandra Wambold <wambold@@xemacs.org> | 18 @author Sandra Wambold <wambold@@xemacs.org> |
24 @direntry | 24 @direntry |
25 * FAQ: (xemacs-faq). XEmacs FAQ. | 25 * FAQ: (xemacs-faq). XEmacs FAQ. |
26 @end direntry | 26 @end direntry |
27 @end ifinfo | 27 @end ifinfo |
28 | 28 |
29 @ignore | |
30 ***************************************** | |
31 ***** To update the menus and nodes ***** | |
32 ***************************************** | |
33 | |
34 First, the first argument to @node (the name itself) needs to be correct. | |
35 Use a macro if necessary to update the @node names from the | |
36 @unnumberedsubsec commands. Also note that the command we're about to | |
37 run will not correctly fix up the part of the menu to the right of a ::. | |
38 It will leave existing text in place but not change anything. If you | |
39 make a lot of changes and want to update this semi-automatically, use | |
40 M-x occur to pick out all @unnumberedsubsec lines then do some editing | |
41 magic to coerce them into the right format and cut and paste as necessary: | |
42 | |
43 1. M-x occur @unnumberedsubsec | |
44 2. <select a rectangle including all text before the Q#.#.#> | |
45 3. C-x r t *<space> | |
46 4. go to the top and use the following macro to get the indentation right. | |
47 | |
48 (setq last-kbd-macro (read-kbd-macro | |
49 "C-s : RET : <right> M-x indent- to- column RET 14 RET <home> <down>")) | |
50 | |
51 5. Cut and paste the menus into the detailmenu at the top and | |
52 individual menus at the top of the appropriate chapters. (#### I | |
53 wonder, does texinfo-master-menu generate the detailmenu from the | |
54 individual menus or vice-versa or neither?) | |
55 | |
56 Then, | |
57 | |
58 1. Use the Lisp line below to get the spacing correct for the Q#.#.# | |
59 menu entries. | |
60 | |
61 (set (make-local-variable 'texinfo-column-for-description) 14) | |
62 | |
63 2. C-u C-c C-u m (C-u M-x texinfo-master-menu) will update the menus | |
64 and nodes. However, it appears that even though it tries to | |
65 preserve the existing menu structure as much as possible, it | |
66 doesn't do a perfect job. It messes up in at least two ways: The | |
67 indentation in the part of the main menu above the detailmenu will | |
68 be screwed up, and the #.0 titles will be removed from both the | |
69 detailmenu and the individual chapter menus. In addition, | |
70 sometimes random things get screwed up in individual parts of the | |
71 menus. Therefore: | |
72 | |
73 1. Copy the whole detailmenu beforehand. | |
74 2. Run C-u C-C C-u m to fix up the nodes. | |
75 3. Run `fix-main-menu' and `fix-omitted-menu-lines'. | |
76 4. Check the new detailmenu carefully to see if anything is screwed up | |
77 compared to the old detailmenu you copied. | |
78 5. If so, paste back the appropriate sections and fix up the corresponding | |
79 part of the chapter-specific menu. | |
80 | |
81 (defun fix-main-menu () | |
82 (interactive) | |
83 (save-restriction | |
84 (let (p q) | |
85 (search-forward "@menu") | |
86 (setq p (match-beginning 0)) | |
87 (re-search-forward "^$") | |
88 (setq q (match-end 0)) | |
89 (narrow-to-region p q) | |
90 (goto-char p) | |
91 (while (search-forward ":: " nil t) | |
92 (indent-to-column 26))))) | |
93 | |
94 (defun fix-omitted-menu-lines () | |
95 (interactive) | |
96 (save-excursion | |
97 (loop for x from 1 to 7 do | |
98 (goto-char (point-min)) | |
99 (re-search-forward (format "@unnumberedsec \\(%d.0: .*\\)" x)) | |
100 (let ((line (match-string 1))) | |
101 (search-backward "@menu") | |
102 (forward-line 1) | |
103 (unless (looking-at "[0-9].0:") | |
104 (insert line) | |
105 (insert "\n")) | |
106 (goto-char (point-min)) | |
107 (search-forward "@menu") | |
108 (search-forward (format "Q%d.0.1:" x)) | |
109 (forward-line -1) | |
110 (unless (looking-at "[0-9].0:") | |
111 (insert line) | |
112 (insert "\n")))))) | |
113 | |
114 ***************************************** | |
115 ***** Other work ***** | |
116 ***************************************** | |
117 | |
118 When you've rearranged and renumbered a bunch of nodes, you can get | |
119 the numbers agreeing again. The macro below assumes that the | |
120 unnumberedsubsec number is correct, and fixes up the node to agree. | |
121 Only the first part of the node is fixed and the other parts may still | |
122 be wrong; but they will be fixed as part of | |
123 @code{texinfo-master-menu}. | |
124 | |
125 (setq last-kbd-macro (read-kbd-macro | |
126 "<f1> unnumberedsubsec SPC RET C-s : RET <left> C-x C-x <f3> <home> <up> <C-right> <right> C-s , RET <left> C-x C-x <f4> <home> 2*<down>")) | |
127 @end ignore | |
128 | |
129 | |
29 @node Top, Introduction, (dir), (dir) | 130 @node Top, Introduction, (dir), (dir) |
30 @top XEmacs FAQ | 131 @top XEmacs FAQ |
31 | 132 |
32 This is the guide to the XEmacs Frequently Asked Questions list---a | 133 This is the guide to the XEmacs Frequently Asked Questions list---a |
33 compendium of questions and answers pertaining to one of the finest | 134 compendium of questions and answers pertaining to one of the finest |
75 @end ifset | 176 @end ifset |
76 | 177 |
77 @c end ifset points to CANONICAL | 178 @c end ifset points to CANONICAL |
78 | 179 |
79 @menu | 180 @menu |
80 * Introduction:: Introduction, Policy, Credits. | 181 * Introduction:: Introduction, Policy, Credits. |
81 * Installation:: Installation and Trouble Shooting. | 182 * Installation:: Installation and Troubleshooting. |
82 * Customization:: Customization and Options. | 183 * Display Subsystems:: Basic Display-Related Subsystems. |
83 * Subsystems:: Major Subsystems. | 184 * External Subsystems:: Interfacing with the OS and External Devices. |
84 * Miscellaneous:: The Miscellaneous Stuff. | 185 * Internet:: Connecting to the Internet. |
85 * MS Windows:: XEmacs on Microsoft Windows. | 186 * Advanced:: Advanced Customization Using XEmacs Lisp. |
86 * Current Events:: What the Future Holds. | 187 * Current Events:: What the Future Holds. |
87 * Legacy Versions:: New information about old XEmacsen. | 188 * Legacy Versions:: New information about old XEmacsen. |
88 | 189 |
89 @detailmenu | 190 @detailmenu |
90 | |
91 --- The Detailed Node Listing --- | 191 --- The Detailed Node Listing --- |
92 | 192 |
93 Introduction, Policy, Credits | 193 1 Introduction, Policy, Credits |
94 | 194 |
95 * Q1.0.1:: What is XEmacs? | 195 1.0: Introduction |
96 * Q1.0.2:: What is the current version of XEmacs? | 196 * Q1.0.1:: What is XEmacs? |
97 * Q1.0.3:: Where can I find it? | 197 * Q1.0.2:: What is the current version of XEmacs? |
98 * Q1.0.4:: Why Another Version of Emacs? | 198 * Q1.0.3:: Where can I find it? |
99 * Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? | 199 * Q1.0.4:: Are binaries available? |
100 * Q1.0.6:: Where can I get help? | 200 * Q1.0.5:: How does XEmacs differ from GNU Emacs? |
101 * Q1.0.7:: Where are the mailing lists archived? | 201 * Q1.0.6:: How much does XEmacs differ? |
102 * Q1.0.8:: How do you pronounce XEmacs? | 202 * Q1.0.7:: Is XEmacs "GNU"? |
103 * Q1.0.9:: What does XEmacs look like? | 203 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? |
104 * Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? | 204 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? |
105 * Q1.0.11:: Is there a port of XEmacs to the Macintosh? | 205 * Q1.0.10:: Where can I get help? |
106 * Q1.0.12:: Is there a port of XEmacs to NextStep? | 206 * Q1.0.11:: Where are the mailing lists archived? |
107 * Q1.0.13:: Is there a port of XEmacs to OS/2? | 207 * Q1.0.12:: How do you pronounce XEmacs? |
108 * Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? | 208 * Q1.0.13:: What does XEmacs look like? |
109 | 209 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual? |
110 Policies: | 210 |
111 * Q1.1.1:: What is the FAQ editorial policy? | 211 1.1: Versions for Different Operating Systems |
112 * Q1.1.2:: How do I become a Beta Tester? | 212 * Q1.1.1:: Do I need X11 to run XEmacs? |
113 * Q1.1.3:: How do I contribute to XEmacs itself? | 213 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? |
114 | 214 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to? |
115 Credits: | 215 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs? |
116 * Q1.2.1:: Who wrote XEmacs? | 216 * Q1.1.5:: What are the differences between the various MS Windows emacsen? |
117 * Q1.2.2:: Who contributed to this version of the FAQ? | 217 * Q1.1.6:: Is there a port of XEmacs to the Macintosh? |
118 * Q1.2.3:: Who contributed to the FAQ in the past? | 218 * Q1.1.7:: Is there a port of XEmacs to NextStep? |
119 | 219 * Q1.1.8:: Is there a port of XEmacs to OS/2? |
120 Internationalization: | 220 * Q1.1.9:: How does the port cope with differences in the Windows user interface? |
121 * Q1.3.1:: What is the status of internationalization support aka MULE (including Asian language support? | 221 |
122 * Q1.3.2:: How can I help with internationalization? | 222 1.2: Policies |
123 * Q1.3.3:: How do I type non-ASCII characters? | 223 * Q1.2.1:: What is the FAQ editorial policy? |
124 * Q1.3.4:: Can XEmacs messages come out in a different language? | 224 * Q1.2.2:: How do I become a beta tester? |
125 * Q1.3.5:: Please explain the various input methods in MULE/XEmacs | 225 * Q1.2.3:: How do I contribute to XEmacs itself? |
126 * Q1.3.6:: How do I portably code for MULE/XEmacs? | 226 |
127 * Q1.3.7:: How about Cyrillic Modes? | 227 1.3: Credits |
128 * Q1.3.8:: Does XEmacs support Unicode? | 228 * Q1.3.1:: Who wrote XEmacs? |
129 * Q1.3.9:: How does XEmacs display Unicode? | 229 * Q1.3.2:: Who contributed to this version of the FAQ? |
130 | 230 * Q1.3.3:: Who contributed to the FAQ in the past? |
131 Getting Started: | 231 |
132 * Q1.4.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? | 232 1.4: Internationalization |
133 * Q1.4.2:: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? | 233 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support? |
134 * Q1.4.3:: Any good XEmacs tutorials around? | 234 * Q1.4.2:: How can I help with internationalization? |
135 * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? | 235 * Q1.4.3:: How do I type non-ASCII characters? |
136 * Q1.4.5:: And how do I bind it to a key? | 236 * Q1.4.4:: Can XEmacs messages come out in a different language? |
137 * Q1.4.6:: What's the difference between a macro and a function? | 237 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs |
138 | 238 * Q1.4.6:: How do I portably code for MULE/XEmacs? |
139 Installation and Trouble Shooting | 239 * Q1.4.7:: How about Cyrillic modes? |
140 | 240 * Q1.4.8:: Does XEmacs support Unicode? |
141 * Q2.0.1:: Running XEmacs without installing. | 241 * Q1.4.9:: How does XEmacs display Unicode? |
142 * Q2.0.2:: XEmacs is too big. | 242 |
143 * Q2.0.3:: Compiling XEmacs with Netaudio. | 243 1.5: Getting Started |
144 * Q2.0.4:: Problems with Linux and ncurses. | 244 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? |
145 * Q2.0.5:: Do I need X11 to run XEmacs? | 245 * Q1.5.2:: Where do I put my @file{init.el} file? |
146 * Q2.0.6:: I'm having strange crashes. What do I do? | 246 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? |
147 * Q2.0.7:: Libraries in non-standard locations. | 247 * Q1.5.4:: Any good XEmacs tutorials around? |
148 * Q2.0.8:: can't resolve symbol _h_errno | 248 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function? |
149 * Q2.0.9:: Where do I find external libraries? | 249 * Q1.5.6:: And how do I bind it to a key? |
150 * Q2.0.10:: After I run configure I find a coredump, is something wrong? | 250 * Q1.5.7:: What's the difference between a macro and a function? |
151 * Q2.0.11:: XEmacs can't resolve host names. | 251 * Q1.5.8:: What is @code{Custom}? |
152 * Q2.0.12:: Why can't I strip XEmacs? | 252 |
153 * Q2.0.13:: I don't need no steenkin' packages. Do I? | 253 2 Installation and Troubleshooting |
154 * Q2.0.14:: How do I figure out which packages to install? | 254 |
155 * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) | 255 2.0: Installation (General), Packages |
156 * Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) | 256 * Q2.0.1:: How do I install the packages? |
157 | 257 * Q2.0.2:: I don't need no steenkin' packages. Do I? |
158 Trouble Shooting: | 258 * Q2.0.3:: Where do I find external libraries? |
159 * Q2.1.1:: XEmacs just crashed on me! | 259 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files? |
160 * Q2.1.2:: Cryptic Minibuffer messages. | 260 * Q2.0.5:: Running XEmacs without installing |
161 * Q2.1.3:: Translation Table Syntax messages at Startup. | 261 * Q2.0.6:: XEmacs is too big |
162 * Q2.1.4:: Startup warnings about deducing proper fonts? | 262 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW) |
163 * Q2.1.5:: XEmacs cannot connect to my X Terminal. | 263 |
164 * Q2.1.6:: XEmacs just locked up my Linux X server. | 264 2.1: Unix/Mac OS Installation (Also Relevant to Cygwin, MinGW) |
165 * Q2.1.7:: HP Alt key as Meta. | 265 * Q2.1.1:: Libraries in non-standard locations |
166 * Q2.1.8:: got (wrong-type-argument color-instance-p nil)! | 266 * Q2.1.2:: Why can't I strip XEmacs? |
167 * Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. | 267 * Q2.1.3:: Compiling XEmacs with Netaudio. |
168 * Q2.1.10:: Warnings from incorrect key modifiers. | 268 * Q2.1.4:: Problems with Linux and ncurses. |
169 * Q2.1.11:: Can't instantiate image error... in toolbar | 269 |
170 * Q2.1.12:: Regular Expression Problems on DEC OSF1. | 270 2.2: Windows Installation (Windows, Cygwin, MinGW) |
171 * Q2.1.13:: HP/UX 10.10 and @code{create_process} failure | 271 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows? |
172 * Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? | 272 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs? |
173 * Q2.1.15:: How to debug an XEmacs problem with a debugger. | 273 * Q2.2.3:: How do I compile the native port? |
174 * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. | 274 * Q2.2.4:: What do I need for Cygwin? |
175 * Q2.1.17:: @samp{Marker does not point anywhere}. | 275 * Q2.2.5:: How do I compile under Cygwin? |
176 * Q2.1.18:: XEmacs is outputting lots of X errors. | 276 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? |
177 * Q2.1.19:: XEmacs does not follow the local timezone. | 277 * Q2.2.7:: How do I compile with X support? |
178 * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} | 278 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW) |
179 * Q2.1.21:: [This question intentionally left blank] | 279 |
180 * Q2.1.22:: XEmacs seems to take a really long time to do some things. | 280 2.3: General Troubleshooting |
181 * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. | 281 * Q2.3.1:: Help! XEmacs just crashed on me! |
182 * Q2.1.24:: XEmacs won't start without network. | 282 * Q2.3.2:: XEmacs crashes and I compiled it myself. |
183 * Q2.1.25:: After upgrading, XEmacs won't do `foo' any more! | 283 * Q2.3.3:: How to debug an XEmacs problem with a debugger |
184 | 284 * Q2.3.4:: I get a cryptic error message when trying to do something. |
185 Customization and Options | 285 * Q2.3.5:: XEmacs hangs when I try to do something. |
186 | 286 * Q2.3.6:: I get an error message when XEmacs is running in batch mode. |
187 * Q3.0.1:: What version of Emacs am I running? | 287 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem. |
188 * Q3.0.2:: How do I evaluate Elisp expressions? | 288 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken? |
189 * Q3.0.3:: @code{(setq tab-width 6)} behaves oddly. | 289 * Q2.3.9:: How do I debug process-related problems? |
190 * Q3.0.4:: How can I add directories to the @code{load-path}? | 290 * Q2.3.10:: XEmacs is outputting lots of X errors. |
191 * Q3.0.5:: How to check if a lisp function is defined? | 291 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more! |
192 * Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer? | 292 |
193 * Q3.0.7:: Font selections don't get saved after @code{Save Options}. | 293 2.4: Startup-Related Problems |
194 * Q3.0.8:: How do I make a single minibuffer frame? | 294 * Q2.4.1:: XEmacs cannot connect to my X Terminal! |
195 * Q3.0.9:: What is @code{Customize}? | 295 * Q2.4.2:: XEmacs won't start on Windows. |
196 | 296 * Q2.4.3:: XEmacs won't start without network. |
197 X Window System & Resources: | 297 * Q2.4.4:: Startup warnings about deducing proper fonts? |
198 * Q3.1.1:: Where is a list of X resources? | 298 * Q2.4.5:: Warnings from incorrect key modifiers. |
199 * Q3.1.2:: How can I detect a color display? | 299 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? |
200 * Q3.1.3:: [This question intentionally left blank] | 300 |
201 * Q3.1.4:: [This question intentionally left blank] | 301 3 Basic Display-Related Subsystems |
202 * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? | 302 |
203 * Q3.1.6:: How can I have the window title area display the full path? | 303 3.0: The Keyboard |
204 * Q3.1.7:: @samp{xemacs -name junk} doesn't work? | 304 * Q3.0.1:: How can I bind complex functions (or macros) to keys? |
205 * Q3.1.8:: @samp{-iconic} doesn't work. | 305 * Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down? |
206 | 306 * Q3.0.3:: Globally binding @kbd{Delete}? |
207 Textual Fonts & Colors: | 307 * Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard? |
208 * Q3.2.1:: How can I set color options from @file{init.el}/@file{.emacs}? | 308 * Q3.0.5:: How can you type in special characters in XEmacs? |
209 * Q3.2.2:: How do I set the text, menu and modeline fonts? | 309 * Q3.0.6:: Can I turn on @dfn{sticky} modifier keys? |
210 * Q3.2.3:: How can I set the colors when highlighting a region? | 310 * Q3.0.7:: How do I map the arrow keys? |
211 * Q3.2.4:: How can I limit color map usage? | 311 * Q3.0.8:: HP Alt key as Meta. |
212 * Q3.2.5:: My tty supports color, but XEmacs doesn't use them. | 312 * Q3.0.9:: Why does edt emulation not work? |
213 * Q3.2.6:: Can I have pixmap backgrounds in XEmacs? | 313 * Q3.0.10:: How can I emulate VI and use it as my default mode? |
214 | 314 |
215 The Modeline: | 315 3.1: The Mouse |
216 * Q3.3.1:: How can I make the modeline go away? | 316 * Q3.1.1:: How can I turn off Mouse pasting? |
217 * Q3.3.2:: How do you have XEmacs display the line number in the modeline? | 317 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons? |
218 * Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? | 318 * Q3.1.3:: Clicking the left button does not do anything in buffer list. |
219 * Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? | 319 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3? |
220 * Q3.3.5:: How can one change the modeline color based on the mode used? | 320 * Q3.1.5:: How I can set XEmacs up so that it pastes where the text cursor is? |
221 | 321 |
222 Multiple Device Support: | 322 3.2: Textual Fonts and Colors |
223 * Q3.4.1:: How do I open a frame on another screen of my multi-headed display? | 323 * Q3.2.1:: How do I specify a font? |
224 * Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? | 324 * Q3.2.2:: How do I set the text, menu and modeline fonts? |
225 | 325 * Q3.2.3:: How can I set color options from @file{init.el}? |
226 The Keyboard: | 326 * Q3.2.4:: How can I set the colors when highlighting a region? |
227 * Q3.5.1:: How can I bind complex functions (or macros) to keys? | 327 * Q3.2.5:: How can I limit color map usage? |
228 * Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? | 328 * Q3.2.6:: My tty supports color, but XEmacs doesn't use them. |
229 * Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? | 329 * Q3.2.7:: Can I have pixmap backgrounds in XEmacs? |
230 * Q3.5.4:: Globally binding @kbd{Delete}? | 330 * Q3.2.8:: How do I display non-ASCII characters? |
231 * Q3.5.5:: Scrolling one line at a time. | 331 * Q3.2.9:: Font selections in don't get saved after @code{Save Options}. |
232 * Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard? | 332 |
233 * Q3.5.7:: How can you type in special characters in XEmacs? | 333 3.3: The Menubar and Toolbar |
234 * Q3.5.8:: [This question intentionally left blank] | 334 * Q3.3.1:: How do I get rid of the menu (or menubar)? |
235 * Q3.5.9:: How do I make the Delete key delete forward? | 335 * Q3.3.2:: Can I customize the basic menubar? |
236 * Q3.5.10:: Can I turn on @dfn{sticky} modifier keys? | 336 * Q3.3.3:: How do I control how many buffers are listed in the menu @code{Buffers List}? |
237 * Q3.5.11:: How do I map the arrow keys? | 337 * Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working? |
238 | 338 * Q3.3.5:: How can I bind a key to a function to toggle the toolbar? |
239 The Cursor: | 339 * Q3.3.6:: @samp{Can't instantiate image error...} in toolbar |
240 * Q3.6.1:: Is there a way to make the bar cursor thicker? | 340 |
241 * Q3.6.2:: Is there a way to get back the old block cursor where the cursor covers the character in front of the point? | 341 3.4: Scrollbars and Scrolling |
242 * Q3.6.3:: Can I make the cursor blink? | 342 * Q3.4.1:: How can I disable the scrollbar? |
243 | 343 * Q3.4.2:: How can one use resources to change scrollbar colors? |
244 The Mouse and Highlighting: | 344 * Q3.4.3:: Moving the scrollbar can move the point; can I disable this? |
245 * Q3.7.1:: How can I turn off Mouse pasting? | 345 * Q3.4.4:: Scrolling one line at a time. |
246 * Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? | 346 * Q3.4.5:: How can I turn off automatic horizontal scrolling in specific modes? |
247 * Q3.7.3:: Clicking the left button does not do anything in buffer list. | 347 * Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off? |
248 * Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? | 348 |
249 * Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? | 349 3.5: The Modeline |
250 * Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? | 350 * Q3.5.1:: How can I make the modeline go away? |
251 * Q3.7.7:: How do I select a rectangular region? | 351 * Q3.5.2:: How do you have XEmacs display the line number in the modeline? |
252 * Q3.7.8:: Why does @kbd{M-w} take so long? | 352 * Q3.5.3:: How do I get XEmacs to put the time of day on the modeline? |
253 | 353 * Q3.5.4:: How can one change the modeline color based on the mode used? |
254 The Menubar and Toolbar: | 354 |
255 * Q3.8.1:: How do I get rid of the menu (or menubar)? | 355 3.6: The Cursor |
256 * Q3.8.2:: Can I customize the basic menubar? | 356 * Q3.6.1:: Is there a way to make the bar cursor thicker? |
257 * Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list? | 357 * Q3.6.2:: Is there a way to get back the block cursor? |
258 * Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working? | 358 * Q3.6.3:: Can I make the cursor blink? |
259 * Q3.8.5:: How can I bind a key to a function to toggle the toolbar? | 359 |
260 | 360 3.7: Text Selections |
261 Scrollbars: | 361 * Q3.7.1:: How do I select a rectangular region? |
262 * Q3.9.1:: How can I disable the scrollbar? | 362 * Q3.7.2:: How can I turn off or change highlighted selections? |
263 * Q3.9.2:: How can one use resources to change scrollbar colors? | 363 * Q3.7.3:: How do I get that typing on an active region removes it? |
264 * Q3.9.3:: Moving the scrollbar can move the point; can I disable this? | 364 * Q3.7.4:: Can I turn off the highlight during isearch? |
265 * Q3.9.4:: How can I turn off automatic horizontal scrolling in specific modes? | 365 * Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? |
266 | 366 * Q3.7.6:: The region disappears when I hit the end of buffer while scrolling. |
267 Text Selections: | 367 * Q3.7.7:: Why is killing so slow? |
268 * Q3.10.1:: How can I turn off or change highlighted selections? | 368 * Q3.7.8:: Why does @kbd{M-w} take so long? |
269 * Q3.10.2:: How do I get that typing on an active region removes it? | 369 |
270 * Q3.10.3:: Can I turn off the highlight during isearch? | 370 3.8: Buffers, Text Editing |
271 * Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? | 371 * Q3.8.1:: Can I have the end of the buffer delimited in some way? |
272 * Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. | 372 * Q3.8.2:: How do I insert today's date into a buffer? |
273 * Q3.10.6:: Why is killing so slow? | 373 * Q3.8.3:: How do I get a single minibuffer frame? |
274 | 374 * Q3.8.4:: How can I enable auto-indent and/or Filladapt? |
275 Major Subsystems | 375 * Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by default? |
276 | 376 |
277 * Q4.0.1:: How do I set up VM to retrieve remote mail using POP? | 377 3.9: Editing Source Code |
278 * Q4.0.2:: How do I get VM to filter mail for me? | 378 * Q3.9.1:: How can I do source code highlighting using font-lock? |
279 * Q4.0.3:: How can I get VM to automatically check for new mail? | 379 * Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default? |
280 * Q4.0.4:: [This question intentionally left blank] | 380 * Q3.9.3:: Where do I get the latest CC Mode? |
281 * Q4.0.5:: How do I get my outgoing mail archived? | 381 * Q3.9.4:: I do not like cc-mode. How do I use the old c-mode? |
282 * Q4.0.6:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? | 382 * Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly? |
283 * Q4.0.7:: Is there a mailing list or FAQ for VM? | 383 |
284 * Q4.0.8:: Remote mail reading with VM. | 384 4 Interfacing with the Operating System and External Devices |
285 * Q4.0.9:: rmail or VM gets an error incorporating new mail. | 385 |
286 * Q4.0.10:: How do I make VM stay in a single frame? | 386 4.0: X Window System and Resources |
287 * Q4.0.11:: How do I make VM or mh-e display graphical smilies? | 387 * Q4.0.1:: Where is a list of X resources? |
288 * Q4.0.12:: Customization of VM not covered in the manual or here. | 388 * Q4.0.2:: How can I detect a color display? |
289 | 389 * Q4.0.3:: How can I get the icon to just say @samp{XEmacs}? |
290 Web browsing with W3: | 390 * Q4.0.4:: How can I have the window title area display the full path? |
291 * Q4.1.1:: What is W3? | 391 * Q4.0.5:: @samp{xemacs -name junk} doesn't work? |
292 * Q4.1.2:: How do I run W3 from behind a firewall? | 392 * Q4.0.6:: @samp{-iconic} doesn't work. |
293 * Q4.1.3:: Is it true that W3 supports style sheets and tables? | 393 |
294 | 394 4.1: Microsoft Windows |
295 Reading Netnews and Mail with Gnus: | 395 * Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? |
296 * Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! | 396 * Q4.1.2:: How do I get Windows Explorer to associate a file type with XEmacs? |
297 * Q4.2.2:: [This question intentionally left blank] | 397 |
298 * Q4.2.3:: How do I make Gnus stay within a single frame? | 398 4.2: Printing |
299 * Q4.2.4:: How do I customize the From: line? | 399 * Q4.2.1:: What do I need to change to make printing work? |
300 | 400 * Q4.2.2:: How can I print WYSIWYG a font-locked buffer? |
301 Other Mail & News: | 401 * Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. |
302 * Q4.3.1:: How can I read and/or compose MIME messages? | 402 * Q4.2.4:: Can you print under MS Windows? |
303 * Q4.3.2:: What is TM and where do I get it? | 403 |
304 * Q4.3.3:: Why isn't this @code{movemail} program working? | 404 4.3: Sound |
305 * Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems? | 405 * Q4.3.1:: How do I turn off the sound? |
306 * Q4.3.5:: Where do I find pstogif (required by tm)? | 406 * Q4.3.2:: How do I get funky sounds instead of a boring beep? |
307 | 407 * Q4.3.3:: What's NAS, how do I get it? |
308 Sparcworks, EOS, and WorkShop: | 408 * Q4.3.4:: Sunsite sounds don't play. |
309 * Q4.4.1:: What is SPARCworks, EOS, and WorkShop | 409 |
310 * Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21? | 410 4.4: Running an Interior Shell, Invoking Subprocesses |
311 | 411 * Q4.4.1:: What is an interior shell? |
312 Energize: | 412 * Q4.4.2:: How do I start up a second shell buffer? |
313 * Q4.5.1:: What is/was Energize? | 413 * Q4.4.3:: Telnet from shell filters too much |
314 | 414 * Q4.4.4:: Strange things are happening in Shell Mode. |
315 Infodock: | 415 * Q4.4.5:: XEmacs complains "No such file or directory, diff" |
316 * Q4.6.1:: What is Infodock? | 416 |
317 | 417 4.5: Multiple Device Support |
318 Other Unbundled Packages: | 418 * Q4.5.1:: How do I open a frame on another screen of my multi-headed display? |
319 * Q4.7.1:: What is AUC TeX? Where do you get it? | 419 * Q4.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How? |
320 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? | 420 * Q4.5.3:: How do I disable gnuserv from opening a new frame? |
321 * Q4.7.3:: [This question intentionally left blank] | 421 * Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client? |
322 * Q4.7.4:: Problems installing AUC TeX | 422 * Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? |
323 * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? | 423 |
324 * Q4.7.6:: Is there a MatLab mode? | 424 4.6: TeX |
325 * Q4.7.7:: Can I edit files on other hosts? | 425 * Q4.6.1:: Is there something better than LaTeX mode? |
326 | 426 * Q4.6.2:: What is AUCTeX? Where do you get it? |
327 The Miscellaneous Stuff | 427 * Q4.6.3:: Problems installing AUCTeX. |
328 | 428 * Q4.6.4:: How do I turn off current chapter from AUCTeX modeline? |
329 * Q5.0.1:: How can I do source code highlighting using font-lock? | 429 |
330 * Q5.0.2:: I do not like cc-mode. How do I use the old c-mode? | 430 4.7: Other Unbundled Packages |
331 * Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default? | 431 * Q4.7.1:: Is there a reason for an Emacs package not to be included in XEmacs? |
332 * Q5.0.4:: How can I enable auto-indent and/or Filladapt? | 432 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? |
333 * Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default? | 433 * Q4.7.3:: Is there a MatLab mode? |
334 * Q5.0.6:: How do I start up a second shell buffer? | 434 |
335 * Q5.0.7:: Telnet from shell filters too much. | 435 4.8: Environments Built Around XEmacs |
336 * Q5.0.8:: Why does edt emulation not work? | 436 * Q4.8.1:: What are SPARCworks, EOS, and WorkShop? |
337 * Q5.0.9:: How can I emulate VI and use it as my default mode? | 437 * Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21? |
338 * Q5.0.10:: [This question intentionally left blank] | 438 * Q4.8.3:: What is/was Energize? |
339 * Q5.0.11:: [This question intentionally left blank] | 439 * Q4.8.4:: What is Infodock? |
340 * Q5.0.12:: How do I disable gnuserv from opening a new frame? | 440 |
341 * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? | 441 5 Connecting to the Internet |
342 * Q5.0.14:: Strange things are happening in Shell Mode. | 442 |
343 * Q5.0.15:: Where do I get the latest CC Mode? | 443 5.0: General Mail and News |
344 * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? | 444 * Q5.0.1:: What are the various packages for reading mail? |
345 * Q5.0.17:: How can I get two instances of info? | 445 * Q5.0.2:: How can I send mail? |
346 * Q5.0.18:: [This question intentionally left blank] | 446 * Q5.0.3:: How do I get my outgoing mail archived? |
347 * Q5.0.19:: Is there something better than LaTeX mode? | 447 * Q5.0.4:: How can I read and/or compose MIME messages? |
348 * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? | 448 * Q5.0.5:: How do I customize the From line? |
349 | 449 * Q5.0.6:: How do I get my MUA to filter mail for me? |
350 Emacs Lisp Programming Techniques: | 450 * Q5.0.7:: Remote mail reading with an MUA. |
351 * Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs? | 451 * Q5.0.8:: An MUA gets an error incorporating new mail. |
352 * Q5.1.2:: Can I generate "fake" keyboard events? | 452 * Q5.0.9:: Why isn't @file{movemail} working? |
353 * Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail? | 453 * Q5.0.10:: How do I make my MUA display graphical smilies? |
354 * Q5.1.4:: What is the performance hit of @code{let}? | 454 * Q5.0.11:: How can I get those oh-so-neat X-Face lines? |
355 * Q5.1.5:: What is the recommended use of @code{setq}? | 455 |
356 * Q5.1.6:: What is the typical misuse of @code{setq} ? | 456 5.1: Reading Mail with VM |
357 * Q5.1.7:: I like the @code{do} form of cl, does it slow things down? | 457 * Q5.1.1:: How do I set up VM to retrieve mail from a remote site using POP? |
358 * Q5.1.8:: I like recursion, does it slow things down? | 458 * Q5.1.2:: How can I get VM to automatically check for new mail? |
359 * Q5.1.9:: How do I put a glyph as annotation in a buffer? | 459 * Q5.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? |
360 * Q5.1.10:: @code{map-extents} won't traverse all of my extents! | 460 * Q5.1.4:: Is there a mailing list or FAQ for VM? |
361 * Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? | 461 * Q5.1.5:: How do I make VM stay in a single frame? |
362 | 462 * Q5.1.6:: Customization of VM not covered in the manual, or here. |
363 Sound: | 463 |
364 * Q5.2.1:: How do I turn off the sound? | 464 5.2: Reading Netnews and Mail with Gnus |
365 * Q5.2.2:: How do I get funky sounds instead of a boring beep? | 465 * Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! |
366 * Q5.2.3:: What's NAS, how do I get it? | 466 * Q5.2.2:: How do I make Gnus stay within a single frame? |
367 * Q5.2.4:: Sunsite sounds don't play. | 467 |
368 | 468 5.3: FTP Access |
369 Miscellaneous: | 469 * Q5.3.1:: Can I edit files on other hosts? |
370 * Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly? | 470 * Q5.3.2:: What is EFS? |
371 * Q5.3.2:: [This question intentionally left blank] | 471 |
372 * Q5.3.3:: How can I print WYSIWYG a font-locked buffer? | 472 5.4: Web Browsing with W3 |
373 * Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer. | 473 * Q5.4.1:: What is W3? |
374 * Q5.3.5:: How do I specify the paths that XEmacs uses for finding files? | 474 * Q5.4.2:: How do I run W3 from behind a firewall? |
375 * Q5.3.6:: [This question intentionally left blank] | 475 * Q5.4.3:: Is it true that W3 supports style sheets and tables? |
376 * Q5.3.7:: Can I have the end of the buffer delimited in some way? | 476 |
377 * Q5.3.8:: How do I insert today's date into a buffer? | 477 6 Advanced Customization Using XEmacs Lisp |
378 * Q5.3.9:: Are only certain syntactic character classes available for abbrevs? | 478 |
379 * Q5.3.10:: How can I get those oh-so-neat X-Face lines? | 479 6.0: Online Help |
380 * Q5.3.11:: How do I add new Info directories? | 480 * Q6.0.1:: How can I get two instances of info? |
381 * Q5.3.12:: What do I need to change to make printing work? | 481 * Q6.0.2:: How do I add new Info directories? |
382 | 482 |
383 Mathematics: | 483 6.1: Emacs Lisp and @file{init.el} |
384 * Q5.4.1:: What are bignums, ratios, and bigfloats in Lisp? | 484 * Q6.1.1:: What version of Emacs am I running? |
385 * Q5.4.2:: XEmacs segfaults when I use very big numbers! | 485 * Q6.1.2:: How can I evaluate Emacs-Lisp expressions? |
386 * Q5.4.3:: Bignums are really slow! | 486 * Q6.1.3:: @code{(setq tab-width 6)} behaves oddly. |
387 * Q5.4.4:: Equal bignums don't compare as equal! What's going on? | 487 * Q6.1.4:: How can I add directories to the @code{load-path}? |
388 | 488 * Q6.1.5:: How to check if a lisp function is defined? |
389 XEmacs on MS Windows | 489 * Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer? |
390 | 490 |
391 General Info: | 491 6.2: Emacs Lisp Programming Techniques |
392 * Q6.0.1:: What is the status of the XEmacs port to Windows? | 492 * Q6.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs? |
393 * Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only. | 493 * Q6.2.2:: Can I generate "fake" keyboard events? |
394 * Q6.0.3:: Are binaries available? | 494 * Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail? |
395 * Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to? | 495 * Q6.2.4:: What is the performance hit of @code{let}? |
396 * Q6.0.5:: I'd like to help out. What do I do? | 496 * Q6.2.5:: What is the recommended use of @code{setq}? |
397 * Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs? | 497 * Q6.2.6:: What is the typical misuse of @code{setq}? |
398 * Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows? | 498 * Q6.2.7:: I like the @code{do} form of cl, does it slow things down? |
399 | 499 * Q6.2.8:: I like recursion, does it slow things down? |
400 Building XEmacs on MS Windows: | 500 * Q6.2.9:: How do I put a glyph as annotation in a buffer? |
401 * Q6.1.1:: What compiler/libraries do I need to compile XEmacs? | 501 * Q6.2.10:: @code{map-extents} won't traverse all of my extents! |
402 * Q6.1.2:: How do I compile the native port? | 502 * Q6.2.11:: My elisp program is horribly slow. Is there |
403 * Q6.1.3:: What do I need for Cygwin? | 503 |
404 * Q6.1.4:: How do I compile under Cygwin? | 504 6.3: Mathematics |
405 * Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? | 505 * Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp? |
406 * Q6.1.6:: I decided to run with X. Where do I get an X server? | 506 * Q6.3.2:: XEmacs segfaults when I use very big numbers! |
407 * Q6.1.7:: How do I compile with X support? | 507 * Q6.3.3:: Bignums are really slow! |
408 | 508 * Q6.3.4:: Equal bignums don't compare as equal! What gives? |
409 Customization and User Interface: | 509 |
410 * Q6.2.1:: How does the port cope with differences in the Windows user interface? | 510 7 What the Future Holds |
411 * Q6.2.2:: How do I change fonts in XEmacs on MS Windows? | 511 |
412 * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file? | 512 7.0: Changes |
413 * Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs? | 513 * Q7.0.1:: What new features will be in XEmacs soon? |
414 * Q6.2.5:: Is it possible to print from XEmacs? | 514 * Q7.0.2:: What's new in XEmacs 21.4? |
415 | 515 * Q7.0.3:: What's new in XEmacs 21.1? |
416 Miscellaneous: | 516 * Q7.0.4:: What's new in XEmacs 20.4? |
417 * Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? | 517 * Q7.0.5:: What's new in XEmacs 20.3? |
418 * Q6.3.2:: What are the differences between the various MS Windows emacsen? | 518 * Q7.0.6:: What's new in XEmacs 20.2? |
419 * Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? | 519 |
420 * Q6.3.4:: What is the porting team doing at the moment? | 520 8 New information about old XEmacsen |
421 | 521 |
422 Troubleshooting: | 522 8.0: XEmacs 21.1 |
423 * Q6.4.1:: XEmacs won't start on Windows. | 523 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. |
424 * Q6.4.2:: Why do I get a blank toolbar on Windows 95? | |
425 * Q6.4.3:: XEmacs complains "No such file or directory, diff" | |
426 | |
427 What the Future Holds | |
428 | |
429 * Q7.0.1:: What new features will be in XEmacs soon? | |
430 * Q7.0.2:: What's new in XEmacs 21.4? | |
431 * Q7.0.3:: What's new in XEmacs 21.1? | |
432 * Q7.0.4:: What's new in XEmacs 20.4? | |
433 * Q7.0.5:: What's new in XEmacs 20.3? | |
434 * Q7.0.6:: What's new in XEmacs 20.2? | |
435 | |
436 New information about old XEmacsen. | |
437 | |
438 XEmacs 21.1: | |
439 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. | |
440 | 524 |
441 @end detailmenu | 525 @end detailmenu |
442 @end menu | 526 @end menu |
443 | 527 |
444 @node Introduction, Installation, Top, Top | 528 @node Introduction, Installation, Top, Top |
449 be complete. Instead it is aimed at the person who is either | 533 be complete. Instead it is aimed at the person who is either |
450 considering XEmacs for their own use, or has just obtained it and is | 534 considering XEmacs for their own use, or has just obtained it and is |
451 wondering what to do next. It is also useful as a reference to | 535 wondering what to do next. It is also useful as a reference to |
452 available resources. | 536 available resources. |
453 | 537 |
454 The previous maintainer of the FAQ was @email{rossini@@biostat.washington.edu, | 538 The previous maintainer of the FAQ was |
455 Anthony Rossini}, who started it, after getting tired of hearing JWZ | 539 @email{rossini@@biostat.washington.edu, Anthony Rossini}, who started |
456 complain about repeatedly having to answer questions. | 540 it, after getting tired of hearing JWZ complain about repeatedly |
457 @email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck | 541 having to answer questions. @email{ben@@xemacs.org, Ben Wing} then |
458 Thompson}, the principal authors of XEmacs, then took over and Ben did | 542 took over and did a massive update reorganizing the whole thing. At |
459 a massive update reorganizing the whole thing. At which point Anthony | 543 this point Anthony took back over, but then had to give it up again. |
460 took back over, but then had to give it up again. Some of the other | 544 Some of the other contributors to this FAQ are listed later in this |
461 contributors to this FAQ are listed later in this document. | 545 document. |
462 | 546 |
463 The previous version was converted to hypertext format, and edited by | 547 The previous version was converted to hypertext format, and edited by |
464 @email{steve@@xemacs.org, Steven L. Baur}. It was converted back to | 548 @email{steve@@xemacs.org, Steven L. Baur}. It was converted back to |
465 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then | 549 texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then |
466 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it | 550 maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it |
467 on to ChristianNyb@o{}. | 551 on to ChristianNyb@o{}, and then to @email{wambold@@xemacs.org,Sandra Wambold}. |
552 | |
553 The current version of the FAQ has been heavily redone by | |
554 @email{ben@@xemacs.org, Ben Wing}. | |
468 | 555 |
469 If you notice any errors or items which should be added or amended to | 556 If you notice any errors or items which should be added or amended to |
470 this FAQ please send email to @email{faq@@xemacs.org, Sandra | 557 this FAQ please send email to @email{xemacs-beta@@xemacs.org}. |
471 Wambold}. Include @samp{XEmacs FAQ} on the Subject: line. | 558 Include @samp{XEmacs FAQ} on the Subject: line. |
472 | 559 |
473 @menu | 560 @menu |
474 Introduction: | 561 1.0: Introduction |
475 * Q1.0.1:: What is XEmacs? | 562 * Q1.0.1:: What is XEmacs? |
476 * Q1.0.2:: What is the current version of XEmacs? | 563 * Q1.0.2:: What is the current version of XEmacs? |
477 * Q1.0.3:: Where can I find it? | 564 * Q1.0.3:: Where can I find it? |
478 * Q1.0.4:: Why Another Version of Emacs? | 565 * Q1.0.4:: Are binaries available? |
479 * Q1.0.5:: Why Haven't XEmacs and GNU Emacs Merged? | 566 * Q1.0.5:: How does XEmacs differ from GNU Emacs? |
480 * Q1.0.6:: Where can I get help? | 567 * Q1.0.6:: How much does XEmacs differ? |
481 * Q1.0.7:: Where are the mailing lists archived? | 568 * Q1.0.7:: Is XEmacs "GNU"? |
482 * Q1.0.8:: How do you pronounce XEmacs? | 569 * Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? |
483 * Q1.0.9:: What does XEmacs look like? | 570 * Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? |
484 * Q1.0.10:: Is there a port of XEmacs to Microsoft ('95 or NT)? | 571 * Q1.0.10:: Where can I get help? |
485 * Q1.0.11:: Is there a port of XEmacs to the Macintosh? | 572 * Q1.0.11:: Where are the mailing lists archived? |
486 * Q1.0.12:: Is there a port of XEmacs to NextStep? | 573 * Q1.0.12:: How do you pronounce XEmacs? |
487 * Q1.0.13:: Is there a port of XEmacs to OS/2? | 574 * Q1.0.13:: What does XEmacs look like? |
488 * Q1.0.14:: Where can I get a printed copy of the XEmacs users manual? | 575 * Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Manual? |
489 | 576 |
490 Policies: | 577 1.1: Versions for Different Operating Systems |
491 * Q1.1.1:: What is the FAQ editorial policy? | 578 * Q1.1.1:: Do I need X11 to run XEmacs? |
492 * Q1.1.2:: How do I become a Beta Tester? | 579 * Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? |
493 * Q1.1.3:: How do I contribute to XEmacs itself? | 580 * Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I need to? |
494 | 581 * Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmacs? |
495 Credits: | 582 * Q1.1.5:: What are the differences between the various MS Windows emacsen? |
496 * Q1.2.1:: Who wrote XEmacs? | 583 * Q1.1.6:: Is there a port of XEmacs to the Macintosh? |
497 * Q1.2.2:: Who contributed to this version of the FAQ? | 584 * Q1.1.7:: Is there a port of XEmacs to NextStep? |
498 * Q1.2.3:: Who contributed to the FAQ in the past? | 585 * Q1.1.8:: Is there a port of XEmacs to OS/2? |
499 | 586 * Q1.1.9:: How does the port cope with differences in the Windows user interface? |
500 Internationalization: | 587 |
501 * Q1.3.1:: What is the status of internationalization support aka MULE (including Asian language support? | 588 1.2: Policies |
502 * Q1.3.2:: How can I help with internationalization? | 589 * Q1.2.1:: What is the FAQ editorial policy? |
503 * Q1.3.3:: How do I type non-ASCII characters? | 590 * Q1.2.2:: How do I become a beta tester? |
504 * Q1.3.4:: Can XEmacs messages come out in a different language? | 591 * Q1.2.3:: How do I contribute to XEmacs itself? |
505 * Q1.3.5:: Please explain the various input methods in MULE/XEmacs | 592 |
506 * Q1.3.6:: How do I portably code for MULE/XEmacs? | 593 1.3: Credits |
507 * Q1.3.7:: How about Cyrillic Modes? | 594 * Q1.3.1:: Who wrote XEmacs? |
508 * Q1.3.8:: Does XEmacs support Unicode? | 595 * Q1.3.2:: Who contributed to this version of the FAQ? |
509 * Q1.3.9:: How does XEmacs display Unicode? | 596 * Q1.3.3:: Who contributed to the FAQ in the past? |
510 | 597 |
511 Getting Started: | 598 1.4: Internationalization |
512 * Q1.4.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? | 599 * Q1.4.1:: What is the status of internationalization support aka MULE (including Asian language support? |
513 * Q1.4.2:: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? | 600 * Q1.4.2:: How can I help with internationalization? |
514 * Q1.4.3:: Any good XEmacs tutorials around? | 601 * Q1.4.3:: How do I type non-ASCII characters? |
515 * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? | 602 * Q1.4.4:: Can XEmacs messages come out in a different language? |
516 * Q1.4.5:: And how do I bind it to a key? | 603 * Q1.4.5:: Please explain the various input methods in MULE/XEmacs |
517 * Q1.4.6:: What's the difference between a macro and a function? | 604 * Q1.4.6:: How do I portably code for MULE/XEmacs? |
605 * Q1.4.7:: How about Cyrillic modes? | |
606 * Q1.4.8:: Does XEmacs support Unicode? | |
607 * Q1.4.9:: How does XEmacs display Unicode? | |
608 | |
609 1.5: Getting Started | |
610 * Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a sample one? | |
611 * Q1.5.2:: Where do I put my @file{init.el} file? | |
612 * Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? | |
613 * Q1.5.4:: Any good XEmacs tutorials around? | |
614 * Q1.5.5:: May I see an example of a useful XEmacs Lisp function? | |
615 * Q1.5.6:: And how do I bind it to a key? | |
616 * Q1.5.7:: What's the difference between a macro and a function? | |
617 * Q1.5.8:: What is @code{Custom}? | |
518 @end menu | 618 @end menu |
519 | 619 |
620 @unnumberedsec 1.0: Introduction | |
621 | |
520 @node Q1.0.1, Q1.0.2, Introduction, Introduction | 622 @node Q1.0.1, Q1.0.2, Introduction, Introduction |
521 @unnumberedsec 1.0: Introduction | |
522 @unnumberedsubsec Q1.0.1: What is XEmacs? | 623 @unnumberedsubsec Q1.0.1: What is XEmacs? |
523 | 624 |
524 | |
525 XEmacs is a powerful, highly customizable open source text editor and | 625 XEmacs is a powerful, highly customizable open source text editor and |
526 application development system, with full GUI support. It is protected | 626 application development system, with full GUI support. It is |
527 under the GNU Public License and related to other versions of Emacs, in | 627 protected under the GNU Public License and related to other versions |
528 particular GNU Emacs. Its emphasis is on modern graphical user | 628 of Emacs, in particular GNU Emacs. Its emphasis is on modern |
529 interface support and an open software development model, similar to | 629 graphical user interface support and an open software development |
530 Linux. XEmacs has an active development community numbering in the | 630 model, similar to Linux. XEmacs has an active development community |
531 hundreds (and thousands of active beta testers on top of this), and runs | 631 numbering in the hundreds (and thousands of active beta testers on top |
532 on all versions of MS Windows, on Linux, and on nearly every other | 632 of this), and runs on all versions of MS Windows, on Mac OS X, on |
533 version of Unix in existence. Support for XEmacs has been supplied by | 633 Linux, and on nearly every other version of Unix in existence. |
534 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical | 634 Support for XEmacs has been supplied by Sun Microsystems, University |
535 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the | 635 of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl |
536 unpaid time of a great number of individual developers. | 636 Corporation, BeOpen, and others, as well as the unpaid time of a great |
637 number of individual developers. | |
537 | 638 |
538 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction | 639 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction |
539 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs? | 640 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs? |
540 | 641 |
541 XEmacs versions 21.1.* are releases made from the current stable | 642 XEmacs versions 21.4.* are releases made from the current stable |
542 sources. XEmacs versions 21.2.* are releases made from the development | 643 sources. XEmacs versions 21.5.* (which will be released as 22.0) are |
543 sources. Check at @uref{http://www.xemacs.org} for the current minor | 644 releases made from the development sources. Check at |
544 version. | 645 @uref{http://www.xemacs.org} for the current minor version. XEmacs |
545 | 646 versions 21.1.* were the previous stable releases, now retired. |
546 XEmacs 19.16 was the last release of v19, released in November, 1997, | 647 |
547 which was also the last version without international language support. | 648 XEmacs 20.4, released in February 1998, was the last release of v20. |
649 | |
650 XEmacs 19.16, released in November, 1997. was the last release of v19, | |
651 and was also the last version without international language support. | |
548 | 652 |
549 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction | 653 @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction |
550 @unnumberedsubsec Q1.0.3: Where can I find it? | 654 @unnumberedsubsec Q1.0.3: Where can I find it? |
551 | 655 |
552 The canonical source and binaries can be found via anonymous FTP at: | 656 The canonical source and binaries can be found via anonymous FTP at: |
554 @example | 658 @example |
555 @uref{ftp://ftp.xemacs.org/pub/xemacs/} | 659 @uref{ftp://ftp.xemacs.org/pub/xemacs/} |
556 @end example | 660 @end example |
557 | 661 |
558 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction | 662 @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction |
559 @unnumberedsubsec Q1.0.4: Why Another Version of Emacs? | 663 @unnumberedsubsec Q1.0.4: Are binaries available? |
664 | |
665 MS Windows binaries are available at | |
666 @uref{http://www.xemacs.org/Download/win32/} for the native versions | |
667 of 21.4 and 21.1. Cygwin binaries are now available as part of the | |
668 standard Cygwin installation process. XEmacs also comes pre-built as | |
669 part of many Linux distributions, such as Red Hat and SuSE. | |
670 | |
671 Otherwise, you will need to build XEmacs yourself or get your system | |
672 administrator to do it. Generally, this is not a difficult process | |
673 under Unix and Mac OS X, as XEmacs has been tested under all of the | |
674 common Unix versions and under Mac OS X and comes with an extensive | |
675 configure script that is able to automatically detect most aspects of | |
676 the configuration of your particular system. | |
677 | |
678 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction | |
679 @unnumberedsubsec Q1.0.5: How does XEmacs differ from GNU Emacs? | |
560 | 680 |
561 For a detailed description of the differences between GNU Emacs and | 681 For a detailed description of the differences between GNU Emacs and |
562 XEmacs and a detailed history of XEmacs, check out the | 682 XEmacs and a detailed history of XEmacs, check out the |
563 @example | 683 @example |
564 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} | 684 @uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} |
565 @end example | 685 @end example |
566 | 686 |
567 However, here is a list of some of the reasons why we think you might | 687 @table @strong |
568 consider using it: | 688 @item User-Visible Editing Features |
689 XEmacs in general tries hard to conform to exist user-interface | |
690 standards, and to work "out-of-the-box" without the need for obscure | |
691 customization changes. GNU Emacs, particularly version 21, has gotten | |
692 better about this (in many cases by copying the XEmacs behavior!), but | |
693 still has some weirdnesses. For example, the standard method of | |
694 selecting text using the Shift key works out-of-the-box in XEmacs. | |
695 | |
696 XEmacs has a built-in toolbar. Four toolbars can actually be configured | |
697 simultaneously: top, bottom, left, and right toolbars. | |
698 | |
699 XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19 | |
700 (which provides a primitive form of vertical scrollbar), these are true | |
701 toolkit scrollbars. A look-alike Motif scrollbar is provided for those | |
702 who don't have Motif. (Even for those who do, the look-alike may be | |
703 preferable as it is faster.) | |
704 | |
705 XEmacs has buffer tabs along the top of the frame (although the | |
706 position can be changed) that make it very easy to switch buffers. | |
707 | |
708 The menubar under XEmacs is better-designed, with more thought put into | |
709 it. | |
710 | |
711 XEmacs can ask questions using popup dialog boxes. Any command executed | |
712 from a menu will ask yes/no questions with dialog boxes, while commands | |
713 executed via the keyboard will use the minibuffer. | |
714 | |
715 XEmacs under MS Windows provides uses the standard file-dialog box for | |
716 opening and saving files. Standard menu-accelerator behavior can easily | |
717 be enabled using the Options menu, and integrates well into the existing | |
718 keymap. | |
719 | |
720 XEmacs has (still experimental) support for widgets of various sorts -- | |
721 buttons, text boxes, sliders, progress bars, etc. A progress bar is | |
722 used in font lock to show the progress. | |
723 | |
724 Experimental support for drag-and-drop protocols is provided from | |
725 XEmacs 21. | |
726 | |
727 @item General Platform Support | |
728 If you're running on a machine with audio hardware, you can specify | |
729 sound files for XEmacs to play instead of the default X beep. See the | |
730 documentation of the function load-sound-file and the variable | |
731 sound-alist. XEmacs also supports the network sound protocols NAS and | |
732 EsounD. | |
733 | |
734 XEmacs 21 supports database protocols with LISP bindings, currently | |
735 including Berkeley DB, LDAP, and PostgreSQL (21.2 only). | |
736 | |
737 XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method | |
738 servers directly, as well as through the X Input Method (XIM) | |
739 protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen | |
740 support the Quail family of input methods (implemented in LISP) for many | |
741 languages. | |
742 | |
743 XEmacs provides support for ToolTalk on systems that have | |
744 it. | |
745 | |
746 @item Packaged LISP Libraries | |
747 Many more packages are provided standard with XEmacs than with GNU Emacs | |
748 19 or 20. | |
749 | |
750 XEmacs 21 supports an integrated package management system which uses | |
751 EFS to download, then automatically install prebuilt LISP | |
752 libraries. This allows XEmacs users much more straightforward access to | |
753 the "latest and greatest" version of any given library. | |
754 | |
755 We are working on a standard method for enabling, disabling and | |
756 otherwise controlling packages, which should make them very easy to use. | |
757 | |
758 @item LISP Programming | |
759 From XEmacs 20 on, characters are a separate type. Characters can be | |
760 converted to integers (and many integers can be converted to | |
761 characters), but characters are not integers. GNU Emacs 19, XEmacs 19, | |
762 Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs | |
763 20 (incorporating Mule 3 and later Mule 4) represent them as integers. | |
764 | |
765 From XEmacs 20 on, the buffer is treated as an array of characters, and | |
766 the representation of buffer text is not exposed to LISP. The GNU Emacs | |
767 20 functions like buffer-as-multibyte are not supported. | |
768 | |
769 In XEmacs, events are first-class objects. GNU Emacs 19 represents them | |
770 as integers, which obscures the differences between a key gesture and | |
771 the ancient ASCII code used to represent a particular overlapping subset | |
772 of them. | |
773 | |
774 In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19 | |
775 represents them as complicated combinations of association lists and | |
776 vectors. If you use the advertised functional interface to manipulation | |
777 of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU | |
778 Emacs 19; if your code depends on the underlying implementation of | |
779 keymaps, it will not. | |
780 | |
781 XEmacs uses "extents" to represent all non-textual aspects of buffers; | |
782 GNU Emacs 19 uses two distinct objects, "text properties" and | |
783 "overlays", which divide up the functionality between them. Extents are | |
784 a superset of the union of the functionality of the two GNU Emacs data | |
785 types. The full GNU Emacs 19 interface to text properties and overlays | |
786 is supported in XEmacs (with extents being the underlying | |
787 representation). | |
788 | |
789 Extents can be made to be copied into strings, and then restored, by | |
790 kill and yank. Thus, one can specify this behavior on either "extents" | |
791 or "text properties", whereas in GNU Emacs 19 text properties always | |
792 have this behavior and overlays never do. | |
793 | |
794 @item Window System Programming Interface | |
795 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes | |
796 it be a more well-behaved X citizen (and also improves portability). A | |
797 result of this is that it is possible to include other Xt "Widgets" in | |
798 the XEmacs window. Also, XEmacs understands the standard Xt command-line | |
799 arguments. | |
800 | |
801 XEmacs supports Motif applications, generic Xt (e.g. Athena) | |
802 applications, and raw Xlib applications. An XEmacs variant which | |
803 supports GTK+ is available (integration as an option in the XEmacs | |
804 mainline is planned for XEmacs 22), although code to take advantage of | |
805 the support is as yet scarce. | |
806 | |
807 An XEmacs frame can be placed within an "external client widget" managed | |
808 by another application. This allows an application to use an XEmacs | |
809 frame as its text pane rather than the standard Text widget that is | |
810 provided with Motif or Athena. | |
811 | |
812 @item Community Participation | |
813 Starting with XEmacs 20, joining the XEmacs development team is | |
814 simple. Mail to @email{xemacs-beta@@xemacs.org, XEmacs Developers}, and | |
815 you're in! (If you want to be, of course. You're also welcome to just | |
816 post development-related questions and bug reports.) The GNU Emacs | |
817 development team and internal mailing lists are still by invitation | |
818 only. | |
819 | |
820 The "bleeding edge" of mainline XEmacs development is available by | |
821 anonymous CVS as are some subsidiary branches (check out the xemacs-gtk | |
822 module for the latest in GUI features!) | |
823 | |
824 Development and maintenance of Lisp libraries is separated from the core | |
825 editor development at a fairly low level. This provides better | |
826 modularization and a better division of responsibility between external | |
827 library maintainers and the XEmacs core development team. Even for | |
828 packages the size of Gnus, XEmacs users normally have access to a | |
829 pre-built version within a few weeks of a major release, and minor | |
830 updates often within days. | |
831 | |
832 CVS commit authority is broadly dispersed. Recognized maintainers of | |
833 LISP libraries who are willing to maintain XEmacs packaged versions | |
834 automatically qualify for CVS accounts for their packages. | |
835 @end table | |
836 | |
837 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction | |
838 @unnumberedsubsec Q1.0.6: How much does XEmacs differ? | |
839 | |
840 RMS has asserted at times that XEmacs is merely a "patch" on top of | |
841 GNU Emacs (@pxref{Q1.0.7}). In fact, probably not more than 5% of the | |
842 code, if that, remains unchanged, and nearly 14 years of work has gone | |
843 into XEmacs at this point. (GNU Emacs itself is only than 20 years | |
844 old, and thus XEmacs has existed as a separate product for over 2/3 of | |
845 the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has | |
846 perhaps 65,000 more lines of C code than GNU Emacs 21.2. | |
847 | |
848 However, the XEmacs developers strive to keep their code compatible with | |
849 GNU Emacs, especially on the Lisp level. Much effort goes into | |
850 "synching" the XEmacs Elisp code with recent GNU Emacs releases so as to | |
851 benefit from GNU Emacs development work. (In contrast, almost no code | |
852 from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs | |
853 developers are instructed by RMS not to even look at XEmacs source code! | |
854 This stems from self-imposed licensing restrictions on the part of GNU | |
855 Emacs -- and almost certainly out of hostility, as well.) | |
856 | |
857 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction | |
858 @unnumberedsubsec Q1.0.7: Is XEmacs "GNU"? | |
859 | |
860 RMS insists on the term "GNU XEmacs" and maintains that | |
861 | |
862 @quotation | |
863 XEmacs is GNU software because it's a modified version of a | |
864 GNU program. And it is GNU software because the FSF is the copyright | |
865 holder for most of it, and therefore the legal responsibility for | |
866 protecting its free status falls on us whether we want it or not. This | |
867 is why the term "GNU XEmacs" is legitimate. | |
868 @end quotation | |
869 | |
870 In fact, FSF is @emph{not} the copyright holder for most of the code, | |
871 as very little unmodified FSF code remains (@pxref{Q1.0.6}). | |
872 | |
873 Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre | |
874 to the XEmacs developers given RMS's hostility and general lack of | |
875 interest in cooperation. "GNU" software in general is part of the GNU | |
876 Project, is distributed by it on their FTP site, and receives support | |
877 (or at least cooperation), as well as implicit endorsement, from it. | |
878 The GNU Project, however, has never supported XEmacs and never | |
879 distributed XEmacs, and RMS's hostility is the farthest thing possible | |
880 from an endorsement. In fact, the GNU Project distributes a number of | |
881 non-GNU software projects on the FSF web site, but again XEmacs is not | |
882 one of them. | |
883 | |
884 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction | |
885 @unnumberedsubsec Q1.0.8: What is the correct way to refer to XEmacs and GNU Emacs? | |
886 | |
887 Unfortunately even the naming of these two applications has become | |
888 politicized. Much of this stems from RMS, who has a history of | |
889 politicizing similar issues. (Compare the controversy over "Lignux" | |
890 and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU | |
891 Emacs" be used, which are neutral and acceptable to most people. RMS, | |
892 however, is not willing to accept these terms. He insists that, if | |
893 his product is called "GNU Emacs", then ours must be called "GNU | |
894 XEmacs". (For our opinion of this term, @xref{Q1.0.7}.) On the other | |
895 hand, if our product is to be called "XEmacs", as we prefer, then his | |
896 product must simply be called "Emacs". The intent of this seems | |
897 clear: RMS wants to make sure the names reflect his view that his | |
898 version is the "real" Emacs and ours is merely a derivative, | |
899 second-class product (@pxref{Q1.0.6}). | |
900 | |
901 The XEmacs developers hope that you will use the neutral terms | |
902 "XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on | |
903 the other hand, is a generic term for a class of programmable text | |
904 editors with a similar look-and-feel, and usually a Lisp-based | |
905 extension language. These trace themselves back to early editors such | |
906 as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,, | |
907 internals, XEmacs Internals Manual}. | |
908 | |
909 We also call upon RMS, in the spirit of furthering cooperation, to | |
910 stop politicizing this issue and use the neutral terms "XEmacs" and | |
911 "GNU Emacs". We have already acceded to RMS' wishes in this respect, | |
912 and we expect him to do the same. (In the past, the XEmacs developers | |
913 often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in | |
914 reference to GNU Emacs; these terms were apparently modeled after RMS' | |
915 own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress | |
916 Emacs, produced by James Gosling. RMS, however, considers such terms | |
917 to be insulting, so we refrain from using them as much as possible in | |
918 preference to GNU Emacs.) | |
919 | |
920 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction | |
921 @unnumberedsubsec Q1.0.9: Why haven't XEmacs and GNU Emacs merged? | |
922 | |
923 There are currently irreconcilable differences in the views about | |
924 technical, programming, design, organizational and legal matters | |
925 between Richard Stallman (RMS), the author and leader of the GNU Emacs | |
926 project, and the XEmacs development team which provide little hope for | |
927 a merge to take place in the short-term future. There have been | |
928 repeated attempts at merging by all of the major XEmacs developers, | |
929 starting from the early days of Lucid Emacs (in 1991), but they have | |
930 all failed. RMS has very strong views about how GNU Emacs should be | |
931 structured and how his project should be run, and during the repeated | |
932 merge efforts has never demonstrated any realistic interest in | |
933 sufficiently compromising or ceding control to allow a middle ground | |
934 to be found. The basic problem seems to be the very different goals | |
935 of RMS and the XEmacs project. The primary goals of the XEmacs | |
936 project are technical and organizational -- we want to create the best | |
937 editor possible, and to make it as easy as possible for people around | |
938 the world to contribute. The primary goals of RMS, on the other hand, | |
939 are political, and GNU Emacs, and any potential merge efforts with | |
940 XEmacs, are strictly subservient to these goals. In fact, in many | |
941 ways RMS sees GNU Emacs as the "poster child" of his aims, the one | |
942 program in the GNU project that above all others must set an example | |
943 to the world. (This has to do with the fact that GNU Emacs was the | |
944 first program in the GNU project, and the only one that he is still | |
945 personally involved with on a day-to-day basis.) Given his goals, his | |
946 position is completely reasonable -- but unfortunately, makes any | |
947 merge impossible. | |
948 | |
949 From the XEmacs perspective, the most intractable issues appear to be | |
950 legal and organizational, specifically: | |
569 | 951 |
570 @itemize @bullet | 952 @itemize @bullet |
571 @item | 953 @item |
572 It looks nicer. | 954 RMS requires "legal papers" to be signed for all contributions of code |
573 | 955 to GNU Emacs over 10 lines or so, transferring the copyright and all |
574 @item | 956 legal rights to the code to the Free Software Foundation. XEmacs does |
575 The XEmacs maintainers are generally more receptive to suggestions than | 957 not and has never required this, since it has the practical effect of |
576 the GNU Emacs maintainers. | 958 discouraging individual and in particular corporate contributions -- |
577 | 959 corporations will almost never sign away their legal rights to code |
578 @item | 960 since it makes it impossible to reuse the code in any product that |
579 Many more bundled packages than GNU Emacs. | 961 whose license is not compatible with the GNU General Public License. |
580 | 962 Since RMS has shown no inclination to compromise on this issue, a |
581 @item | 963 merge would require that most of the existing XEmacs code would need |
582 Binaries are available for many common operating systems. | 964 to be thrown away and rewritten -- something the XEmacs developers are |
583 | 965 understandably reluctant to do. |
584 @item | 966 |
585 Face support on TTY's. | 967 @item |
586 | 968 A repeated stumbling block in the merge talks has been the issue of |
587 @item | 969 organizational control over the resulting product. RMS has made it |
588 A built-in toolbar. | 970 clear that he intends to have final say over design issues in a merged |
589 | 971 Emacs. Unfortunately, RMS and the XEmacs developers have repeatedly |
590 @item | 972 clashed over design decisions, and RMS' insistence on getting his way |
591 Better Motif compliance. | 973 in such disagreements was the very reason for the split in the first |
592 | 974 place. This same issue has come up again and again in merge talks and |
593 @item | 975 we have never been able to come to a satisfactory resolution. To the |
594 Some internationalization support (including full MULE support, if | 976 extent that RMS is willing to compromise at all, it appears to be of a |
595 compiled with it). | 977 purely political rather than technical nature -- "If we support this |
596 | 978 feature of yours, we also get to support this other feature of mine." |
597 @item | 979 The XEmacs developers cannot see how such a process would lead to |
598 Variable-width fonts. | 980 anything but a mess of incompatible things hodgepodged together. |
599 | 981 |
600 @item | 982 @item |
601 Variable-height lines. | 983 Because of the years of separate development, distinct and |
602 | 984 incompatible interfaces have developed and merging would be extremely |
603 @item | 985 difficult even with the above non-technical issues resolved. The |
604 Marginal annotations. | 986 problem has been exacerbated by the issue of legal papers -- because |
605 | 987 XEmacs code is not "kosher" from RMS' perspective, he discourages |
606 @item | 988 developers from even looking at it out of legal concerns. Although it |
607 ToolTalk support. | 989 is still possible to read the XEmacs documentation and run the |
608 | 990 program, the practical effect of this prohibition has been to strongly |
609 @item | 991 discourage code-sharing and cooperative development -- although a |
610 XEmacs can be used as an Xt widget, and can be embedded within another | 992 great deal of GNU Emacs code has been incorporated into XEmacs, |
611 application. | 993 practically none has gone the other direction. |
612 | |
613 @item | |
614 Horizontal and vertical scrollbars (using real toolkit scrollbars). | |
615 | |
616 @item | |
617 Better APIs (and performance) for attaching fonts, colors, and other | |
618 properties to text. | |
619 | |
620 @item | |
621 The ability to embed arbitrary graphics in a buffer. | |
622 | |
623 @item | |
624 Completely compatible (at the C level) with the Xt-based toolkits. | |
625 | |
626 @end itemize | 994 @end itemize |
627 | 995 |
628 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction | |
629 @unnumberedsubsec Q1.0.5: Why Haven't XEmacs and GNU Emacs Merged? | |
630 | |
631 There are currently irreconcilable differences in the views about | |
632 technical, programming, design and organizational matters between RMS | |
633 and the XEmacs development team which provide little hope for a merge to | |
634 take place in the short-term future. | |
635 | |
636 If you have a comment to add regarding the merge, it is a good idea to | 996 If you have a comment to add regarding the merge, it is a good idea to |
637 avoid posting to the newsgroups, because of the very heated flamewars | 997 avoid posting to the newsgroups, because of the very heated flamewars |
638 that often result. Mail your questions to @email{xemacs-beta@@xemacs.org} and | 998 that often result. Mail your questions to |
639 @email{bug-gnu-emacs@@prep.ai.mit.edu}. | 999 @email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}. |
640 | 1000 |
641 @node Q1.0.6, Q1.0.7, Q1.0.5, Introduction | 1001 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction |
642 @unnumberedsubsec Q1.0.6: Where can I get help? | 1002 @unnumberedsubsec Q1.0.10: Where can I get help? |
643 | 1003 |
644 Probably the easiest way, if everything is installed, is to use Info, by | 1004 Probably the easiest way, if everything is installed, is to use Info, by |
645 pressing @kbd{C-h i}, or looking for an Info item on the | 1005 pressing @kbd{C-h i}, or looking for an Info item on the |
646 Help Menu. @kbd{M-x apropos} can be used to look for particular commands. | 1006 Help Menu. @kbd{M-x apropos} can be used to look for particular commands. |
647 | 1007 |
663 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a | 1023 @uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a |
664 subscription, you may use the @email{xemacs-news-request@@xemacs.org} | 1024 subscription, you may use the @email{xemacs-news-request@@xemacs.org} |
665 address or the Web interface. Send a message with a subject of | 1025 address or the Web interface. Send a message with a subject of |
666 @samp{unsubscribe} to be removed. | 1026 @samp{unsubscribe} to be removed. |
667 | 1027 |
668 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction | 1028 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction |
669 @unnumberedsubsec Q1.0.7: Where are the mailing lists archived? | 1029 @unnumberedsubsec Q1.0.11: Where are the mailing lists archived? |
670 | 1030 |
671 The archives can be found at @uref{http://list-archive.xemacs.org} | 1031 The archives can be found at @uref{http://list-archive.xemacs.org} |
672 | 1032 |
673 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction | 1033 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction |
674 @unnumberedsubsec Q1.0.8: How do you pronounce XEmacs? | 1034 @unnumberedsubsec Q1.0.12: How do you pronounce XEmacs? |
675 | 1035 |
676 The most common pronounciation is @samp{Eks eemax}. | 1036 The most common pronounciation is @samp{Eks eemax}. |
677 | 1037 |
678 @node Q1.0.9, Q1.0.10, Q1.0.8, Introduction | 1038 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction |
679 @unnumberedsubsec Q1.0.9: What does XEmacs look like? | 1039 @unnumberedsubsec Q1.0.13: What does XEmacs look like? |
680 | 1040 |
681 Screen snapshots are available at | 1041 Screen snapshots are available at |
682 @uref{http://www.xemacs.org/About/Screenshots/index.html} | 1042 @uref{http://www.xemacs.org/About/Screenshots/index.html} |
683 as part of the XEmacs website. | 1043 as part of the XEmacs website. |
684 | 1044 |
685 @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction | 1045 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction |
686 @unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)? | 1046 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual? |
687 | 1047 |
688 Yes. XEmacs can be built under MS Windows and is fully-featured and | 1048 Pre-printed manuals are not available. If you are familiar with |
689 actively developed. See @ref{MS Windows}. | 1049 TeX, you can generate your own manual from the XEmacs sources. |
690 | 1050 |
691 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction | 1051 HTML and Postscript versions of XEmacs manuals are available from the |
692 @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh? | 1052 XEmacs web site at |
693 @c changed | 1053 @uref{http://www.xemacs.org/Documentation/index.html}. |
694 | 1054 |
695 @c There has been a port to the MachTen environment of XEmacs 19.13, but no | 1055 @unnumberedsec 1.1: Versions for Different Operating Systems |
696 @c patches have been submitted to the maintainers to get this in the | 1056 |
697 @c mainstream distribution. | 1057 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction |
698 @c | 1058 @unnumberedsubsec Q1.1.1: Do I need X11 to run XEmacs? |
699 @c For the MacOS, there is a port of | 1059 |
700 @c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. | 1060 No. The name @dfn{XEmacs} is unfortunate in the sense that it is |
1061 @strong{not} an X Window System-only version of Emacs. XEmacs has | |
1062 full color support on a color-capable character terminal. | |
1063 | |
1064 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction | |
1065 @unnumberedsubsec Q1.1.2: Is there a port of XEmacs to Microsoft Windows? | |
1066 | |
1067 Yes. Beginning with release 21.0, XEmacs has worked under MS Windows | |
1068 and is fully-featured and actively developed. A group of dedicated | |
1069 developers actively maintains and improves the Windows-specific | |
1070 portions of the code. Some of the core developers, in fact, use | |
1071 Windows as their only development environment, and some features, such | |
1072 as printing, actually work better on Windows than native Unix and Mac | |
1073 OS X. The mailing list at @email{xemacs-winnt@@xemacs.org} is dedicated | |
1074 to that effort (please use the -request address to | |
1075 subscribe). (Despite its name, XEmacs actually works on all versions | |
1076 of Windows.) | |
1077 | |
1078 The list name is misleading, as XEmacs supports and has been compiled on | |
1079 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows | |
1080 XP, and all newer versions of Windows. The MS Windows-specific code is | |
1081 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on | |
1082 MS-DOS. | |
1083 | |
1084 XEmacs also supports the Cygwin and MinGW development and runtime | |
1085 environments, where it also uses native Windows code for graphical | |
1086 features. In addition, under Cygwin it is possible to compile XEmacs | |
1087 to use an X server (and XFree86 is available as part of the standard | |
1088 Cygwin installation). | |
1089 | |
1090 @node Q1.1.3, Q1.1.4, Q1.1.2, Introduction | |
1091 @unnumberedsubsec Q1.1.3: Can I build XEmacs on MS Windows with X support? Do I need to? | |
1092 | |
1093 Yes, you can, but no you do not need to. In fact, we recommend that you | |
1094 use a native-GUI version unless you have a specific need for an X | |
1095 version. | |
1096 | |
1097 @node Q1.1.4, Q1.1.5, Q1.1.3, Introduction | |
1098 @unnumberedsubsec Q1.1.4: What are Cygwin and MinGW, and do I need them to run XEmacs? | |
1099 | |
1100 To answer the second part of the question: No, you, you don't need | |
1101 Cygwin or MinGW to build or to run XEmacs. But if you have them and | |
1102 want to use them, XEmacs supports these environments. | |
1103 | |
1104 (One important reason to support Cygwin is that it lets the MS Windows | |
1105 developers test out their code in a Unix environment without actually | |
1106 having to have a Unix machine around. For this reason alone, Cygwin | |
1107 support is likely to remain supported for a long time in XEmacs. Same | |
1108 goes for the X support under Cygwin, for the same reasons. MinGW | |
1109 support, on the other hand, depends on volunteers to keep it up to date; | |
1110 but this is generally not hard.) | |
1111 | |
1112 Cygwin is a set of tools providing Unix-like API on top of Win32. | |
1113 It makes it easy to port large Unix programs without significant | |
1114 changes to their source code. It is a development environment as well | |
1115 as a runtime environment. | |
1116 | |
1117 When built with Cygwin, XEmacs supports all display types -- TTY, X & | |
1118 Win32 GUI, and can be built with support for all three simultaneously. | |
1119 If you build with Win32 GUI support then the Cygwin version uses the | |
1120 majority of the Windows-specific code, which is mostly related to | |
1121 display. If you want to build with X support you need X libraries (and | |
1122 an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI | |
1123 require no additional libraries beyond what comes standard with Cygwin. | |
1124 | |
1125 The advantages of the Cygwin version are that it integrates well with | |
1126 the Cygwin environment for existing Cygwin users; uses configure so | |
1127 building with different features is very easy; and actively supports X & | |
1128 TTY. Furthermore, the entire Cygwin environment and compiler are free, | |
1129 whereas Visual C++ costs money. | |
1130 | |
1131 The disadvantage is that it requires the whole Cygwin environment, | |
1132 whereas the native port requires only a suitable MS Windows compiler. | |
1133 Also, it follows the Unix filesystem and process model very closely | |
1134 (some will undoubtedly view this as an advantage). | |
1135 | |
1136 See @uref{http://sources.redhat.com/cygwin/} for more information on | |
1137 Cygwin. | |
1138 | |
1139 MinGW is a collection of header files and import libraries that allow | |
1140 one to use GCC under the Cygwin environment to compile and produce | |
1141 exactly the same native Win32 programs that you can using Visual C++. | |
1142 Programs compiled with MinGW make use of the standard Microsoft runtime | |
1143 library @file{MSVCRT.DLL}, present on all Windows systems, and look, | |
1144 feel, and act like a standard Visual-C-produced application. (The only | |
1145 difference is the compiler.) This means that, unlike a | |
1146 standardly-compiled Cygwin application, no extra runtime support | |
1147 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the | |
1148 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y | |
1149 environment, for those die-hard Unix hackers out there), is the main | |
1150 advantage of MinGW. It is also potentially faster than Cygwin because | |
1151 it has less overhead when calling Windows, but you lose the POSIX | |
1152 emulation layer, which makes Unix programs harder to port. (But this is | |
1153 irrelevant for XEmacs since it's already ported to Win32.) | |
1154 | |
1155 See @uref{http://www.mingw.org/} for more information on MinGW. | |
1156 | |
1157 @node Q1.1.5, Q1.1.6, Q1.1.4, Introduction | |
1158 @unnumberedsubsec Q1.1.5: What are the differences between the various MS Windows emacsen? | |
1159 | |
1160 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing. | |
1161 Could you briefly explain the differences between them? | |
1162 | |
1163 Here is a recount of various Emacs versions running on MS Windows: | |
1164 | |
1165 @itemize @bullet | |
1166 | |
1167 @item | |
1168 XEmacs | |
1169 | |
1170 @itemize @minus | |
1171 | |
1172 @item | |
1173 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned | |
1174 in such a way to allow clean support of multiple window systems. At | |
1175 this time the TTY support was added, making X and TTY the first two | |
1176 "window systems" supported by XEmacs. The 19.12 design is the basis for | |
1177 the current native MS Windows code. | |
1178 | |
1179 @item | |
1180 Some time during 1997, David Hobley (soon joined by Marc Paquette) | |
1181 imported some of the NT-specific portions of GNU Emacs, making XEmacs | |
1182 with X support compile under Windows NT, and creating the "X" port. | |
1183 | |
1184 @item | |
1185 Several months later, Jonathan Harris sent out initial patches to use | |
1186 the Win32 API, thus creating the native port. Since then, various | |
1187 people have contributed, including Kirill M. Katsnelson (contributed | |
1188 support for menubars, subprocesses and network, as well as loads of | |
1189 other code), Andy Piper (ported XEmacs to Cygwin environment, | |
1190 contributed Windows unexec, Windows-specific glyphs and toolbars code, | |
1191 and more), Ben Wing (loads of improvements; primary MS Windows developer | |
1192 since 2000), Jeff Sparkes (contributed scrollbars support) and many | |
1193 others. | |
1194 @end itemize | |
1195 | |
1196 @item | |
1197 NT Emacs | |
1198 | |
1199 @itemize @minus | |
1200 | |
1201 @item | |
1202 NT Emacs was an early version of GNU Emacs 19 modified to compile and | |
1203 run under MS Windows 95 and NT using the native Win32 API. It was | |
1204 written by Geoff Voelker, and has long since been incorporated into | |
1205 the mainline GNU Emacs distribution. | |
1206 @end itemize | |
1207 | |
1208 @item | |
1209 Win-Emacs | |
1210 | |
1211 @itemize @minus | |
1212 | |
1213 @item | |
1214 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X | |
1215 compatibility libraries. Win-Emacs was written by Ben Wing. The MS | |
1216 Windows code never made it back to Lucid Emacs, and its creator (Pearl | |
1217 Software) has long since gone out of business. | |
1218 @end itemize | |
1219 | |
1220 @item | |
1221 GNU Emacs for DOS | |
1222 | |
1223 @itemize @minus | |
1224 | |
1225 @item | |
1226 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS | |
1227 port of GCC). Such an Emacs is heavily underfeatured, because it does | |
1228 not support long file names, lacks proper subprocesses support, and | |
1229 is far too big compared with typical DOS editors. | |
1230 @end itemize | |
1231 | |
1232 @item | |
1233 GNU Emacs compiled with Win32 | |
1234 | |
1235 @itemize @minus | |
1236 | |
1237 @item | |
1238 Starting with version 19.30, it has been possible to compile GNU Emacs | |
1239 under MS Windows using the DJGPP compiler and X libraries. The result | |
1240 is very similar to GNU Emacs compiled under MS DOS, only it works | |
1241 somewhat better because it runs in 32-bit mode, makes use of all the | |
1242 system memory, supports long file names, etc. | |
1243 @end itemize | |
1244 | |
1245 @end itemize | |
1246 | |
1247 @node Q1.1.6, Q1.1.7, Q1.1.5, Introduction | |
1248 @unnumberedsubsec Q1.1.6: Is there a port of XEmacs to the Macintosh? | |
701 | 1249 |
702 Yes. | 1250 Yes. |
703 | 1251 |
704 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly | 1252 XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly |
705 will not feel very much like a Mac application as it has no Mac-specific | 1253 will not feel very much like a Mac application as it has no Mac-specific |
710 Pitts Jarvis}. It runs in an equivalent of TTY mode only (one single | 1258 Pitts Jarvis}. It runs in an equivalent of TTY mode only (one single |
711 Macintosh window, 25 colors), but has a large number of Mac-specific | 1259 Macintosh window, 25 colors), but has a large number of Mac-specific |
712 additions. It's available at | 1260 additions. It's available at |
713 @uref{http://homepage.mac.com/pjarvis/xemacs.html}. | 1261 @uref{http://homepage.mac.com/pjarvis/xemacs.html}. |
714 | 1262 |
715 @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction | 1263 @node Q1.1.7, Q1.1.8, Q1.1.6, Introduction |
716 @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? | 1264 @unnumberedsubsec Q1.1.7: Is there a port of XEmacs to NextStep? |
717 | 1265 |
718 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did | 1266 Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did |
719 the port of GNU Emacs to NeXTstep and expressed interest in doing the | 1267 the port of GNU Emacs to NeXTstep and expressed interest in doing the |
720 XEmacs port, but never went any farther. | 1268 XEmacs port, but never went any farther. |
721 | 1269 |
722 @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction | 1270 @node Q1.1.8, Q1.1.9, Q1.1.7, Introduction |
723 @unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2? | 1271 @unnumberedsubsec Q1.1.8: Is there a port of XEmacs to OS/2? |
724 | 1272 |
725 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it. | 1273 No, but Alexander Nikolaev <avn_1251@@mail.ru> is working on it. |
726 | 1274 |
727 @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction | 1275 @node Q1.1.9, Q1.2.1, Q1.1.8, Introduction |
728 @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs User's Manual? | 1276 @unnumberedsubsec Q1.1.9: How does the port cope with differences in the Windows user interface? |
729 | 1277 |
730 Pre-printed manuals are not available. If you are familiar with | 1278 The XEmacs (and Emacs in general) user interface is pretty different |
731 TeX, you can generate your own manual from the XEmacs sources. | 1279 from what is expected of a typical MS Windows program. How does the MS |
732 | 1280 Windows port cope with it? |
733 HTML and Postscript versions of XEmacs manuals are available from the | 1281 |
734 XEmacs web site at | 1282 As a general rule, we follow native MS Windows conventions as much as |
735 @uref{http://www.xemacs.org/Documentation/index.html}. | 1283 possible. 21.4 is a fairly complete Windows application, supporting |
736 | 1284 native printing, system file dialog boxes, tool tips, etc. In cases |
737 @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction | 1285 where there's a clear UI conflict, we currently use normal Unix XEmacs |
738 @unnumberedsec 1.1: Policies | 1286 behavior by default, but make sure the MS Windows "look and feel" (mark |
739 @unnumberedsubsec Q1.1.1: What is the FAQ editorial policy? | 1287 via shift-arrow, self-inserting deletes region, Alt selects menu items, |
1288 etc.) is easily configurable (respectively: using the variable | |
1289 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact | |
1290 the default in these versions], or the @file{pc-select} package; using | |
1291 the @file{pending-del} package; and setting the variable | |
1292 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above). | |
1293 In fact, if you use the sample @file{init.el} file as your init file, | |
1294 you will get all these behaviors automatically turned on. | |
1295 | |
1296 In future versions, some of these features might be turned on by | |
1297 default in the MS Windows environment. | |
1298 | |
1299 @unnumberedsec 1.2: Policies | |
1300 | |
1301 @node Q1.2.1, Q1.2.2, Q1.1.9, Introduction | |
1302 @unnumberedsubsec Q1.2.1: What is the FAQ editorial policy? | |
740 | 1303 |
741 The FAQ is actively maintained and modified regularly. All links should | 1304 The FAQ is actively maintained and modified regularly. All links should |
742 be up to date. Unfortunately, some of the information is out of date -- | 1305 be up to date. Unfortunately, some of the information is out of date -- |
743 a situation which the FAQ maintainer is working on. All submissions are | 1306 a situation which the FAQ maintainer is working on. All submissions are |
744 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ | 1307 welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ |
751 and will be attributed. Answers appearing without attribution are | 1314 and will be attributed. Answers appearing without attribution are |
752 either from versions of the FAQ dated before May 1996 or are from | 1315 either from versions of the FAQ dated before May 1996 or are from |
753 previous FAQ maintainers. Answers quoted from Usenet news articles will | 1316 previous FAQ maintainers. Answers quoted from Usenet news articles will |
754 always be attributed, regardless of the author. | 1317 always be attributed, regardless of the author. |
755 | 1318 |
756 @node Q1.1.2, Q1.1.3, Q1.1.1, Introduction | 1319 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction |
757 @unnumberedsubsec Q1.1.2: How do I become a Beta Tester? | 1320 @unnumberedsubsec Q1.2.2: How do I become a beta tester? |
758 | 1321 |
759 Send an email message to @email{xemacs-beta-request@@xemacs.org} with | 1322 Send an email message to @email{xemacs-beta-request@@xemacs.org} with |
760 the line @samp{subscribe} in the body of the message. | 1323 the line @samp{subscribe} in the body of the message. |
761 | 1324 |
762 Be prepared to get your hands dirty, as beta testers are expected to | 1325 Be prepared to get your hands dirty, as beta testers are expected to |
763 identify problems as best they can. | 1326 identify problems as best they can. |
764 | 1327 |
765 @node Q1.1.3, Q1.2.1, Q1.1.2, Introduction | 1328 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction |
766 @unnumberedsubsec Q1.1.3: How do I contribute to XEmacs itself? | 1329 @unnumberedsubsec Q1.2.3: How do I contribute to XEmacs itself? |
1330 | |
1331 It depends on the knowledge and time you possess. If you are able, by | |
1332 all means become a beta tester (@pxref{Q1.2.2}). If you are a | |
1333 programmer, try to build XEmacs and see if you can improve it. | |
1334 | |
1335 Otherwise, you can still help by using XEmacs as your everyday editor | |
1336 (for pre-built binary versions, @pxref{Q1.0.4}) and reporting bugs you | |
1337 find to the mailing list. | |
1338 | |
1339 Another area where we need help is the documentation: We need good | |
1340 documentation for building XEmacs and for using it. This FAQ is a | |
1341 small step in that direction. | |
767 | 1342 |
768 Ben Wing @email{ben@@xemacs.org} writes: | 1343 Ben Wing @email{ben@@xemacs.org} writes: |
769 | 1344 |
770 @quotation | 1345 @quotation |
771 BTW if you have a wish list of things that you want added, you have to | 1346 BTW if you have a wish list of things that you want added, you have to |
792 | 1367 |
793 (not that we're necessarily requiring you to write the code, but we can | 1368 (not that we're necessarily requiring you to write the code, but we can |
794 always hope :) | 1369 always hope :) |
795 @end quotation | 1370 @end quotation |
796 | 1371 |
797 @node Q1.2.1, Q1.2.2, Q1.1.3, Introduction | 1372 @unnumberedsec 1.3: Credits |
798 @unnumberedsec 1.2: Credits | 1373 |
799 @unnumberedsubsec Q1.2.1: Who wrote XEmacs? | 1374 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction |
800 | 1375 @unnumberedsubsec Q1.3.1: Who wrote XEmacs? |
801 XEmacs is the result of the time and effort of many people. The | 1376 |
802 developers responsible for recent releases are: | 1377 XEmacs is the result of the time and effort of many people, and the |
1378 active developers have changed over time. There are two major | |
1379 components of the XEmacs effort -- writing the code itself and providing | |
1380 all the support work (testing the code, releasing beta and final | |
1381 versions, handling patches, reading bug reports, maintaining the web | |
1382 site, managing the mailing lists, etc. etc.). Neither component would | |
1383 work without the other. | |
1384 | |
1385 @subheading CODING | |
1386 | |
1387 The primary code contributor over the years has been Ben Wing (active | |
1388 since late 1992). Between 1991 and 1995, large amounts of coding was | |
1389 contributed by Jamie Zawinski and Chuck Thompson. Many other people | |
1390 have authored major subsystems or otherwise contributed large amounts of | |
1391 code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris, | |
1392 Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard | |
1393 Mlynarik, Stig, William Perry and plenty of others. | |
1394 | |
1395 Primary XEmacs-specific subsystems and their authors: | |
1396 | |
1397 @table @asis | |
1398 @item Objects | |
1399 @itemize @minus | |
1400 @item | |
1401 Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994 | |
1402 @item | |
1403 Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz | |
1404 @item | |
1405 Portable dumper, object descriptions: Olivier Galibert | |
1406 @item | |
1407 KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students | |
1408 @item | |
1409 Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing | |
1410 @item | |
1411 Profiling: Ben Wing | |
1412 @item | |
1413 Some byte-compilation and hash-table improvements: Martin Buchholz | |
1414 @item | |
1415 Bignum: Jerry James | |
1416 @end itemize | |
1417 | |
1418 @item Internationalization/Mule | |
1419 @itemize @minus | |
1420 @item | |
1421 mostly Ben Wing; many ideas for future work, Stephen Turnbull | |
1422 @end itemize | |
1423 | |
1424 @item I/O | |
1425 @itemize @minus | |
1426 @item | |
1427 Basic event/event-stream implementation: Jamie Zawinski | |
1428 @item | |
1429 Most event work since 1994: Ben Wing | |
1430 @item | |
1431 Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing | |
1432 @item | |
1433 Process method abstraction, Windows process work: Kirill Katsnelson | |
1434 @item | |
1435 Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing | |
1436 @item | |
1437 Lstreams: Ben Wing | |
1438 @end itemize | |
1439 | |
1440 @item Display | |
1441 @itemize @minus | |
1442 @item | |
1443 Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people | |
1444 @item | |
1445 Glyphs: mostly Ben Wing | |
1446 @item | |
1447 Specifiers: Ben Wing | |
1448 @item | |
1449 Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing | |
1450 @item | |
1451 Widgets: Andy Piper | |
1452 @item | |
1453 JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c}) | |
1454 @item | |
1455 Menus: Jamie Zawinski, someone at Lucid (Lucid menus) | |
1456 @item | |
1457 Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) | |
1458 @item | |
1459 Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson | |
1460 @item | |
1461 Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing | |
1462 @item | |
1463 Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing | |
1464 @item | |
1465 Toolbars: implementation, chuck, much interface work, Ben Wing | |
1466 @item | |
1467 Gutters, tabs: andy piper | |
1468 @end itemize | |
1469 | |
1470 @item Device subsystems | |
1471 @itemize @minus | |
1472 @item | |
1473 X Windows: Jamie Zawinksi, Ben Wing, others | |
1474 @item | |
1475 GTK: William Perry, Malcolm Purvis | |
1476 @item | |
1477 MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing | |
1478 @item | |
1479 TTY: Chuck Thompson, Ben Wing | |
1480 @item | |
1481 Cygwin: Andy Piper | |
1482 @end itemize | |
1483 | |
1484 @item Misc | |
1485 @itemize @minus | |
1486 @item | |
1487 Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz | |
1488 @item | |
1489 Most initialization-related code: Ben Wing | |
1490 @item | |
1491 Internals manual, much of Lisp manual: Ben Wing | |
1492 @item | |
1493 FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing | |
1494 @end itemize | |
1495 @end table | |
1496 | |
1497 @subheading SUPPORT | |
1498 | |
1499 Currently, support duties are handled by many different people. | |
1500 | |
1501 Release managers have been | |
1502 | |
1503 @itemize @minus | |
1504 @item | |
1505 Stephen Turnbull (April 2001 - present, 21.x - 21.x?) | |
1506 @item | |
1507 Vin Shelton? | |
1508 @item | |
1509 Steve Youngs (July 2002 - present??, 21.x - 21.x?) | |
1510 @item | |
1511 Martin Buchholz (December 1998 - May 2001, 21.x - 21.x?) | |
1512 @item | |
1513 Steve Baur (early 1997 - November 1998, 19.15 - 21.0) | |
1514 @item | |
1515 Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) | |
1516 @item | |
1517 Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) | |
1518 @end itemize | |
1519 | |
1520 The recent overlapping dates are intentional, since two or three trees | |
1521 are maintained simultaneously at any point. | |
1522 | |
1523 Other major support work: | |
1524 | |
1525 @itemize @minus | |
1526 @item | |
1527 Adrian Aichner wrote and maintains the web site. | |
1528 @item | |
1529 Stephen Turnbull has produced many of the beta and semi-stable releases | |
1530 and has attempted to be the "face" of XEmacs on the newsgroups and | |
1531 mailing lists. | |
1532 @item | |
1533 Steve Youngs currently produces the beta releases (???). | |
1534 @item | |
1535 Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns | |
1536 maintaining the packages. | |
1537 @item | |
1538 Vin Shelton maintains the stable releases. | |
1539 @item | |
1540 Testing - #### Norbert, Adrian, ??? | |
1541 @end itemize | |
1542 | |
1543 Portraits and email of some of the major developers: | |
803 | 1544 |
804 @itemize @bullet | 1545 @itemize @bullet |
1546 @item @email{andy@@xemacs.org, Andy Piper} | |
1547 @html | |
1548 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br> | |
1549 @end html | |
1550 | |
1551 @item @email{ben@@xemacs.org, Ben Wing} | |
1552 @html | |
1553 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br> | |
1554 @end html | |
1555 | |
1556 @item @email{cthomp@@xemacs.org, Chuck Thompson} | |
1557 @html | |
1558 <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br> | |
1559 @end html | |
1560 | |
1561 @item @email{hniksic@@xemacs.org, Hrvoje Niksic} | |
1562 | |
1563 @html | |
1564 <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br> | |
1565 @end html | |
1566 | |
1567 @item @email{jwz@@jwz.org, Jamie Zawinski} | |
1568 @html | |
1569 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br> | |
1570 @end html | |
1571 | |
805 @item @email{martin@@xemacs.org, Martin Buchholz} | 1572 @item @email{martin@@xemacs.org, Martin Buchholz} |
806 @html | 1573 @html |
807 <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br> | 1574 <br><img src="mrb.jpeg" alt="Portrait of Martin Buchholz"><br> |
808 @end html | 1575 @end html |
809 | 1576 |
1577 @item @email{mly@@adoc.xerox.com, Richard Mlynarik} | |
810 | 1578 |
811 @item @email{stephen@@xemacs.org, Stephen Turnbull} | 1579 @item @email{stephen@@xemacs.org, Stephen Turnbull} |
812 | 1580 |
813 | |
814 @item @email{ben@@xemacs.org, Ben Wing} | |
815 @html | |
816 <br><img src="wing.gif" alt="Portrait of Ben Wing"><br> | |
817 @end html | |
818 | |
819 | |
820 @item @email{hniksic@@xemacs.org, Hrvoje Niksic} | |
821 | |
822 @html | |
823 <br><img src="hniksic.jpeg" alt="Portrait of Hrvoje Niksic"><br> | |
824 @end html | |
825 | |
826 @end itemize | |
827 | |
828 The developers responsible for older releases were: | |
829 | |
830 @itemize @bullet | |
831 @item @email{steve@@xemacs.org, Steve Baur} | 1581 @item @email{steve@@xemacs.org, Steve Baur} |
832 | |
833 @html | 1582 @html |
834 <br><img src="steve.gif" alt="Portrait of Steve Baur"><br> | 1583 <br><img src="steve.gif" alt="Portrait of Steve Baur"><br> |
835 @end html | 1584 @end html |
836 | |
837 @item @email{cthomp@@xemacs.org, Chuck Thompson} | |
838 @html | |
839 <br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br> | |
840 @end html | |
841 | |
842 @item @email{jwz@@jwz.org, Jamie Zawinski} | |
843 @html | |
844 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br> | |
845 @end html | |
846 | |
847 @item @email{mly@@adoc.xerox.com, Richard Mlynarik} | |
848 | |
849 Steve Baur was the primary maintainer for 19.15 through 21.0. | |
850 | |
851 Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14 | |
852 and heavy code contributors for 19.8 through 19.10. | |
853 | |
854 Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire | |
855 history of Lucid Emacs). Richard Mlynarik was a heavy code contributor | |
856 to 19.6 through 19.8. | |
857 | |
858 @end itemize | 1585 @end itemize |
859 | 1586 |
860 Along with many other contributors, partially enumerated in the | 1587 Many other people have contributed to XEmacs; this is partially |
861 @samp{About XEmacs} option in the Help menu. | 1588 enumerated in the @samp{About XEmacs} option in the Help menu. |
862 | 1589 |
863 @node Q1.2.2, Q1.2.3, Q1.2.1, Introduction | 1590 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction |
864 @unnumberedsubsec Q1.2.2: Who contributed to this version of the FAQ? | 1591 @unnumberedsubsec Q1.3.2: Who contributed to this version of the FAQ? |
865 | 1592 |
866 The following people contributed valuable suggestions to building this | 1593 The current version of this FAQ was created by @email{ben@@xemacs.org, |
867 version of the FAQ (listed in alphabetical order): | 1594 Ben Wing}. |
1595 | |
1596 @node Q1.3.3, Q1.4.1, Q1.3.2, Introduction | |
1597 @unnumberedsubsec Q1.3.3: Who contributed to the FAQ in the past? | |
1598 | |
1599 This is only a partial list, as many names were lost in a hard disk | |
1600 crash some time ago. | |
868 | 1601 |
869 @itemize @bullet | 1602 @itemize @bullet |
870 @item @email{steve@@xemacs.org, SL Baur} | 1603 @item @email{steve@@xemacs.org, SL Baur} |
871 | 1604 |
872 @item @email{hniksic@@xemacs.org, Hrvoje Niksic} | 1605 @item @email{hniksic@@xemacs.org, Hrvoje Niksic} |
873 | 1606 |
874 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} | |
875 | |
876 @end itemize | |
877 | |
878 @node Q1.2.3, Q1.3.1, Q1.2.2, Introduction | |
879 @unnumberedsubsec Q1.2.3: Who contributed to the FAQ in the past? | |
880 | |
881 This is only a partial list, as many names were lost in a hard disk | |
882 crash some time ago. | |
883 | |
884 @itemize @bullet | |
885 @item @email{binge@@aloft.att.com, Curtis.N.Bingham} | 1607 @item @email{binge@@aloft.att.com, Curtis.N.Bingham} |
886 | 1608 |
887 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} | 1609 @item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} |
888 | 1610 |
889 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} | 1611 @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} |
919 @item @email{stig@@hackvan.com, Stig} | 1641 @item @email{stig@@hackvan.com, Stig} |
920 | 1642 |
921 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} | 1643 @item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} |
922 @end itemize | 1644 @end itemize |
923 | 1645 |
924 @node Q1.3.1, Q1.3.2, Q1.2.3, Introduction | 1646 @unnumberedsec 1.4: Internationalization |
925 @unnumberedsec 1.3: Internationalization | 1647 |
926 @unnumberedsubsec Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support? | 1648 @node Q1.4.1, Q1.4.2, Q1.3.3, Introduction |
1649 @unnumberedsubsec Q1.4.1: What is the status of internationalization support aka MULE (including Asian language support? | |
927 | 1650 |
928 Both the stable and development versions of XEmacs include | 1651 Both the stable and development versions of XEmacs include |
929 internationalization support (aka MULE). MULE currently (21.4) works on | 1652 internationalization support (aka MULE). MULE currently (21.4) works on |
930 UNIX and Linux systems. It is possible to build with MULE on Windows | 1653 UNIX and Linux systems. It is possible to build with MULE on Windows |
931 systems, but if you really need MULE on Windows, it is recommended that | 1654 systems, but if you really need MULE on Windows, it is recommended that |
932 you build and use the development (21.5) version, and deal with the | 1655 you build and use the development (21.5) version, and deal with the |
933 instability of the development tree. Binaries compiled without MULE | 1656 instability of the development tree. Binaries compiled without MULE |
934 support run faster than MULE capable XEmacsen. | 1657 support run faster than MULE capable XEmacsen. |
935 | 1658 |
936 @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction | 1659 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction |
937 @unnumberedsubsec Q1.3.2: How can I help with internationalization? | 1660 @unnumberedsubsec Q1.4.2: How can I help with internationalization? |
938 | 1661 |
939 If you would like to help, you may want to join the | 1662 If you would like to help, you may want to join the |
940 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are | 1663 @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are |
941 people who speak/write languages other than English, who are willing to | 1664 people who speak/write languages other than English, who are willing to |
942 use XEmacs/MULE regularly, and have some experience with Elisp. | 1665 use XEmacs/MULE regularly, and have some experience with Elisp. |
943 | 1666 |
944 Translations of the TUTORIAL and man page are welcome, and XEmacs does | 1667 Translations of the TUTORIAL and man page are welcome, and XEmacs does |
945 support multilingual menus, but we have few current translations. | 1668 support multilingual menus, but we have few current translations. |
946 | 1669 |
947 @xref{Q1.1.2}. | 1670 @xref{Q1.2.2, How do I become a Beta Tester?}. |
948 | 1671 |
949 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction | 1672 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction |
950 @unnumberedsubsec Q1.3.3: How do I type non-ASCII characters? | 1673 @unnumberedsubsec Q1.4.3: How do I type non-ASCII characters? |
951 | 1674 |
952 See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ for some | 1675 @xref{Q3.0.5, How can you type in special characters in XEmacs?}, in |
953 simple methods that also work in non-MULE builds of XEmacs (but only for | 1676 part 3 of this FAQ, for some simple methods that also work in non-MULE |
954 one-octet coded character sets, and mostly for ISO 8859/1). Many of the | 1677 builds of XEmacs (but only for one-octet coded character sets, and |
955 methods available for Cyrillic (@pxref{Q1.3.7}) work without MULE. | 1678 mostly for ISO 8859/1). Many of the methods available for Cyrillic |
956 MULE has more general capabilities. @xref{Q1.3.5}. | 1679 (@pxref{Q1.4.7, How about Cyrillic modes?}) work without MULE. MULE |
957 | 1680 has more general capabilities. @xref{Q1.4.5, Please explain the |
958 @xref{Q3.2.7}, which covers display of non-ASCII characters. | 1681 various input methods in MULE/XEmacs}. |
959 | 1682 |
960 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction | 1683 @xref{Q3.2.8, How do I display non-ASCII characters?}, which covers |
961 @unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language? | 1684 display of non-ASCII characters. |
1685 | |
1686 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction | |
1687 @unnumberedsubsec Q1.4.4: Can XEmacs messages come out in a different language? | |
962 | 1688 |
963 The message-catalog support was written but is badly bit-rotted. XEmacs | 1689 The message-catalog support was written but is badly bit-rotted. XEmacs |
964 20 and 21 did @emph{not} support it, and early releases of XEmacs 22 | 1690 20 and 21 did @emph{not} support it, and early releases of XEmacs 22 |
965 will not either. | 1691 will not either. |
966 | 1692 |
974 @end example | 1700 @end example |
975 | 1701 |
976 The name of the resource is derived from the non-localized entry by | 1702 The name of the resource is derived from the non-localized entry by |
977 removing punctuation and capitalizing as above. | 1703 removing punctuation and capitalizing as above. |
978 | 1704 |
979 @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction | 1705 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction |
980 @unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs | 1706 @unnumberedsubsec Q1.4.5: Please explain the various input methods in MULE/XEmacs |
981 | 1707 |
982 Mule supports a wide variety of input methods. There are three basic | 1708 Mule supports a wide variety of input methods. There are three basic |
983 classes: Lisp implementations, generic platform support, and library | 1709 classes: Lisp implementations, generic platform support, and library |
984 interfaces. | 1710 interfaces. |
985 | 1711 |
1067 boiled-egg-like utilities. | 1793 boiled-egg-like utilities. |
1068 | 1794 |
1069 Much of this information was provided by @email{morioka@@jaist.ac.jp, | 1795 Much of this information was provided by @email{morioka@@jaist.ac.jp, |
1070 MORIOKA Tomohiko}. | 1796 MORIOKA Tomohiko}. |
1071 | 1797 |
1072 @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction | 1798 @node Q1.4.6, Q1.4.7, Q1.4.5, Introduction |
1073 @unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs? | 1799 @unnumberedsubsec Q1.4.6: How do I portably code for MULE/XEmacs? |
1074 | 1800 |
1075 MULE has evolved rapidly over the last few years, and the original third | 1801 MULE has evolved rapidly over the last few years, and the original third |
1076 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite | 1802 party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite |
1077 different implementations. The APIs also vary although recent versions | 1803 different implementations. The APIs also vary although recent versions |
1078 of XEmacs have tended to converge to the GNU Emacs standard. | 1804 of XEmacs have tended to converge to the GNU Emacs standard. |
1132 ;; for old emacs variants | 1858 ;; for old emacs variants |
1133 ) | 1859 ) |
1134 @end lisp | 1860 @end lisp |
1135 @end quotation | 1861 @end quotation |
1136 | 1862 |
1137 @node Q1.3.7, Q1.3.8, Q1.3.6, Introduction | 1863 @node Q1.4.7, Q1.4.8, Q1.4.6, Introduction |
1138 @unnumberedsubsec Q1.3.7: How about Cyrillic Modes? | 1864 @unnumberedsubsec Q1.4.7: How about Cyrillic modes? |
1139 | 1865 |
1140 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: | 1866 @email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: |
1141 | 1867 |
1142 @quotation | 1868 @quotation |
1143 There is a cyrillic mode in the file @file{mysetup.zip} in | 1869 There is a cyrillic mode in the file @file{mysetup.zip} in |
1170 @quotation | 1896 @quotation |
1171 The fullest resource I found on Russian language use (in and out of | 1897 The fullest resource I found on Russian language use (in and out of |
1172 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} | 1898 XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} |
1173 @end quotation | 1899 @end quotation |
1174 | 1900 |
1175 @node Q1.3.8, Q1.3.9, Q1.3.7, Introduction | 1901 @node Q1.4.8, Q1.4.9, Q1.4.7, Introduction |
1176 @unnumberedsubsec Q1.3.8: Does XEmacs support Unicode? | 1902 @unnumberedsubsec Q1.4.8: Does XEmacs support Unicode? |
1177 | 1903 |
1178 Partially, as an external encoding for files, processes, and terminals. | 1904 To get Unicode support, you need a Mule-enabled XEmacs. |
1179 It does not yet support Unicode fonts @ref{Q1.3.9, Does XEmacs support | 1905 |
1180 Unicode Fonts?} | 1906 21.5 has internal support for Unicode and supports it fully, although we |
1181 | 1907 don't yet use it as the internal encoding. |
1182 To get Unicode support, you need a Mule-enabled XEmacs. Install | 1908 |
1183 Mule-UCS from packages in the usual way. Put | 1909 21.4 supports Unicode partially -- as an external encoding for files, |
1910 processes, and terminals, but without font support. @xref{Q1.4.9, How | |
1911 does XEmacs display Unicode?}. To get Unicode support in 21.4, | |
1912 install Mule-UCS from packages in the usual way, and put | |
1184 | 1913 |
1185 @example | 1914 @example |
1186 (require 'un-define) | 1915 (require 'un-define) |
1187 (set-coding-priority-list '(utf-8)) | 1916 (set-coding-priority-list '(utf-8)) |
1188 (set-coding-category-system 'utf-8 'utf-8) | 1917 (set-coding-category-system 'utf-8 'utf-8) |
1190 | 1919 |
1191 in your init file to enable the UTF-8 coding system. You may wish to | 1920 in your init file to enable the UTF-8 coding system. You may wish to |
1192 view the documentation of @code{set-coding-priority-list} if you find | 1921 view the documentation of @code{set-coding-priority-list} if you find |
1193 that files that are not UTF-8 are being mis-recognized as UTF-8. | 1922 that files that are not UTF-8 are being mis-recognized as UTF-8. |
1194 | 1923 |
1195 Install standard national fonts (not Unicode fonts) for all | 1924 Install standard national fonts (not Unicode fonts) for all character |
1196 character sets you use. See @ref{Q1.3.9}. | 1925 sets you use. @xref{Q1.4.9, How does XEmacs display Unicode??}. |
1197 | 1926 |
1198 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not | 1927 Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not |
1199 support 31-bit forms of Unicode (UTF-32 or UCS-4). | 1928 support 31-bit forms of Unicode (UTF-32 or UCS-4). |
1200 | 1929 |
1201 @node Q1.3.9, Q1.4.1, Q1.3.8, Introduction | 1930 @node Q1.4.9, Q1.5.1, Q1.4.8, Introduction |
1202 @unnumberedsubsec Q1.3.9: How does XEmacs display Unicode? | 1931 @unnumberedsubsec Q1.4.9: How does XEmacs display Unicode? |
1203 | 1932 |
1204 Mule doesn't have a Unicode charset internally, so there's nothing to | 1933 Mule doesn't have a Unicode charset internally, so there's nothing to |
1205 bind a Unicode registry to. It would not be straightforward to create, | 1934 bind a Unicode registry to. It would not be straightforward to create, |
1206 either, because Unicode is not ISO 2022-compatible. You'd have to | 1935 either, because Unicode is not ISO 2022-compatible. You'd have to |
1207 translate it to multiple 96x96 pages. | 1936 translate it to multiple 96x96 pages. |
1218 extreme hackery. You can run -nw with (set-terminal-coding-system | 1947 extreme hackery. You can run -nw with (set-terminal-coding-system |
1219 'utf-8) if you really want a Unicode font for some reason. | 1948 'utf-8) if you really want a Unicode font for some reason. |
1220 | 1949 |
1221 Real Unicode support will be introduced in XEmacs 22.0. | 1950 Real Unicode support will be introduced in XEmacs 22.0. |
1222 | 1951 |
1223 @node Q1.4.1, Q1.4.2, Q1.3.9, Introduction | 1952 @unnumberedsec 1.5: Getting Started |
1224 @unnumberedsec 1.4: Getting Started, Backing up & Recovery | 1953 |
1225 @unnumberedsubsec Q1.4.1: What is an @file{init.el} or @file{.emacs} and is there a sample one? | 1954 @node Q1.5.1, Q1.5.2, Q1.4.9, Introduction |
1955 @unnumberedsubsec Q1.5.1: What is an @file{init.el} or @file{.emacs} and is there a sample one? | |
1226 | 1956 |
1227 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to | 1957 The @file{init.el} or @file{.emacs} file is used to customize XEmacs to |
1228 your tastes. Starting in 21.4, the preferred location for the init file | 1958 your tastes. Starting in 21.4, the preferred location for the init file |
1229 is @file{~/.xemacs/init.el}; in previous versions, it was | 1959 is @file{~/.xemacs/init.el}; in previous versions, it was |
1230 @file{~/.emacs}. 21.4 still accepts the old location, but the first | 1960 @file{~/.emacs}. 21.4 still accepts the old location, but the first |
1248 under the @samp{Help} menu, but its location under that has changed in | 1978 under the @samp{Help} menu, but its location under that has changed in |
1249 various versions. Recently, look under the @samp{Samples} submenu.) To | 1979 various versions. Recently, look under the @samp{Samples} submenu.) To |
1250 determine the location of the @file{etc/} directory type the command | 1980 determine the location of the @file{etc/} directory type the command |
1251 @kbd{C-h v data-directory @key{RET}}. | 1981 @kbd{C-h v data-directory @key{RET}}. |
1252 | 1982 |
1253 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction | 1983 @node Q1.5.2, Q1.5.3, Q1.5.1, Introduction |
1254 @unnumberedsubsec Q1.4.2: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs? | 1984 @unnumberedsubsec Q1.5.2: Where do I put my @file{init.el} file? |
1255 | 1985 |
1256 Yes. The sample @file{init.el}/@file{.emacs} included in the XEmacs | 1986 @file{init.el} is the name of the init file starting with 21.4, and is |
1987 located in the subdirectory @file{.xemacs/} of your home directory. In | |
1988 prior versions, the init file is called @file{.emacs} and is located in | |
1989 your home directory. | |
1990 | |
1991 Your home directory under Windows is determined by the @samp{HOME} | |
1992 environment variable. If this is not set, it defaults to @samp{C:\}. | |
1993 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or | |
1994 select @samp{Control Panel->System->Advanced->Environment Variables...} | |
1995 under Windows NT/2000. | |
1996 | |
1997 @node Q1.5.3, Q1.5.4, Q1.5.2, Introduction | |
1998 @unnumberedsubsec Q1.5.3: Can I use the same @file{init.el} with the other Emacs? | |
1999 | |
2000 Yes. The sample @file{init.el} included in the XEmacs | |
1257 distribution will show you how to handle different versions and flavors | 2001 distribution will show you how to handle different versions and flavors |
1258 of Emacs. | 2002 of Emacs. |
1259 | 2003 |
1260 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction | 2004 @node Q1.5.4, Q1.5.5, Q1.5.3, Introduction |
1261 @unnumberedsubsec Q1.4.3: Any good tutorials around? | 2005 @unnumberedsubsec Q1.5.4: Any good XEmacs tutorials around? |
1262 | 2006 |
1263 There's the XEmacs tutorial available from the Help Menu under | 2007 There's the XEmacs tutorial available from the Help Menu under |
1264 @samp{Basics->Tutorials}, or by typing @kbd{C-h t}. To check whether | 2008 @samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether |
1265 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type | 2009 it's available in a non-english language, type @kbd{C-u C-h t TAB}, type |
1266 the first letters of your preferred language, then type @key{RET}. | 2010 the first letters of your preferred language, then type @key{RET}. |
1267 | 2011 |
1268 @comment There's an Emacs Lisp tutorial at | 2012 @comment There's an Emacs Lisp tutorial at |
1269 @comment | 2013 @comment |
1276 @comment @iftex | 2020 @comment @iftex |
1277 @comment @* | 2021 @comment @* |
1278 @comment @end iftex | 2022 @comment @end iftex |
1279 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}. | 2023 @comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}. |
1280 | 2024 |
1281 @node Q1.4.4, Q1.4.5, Q1.4.3, Introduction | 2025 @node Q1.5.5, Q1.5.6, Q1.5.4, Introduction |
1282 @unnumberedsubsec Q1.4.4: May I see an example of a useful XEmacs Lisp function? | 2026 @unnumberedsubsec Q1.5.5: May I see an example of a useful XEmacs Lisp function? |
1283 | 2027 |
1284 The following function does a little bit of everything useful. It does | 2028 The following function does a little bit of everything useful. It does |
1285 something with the prefix argument, it examines the text around the | 2029 something with the prefix argument, it examines the text around the |
1286 cursor, and it's interactive so it may be bound to a key. It inserts | 2030 cursor, and it's interactive so it may be bound to a key. It inserts |
1287 copies of the current word the cursor is sitting on at the cursor. If | 2031 copies of the current word the cursor is sitting on at the cursor. If |
1311 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing | 2055 hit @kbd{C-h f} to see what the function @code{interactive} does. Doing |
1312 this will tell you that the @code{*} requires a writable buffer, and | 2056 this will tell you that the @code{*} requires a writable buffer, and |
1313 @code{p} converts the prefix argument to a number, and | 2057 @code{p} converts the prefix argument to a number, and |
1314 @code{interactive} allows you to execute the command with @kbd{M-x}. | 2058 @code{interactive} allows you to execute the command with @kbd{M-x}. |
1315 | 2059 |
1316 @node Q1.4.5, Q1.4.6, Q1.4.4, Introduction | 2060 @node Q1.5.6, Q1.5.7, Q1.5.5, Introduction |
1317 @unnumberedsubsec Q1.4.5: And how do I bind it to a key? | 2061 @unnumberedsubsec Q1.5.6: And how do I bind it to a key? |
1318 | 2062 |
1319 To bind to a key do: | 2063 To bind to a key do: |
1320 | 2064 |
1321 @lisp | 2065 @lisp |
1322 (global-set-key "\C-cd" 'double-word) | 2066 (global-set-key "\C-cd" 'double-word) |
1323 @end lisp | 2067 @end lisp |
1324 | 2068 |
1325 Or interactively, @kbd{M-x global-set-key} and follow the prompts. | 2069 Or interactively, @kbd{M-x global-set-key} and follow the prompts. |
1326 | 2070 |
1327 @node Q1.4.6, , Q1.4.5, Introduction | 2071 @node Q1.5.7, Q1.5.8, Q1.5.6, Introduction |
1328 @unnumberedsubsec Q1.4.6: What's the difference between a macro and a function? | 2072 @unnumberedsubsec Q1.5.7: What's the difference between a macro and a function? |
1329 | 2073 |
1330 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: | 2074 Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: |
1331 | 2075 |
1332 @dfn{Macros} enable you to define new control constructs and other | 2076 @dfn{Macros} enable you to define new control constructs and other |
1333 language features. A macro is defined much like a function, but instead | 2077 language features. A macro is defined much like a function, but instead |
1342 | 2086 |
1343 Do not confuse the two terms with @dfn{keyboard macros}, which are | 2087 Do not confuse the two terms with @dfn{keyboard macros}, which are |
1344 another matter, entirely. A keyboard macro is a key bound to several | 2088 another matter, entirely. A keyboard macro is a key bound to several |
1345 other keys. Refer to manual for details. | 2089 other keys. Refer to manual for details. |
1346 | 2090 |
1347 @node Installation, Customization, Introduction, Top | 2091 @node Q1.5.8, , Q1.5.7, Introduction |
1348 @unnumbered 2 Installation and Trouble Shooting | 2092 @unnumberedsubsec Q1.5.8: What is @code{Custom}? |
2093 | |
2094 @code{Custom} is a system for customizing XEmacs options. | |
2095 | |
2096 You can access @code{Advanced (Customize)} from the @code{Options} menu | |
2097 or invoking one of customize commands by typing eg. | |
2098 @kbd{M-x customize}, @kbd{M-x customize-face}, | |
2099 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}. | |
2100 | |
2101 There is also new @samp{browser} mode for Customize. | |
2102 Try it out with @kbd{M-x customize-browse} | |
2103 | |
2104 @node Installation, Display Subsystems, Introduction, Top | |
2105 @unnumbered 2 Installation and Troubleshooting | |
1349 | 2106 |
1350 This is part 2 of the XEmacs Frequently Asked Questions list. This | 2107 This is part 2 of the XEmacs Frequently Asked Questions list. This |
1351 section is devoted to Installation, Maintenance and Trouble Shooting. | 2108 section is devoted to Installation, Maintenance and Troubleshooting. |
1352 | 2109 |
1353 @menu | 2110 @menu |
1354 Installation: | 2111 2.0: Installation (General), Packages |
1355 * Q2.0.1:: Running XEmacs without installing. | 2112 * Q2.0.1:: How do I install the packages? |
1356 * Q2.0.2:: XEmacs is too big. | 2113 * Q2.0.2:: I don't need no steenkin' packages. Do I? |
1357 * Q2.0.3:: Compiling XEmacs with Netaudio. | 2114 * Q2.0.3:: Where do I find external libraries? |
1358 * Q2.0.4:: Problems with Linux and ncurses. | 2115 * Q2.0.4:: How do I specify the paths that XEmacs uses for finding files? |
1359 * Q2.0.5:: Do I need X11 to run XEmacs? | 2116 * Q2.0.5:: Running XEmacs without installing |
1360 * Q2.0.6:: I'm having strange crashes. What do I do? | 2117 * Q2.0.6:: XEmacs is too big |
1361 * Q2.0.7:: Libraries in non-standard locations. | 2118 * Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW) |
1362 * Q2.0.8:: can't resolve symbol _h_errno | 2119 |
1363 * Q2.0.9:: Where do I find external libraries? | 2120 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW) |
1364 * Q2.0.10:: After I run configure I find a coredump, is something wrong? | 2121 * Q2.1.1:: Libraries in non-standard locations |
1365 * Q2.0.11:: XEmacs can't resolve host names. | 2122 * Q2.1.2:: Why can't I strip XEmacs? |
1366 * Q2.0.12:: Why can't I strip XEmacs? | 2123 * Q2.1.3:: Compiling XEmacs with Netaudio. |
1367 * Q2.0.13:: I don't need no steenkin' packages. Do I? | 2124 * Q2.1.4:: Problems with Linux and ncurses. |
1368 * Q2.0.14:: I don't want to install a million .els one at a time! | 2125 |
1369 * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) | 2126 2.2: Windows Installation (Windows, Cygwin, MinGW) |
1370 * Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) | 2127 * Q2.2.1:: What exactly are all the different ways to build XEmacs under Windows? |
1371 | 2128 * Q2.2.2:: What compiler/libraries do I need to compile XEmacs? |
1372 Trouble Shooting: | 2129 * Q2.2.3:: How do I compile the native port? |
1373 * Q2.1.1:: XEmacs just crashed on me! | 2130 * Q2.2.4:: What do I need for Cygwin? |
1374 * Q2.1.2:: Cryptic Minibuffer messages. | 2131 * Q2.2.5:: How do I compile under Cygwin? |
1375 * Q2.1.3:: Translation Table Syntax messages at Startup. | 2132 * Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? |
1376 * Q2.1.4:: Startup warnings about deducing proper fonts? | 2133 * Q2.2.7:: How do I compile with X support? |
1377 * Q2.1.5:: XEmacs cannot connect to my X Terminal. | 2134 * Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW) |
1378 * Q2.1.6:: XEmacs just locked up my Linux X server. | 2135 |
1379 * Q2.1.7:: HP Alt key as Meta. | 2136 2.3: General Troubleshooting |
1380 * Q2.1.8:: got (wrong-type-argument color-instance-p nil)! | 2137 * Q2.3.1:: Help! XEmacs just crashed on me! |
1381 * Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. | 2138 * Q2.3.2:: XEmacs crashes and I compiled it myself. |
1382 * Q2.1.10:: Warnings from incorrect key modifiers. | 2139 * Q2.3.3:: How to debug an XEmacs problem with a debugger |
1383 * Q2.1.11:: Can't instantiate image error... in toolbar | 2140 * Q2.3.4:: I get a cryptic error message when trying to do something. |
1384 * Q2.1.12:: Regular Expression Problems on DEC OSF1. | 2141 * Q2.3.5:: XEmacs hangs when I try to do something. |
1385 * Q2.1.13:: HP/UX 10.10 and @code{create_process} failure | 2142 * Q2.3.6:: I get an error message when XEmacs is running in batch mode. |
1386 * Q2.1.14:: @kbd{C-g} doesn't work for me. Is it broken? | 2143 * Q2.3.7:: The keyboard or mouse is not working properly, or I have some other event-related problem. |
1387 * Q2.1.15:: How to debug an XEmacs problem with a debugger. | 2144 * Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken? |
1388 * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. | 2145 * Q2.3.9:: How do I debug process-related problems? |
1389 * Q2.1.17:: @samp{Marker does not point anywhere}. | 2146 * Q2.3.10:: XEmacs is outputting lots of X errors. |
1390 * Q2.1.18:: XEmacs is outputting lots of X errors. | 2147 * Q2.3.11:: After upgrading, XEmacs won't do `foo' any more! |
1391 * Q2.1.19:: XEmacs does not follow the local timezone. | 2148 |
1392 * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} | 2149 2.4: Startup-Related Problems |
1393 * Q2.1.21:: [This question intentionally left blank] | 2150 * Q2.4.1:: XEmacs cannot connect to my X Terminal! |
1394 * Q2.1.22:: XEmacs seems to take a really long time to do some things. | 2151 * Q2.4.2:: XEmacs won't start on Windows. |
1395 * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. | 2152 * Q2.4.3:: XEmacs won't start without network. |
1396 * Q2.1.24:: XEmacs won't start without network. | 2153 * Q2.4.4:: Startup warnings about deducing proper fonts? |
1397 * Q2.1.25:: After upgrading, XEmacs won't do `foo' any more! | 2154 * Q2.4.5:: Warnings from incorrect key modifiers. |
2155 * Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? | |
1398 @end menu | 2156 @end menu |
1399 | 2157 |
2158 @unnumberedsec 2.0: Installation (General), Packages | |
2159 | |
1400 @node Q2.0.1, Q2.0.2, Installation, Installation | 2160 @node Q2.0.1, Q2.0.2, Installation, Installation |
1401 @unnumberedsec 2.0: Installation | 2161 @unnumberedsubsec Q2.0.1: How do I install the packages? |
1402 @unnumberedsubsec Q2.0.1: Running XEmacs without installing | 2162 |
2163 Many people really liked the old way that packages were bundled and do | |
2164 not want to mess with packages at all. You can grab all the packages at | |
2165 once like you used to with old XEmacs versions. Download the file | |
2166 | |
2167 @file{xemacs-sumo.tar.gz} | |
2168 | |
2169 For an XEmacs compiled with Mule you also need | |
2170 | |
2171 @file{xemacs-mule-sumo.tar.gz} | |
2172 | |
2173 These are in the @file{packages} directory on your XEmacs mirror | |
2174 archive. N.B. They are called 'Sumo Tarballs' for good reason. They | |
2175 are currently about 15MB and 2.3MB (gzipped) respectively. | |
2176 | |
2177 Install them on Unix and Mac OS X using the shell/Terminal command | |
2178 | |
2179 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -} | |
2180 | |
2181 Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to | |
2182 @file{configure}, and defaults to @file{/usr/local}. | |
2183 | |
2184 If you have the packages somewhere nonstandard and don't want to | |
2185 bother with @samp{$prefix} (for example, you're a developer and are | |
2186 compiling the packages yourself, and want your own private copy of | |
2187 everything), you can also directly specify this using @file{configure}. | |
2188 To do this under 21.5 and above use the @samp{--package-prefix} parameter | |
2189 to specify the directory under which you untarred the above tarballs. | |
2190 Under 21.4 and previous you need to use @samp{--package-path}, | |
2191 something like this: | |
2192 | |
2193 @example | |
2194 configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ... | |
2195 @end example | |
2196 | |
2197 Under Windows, you need to place the above @samp{tar.gz} files in the | |
2198 directory specified using the @samp{PACKAGE_PREFIX} value in | |
2199 @file{nt/config.inc} and by default is @file{\Program Files\XEmacs}. | |
2200 (To untar a @samp{tar.gz} file you will need to use a utility such as | |
2201 WinZip, unless you have Cygwin or a similar environment installed, in | |
2202 which case the above Unix shell command should work fine.) If you want | |
2203 the packages somewhere else, just change @samp{PACKAGE_PREFIX}. | |
2204 | |
2205 Note that XEmacs finds the packages automatically anywhere underneath | |
2206 the directory tree where it expects to find the packages. All you | |
2207 need to do is put stuff there; you don't need to run any program to | |
2208 tell XEmacs to find the packges, or do anything of that sort. | |
2209 | |
2210 See @file{README.packages} in the top-level source directory for more | |
2211 detailed installation instructions. | |
2212 | |
2213 As the Sumo tarballs are not regenerated as often as the individual | |
2214 packages, it is recommended that you use the automatic package tools | |
2215 afterwards to pick up any recent updates. | |
2216 | |
2217 @emph{More detailed info}: If the package path is not explicitly | |
2218 specified, XEmacs looks for the package directory | |
2219 @file{xemacs-packages} (and @file{mule-packages}, etc.) first under | |
2220 @samp{~/.xemacs}, then for a sister directory | |
2221 @file{lib/xemacs-VERSION} of the directory in which the XEmacs | |
2222 executable is located, then for a sister directory @file{lib/xemacs}. | |
2223 The XEmacs executable (under Unix at least) is installed by default in | |
2224 @file{/usr/local/bin}; this explains why XEmacs in its default | |
2225 installation will find packages that you put under | |
2226 @file{/usr/local/lib/xemacs}. | |
2227 | |
2228 #### I'm not sure what exactly happens when the package path is | |
2229 specifically given, as is the case when the @samp{--package-prefix} or | |
2230 @samp{--package-path} options are given to @file{configure}, and | |
2231 always under Microsoft Windows. | |
2232 | |
2233 @emph{NOTE}: For detailed information about how the package | |
2234 hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp | |
2235 Reference Manual}. | |
2236 | |
2237 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation | |
2238 @unnumberedsubsec Q2.0.2: I don't need no steenkin' packages. Do I? | |
2239 | |
2240 Strictly speaking, no. XEmacs will build and install just fine without | |
2241 any packages installed. However, only the most basic editing functions | |
2242 will be available with no packages installed, so installing packages is | |
2243 an essential part of making your installed XEmacs _useful_. | |
2244 | |
2245 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation | |
2246 @unnumberedsubsec Q2.0.3: Where do I find external libraries? | |
2247 | |
2248 All external libraries used by XEmacs can be found at the XEmacs FTP | |
2249 site | |
2250 @iftex | |
2251 @* | |
2252 @end iftex | |
2253 @uref{http://ftp.xemacs.org/pub/aux/}. | |
2254 | |
2255 The library versions available here are known to work with XEmacs. | |
2256 (Newer versions will probably work as well but we can't guarantee it.) | |
2257 We try to keep the libraries up-to-date but may not always succeed. | |
2258 If you want to make sure of getting the latest version, check the | |
2259 canonical locations below. | |
2260 | |
2261 The canonical locations (at the time of this writing) are as follows: | |
2262 | |
2263 @subheading Databases: | |
2264 | |
2265 These DBM implementations are supported by XEmacs: | |
2266 native dbm (provided by OS), GDBM, and Berkeley DB version 1, 2 and 3. | |
2267 | |
2268 @example | |
2269 GDBM is the GNU DBM library, compatible with the Unix dbm library. | |
2270 gdbm-1.8.3.tar.gz | |
2271 ftp://ftp.gnu.org/pub/gnu/gdbm/ | |
2272 http://www.gnu.org/software/gdbm/gdbm.html | |
2273 configure flag: --with-database=gnudbm | |
2274 | |
2275 Berkeley DB is provided by Sleepycat Software. | |
2276 db-4.1.25.tar.gz | |
2277 http://www.sleepycat.com/ | |
2278 configure flag: --with-database=berkdb | |
2279 | |
2280 OpenLDAP is an implementation of the LDAP X.500 Directory protocol. | |
2281 openldap-2.1.12.tgz | |
2282 http://www.openldap.org/ | |
2283 configure flag: --with-ldap | |
2284 @end example | |
2285 | |
2286 @subheading Image Format Libraries: | |
2287 | |
2288 @example | |
2289 `compface' is an old library for viewing X-Faces in messages. | |
2290 It is no longer being maintained and has been frozen for 10 years or | |
2291 so, but still works. It should be compiled with the same options that | |
2292 X11 was compiled with on your system. The version of this library at | |
2293 xemacs.org includes the `xbm2xface.pl' script, written by | |
2294 @email{stig@@hackvan.com, Stig}, which may be useful when generating | |
2295 your own xface. | |
2296 compface.tar.gz | |
2297 ftp://ftp.cs.indiana.edu/pub/faces/compface/ | |
2298 configure flag: --with-xface | |
2299 | |
2300 The JPEG image format library | |
2301 jpegsrc.v6b.tar.gz | |
2302 ftp://ftp.uu.net/graphics/jpeg/ | |
2303 http://www.ijg.org/ | |
2304 configure flag: --with-jpeg | |
2305 | |
2306 The TIFF image format library | |
2307 tiff-v3.4-tar.gz | |
2308 ftp://ftp.sgi.com/graphics/tiff/ | |
2309 configure flag: --with-tiff | |
2310 | |
2311 The XPM image format library | |
2312 xpm-3.4k.tar.gz | |
2313 ftp://koala.inria.fr/pub/xpm/ | |
2314 http://www.inria.fr/koala/lehors/xpm.html | |
2315 configure flag: --with-xpm | |
2316 | |
2317 The PNG image format library | |
2318 libpng-1.2.15.tar.gz | |
2319 http://www.libpng.org/pub/png/ | |
2320 configure flag: --with-png | |
2321 | |
2322 The ZLIB compression library is used by the PNG library. | |
2323 A GZIP coding system is also available, in XEmacs 21.5 and onward. | |
2324 zlib-1.1.4.tar.gz | |
2325 http://www.gzip.org/zlib/ | |
2326 @end example | |
2327 | |
2328 @subheading Other Multimedia: | |
2329 | |
2330 @example | |
2331 Network Audio System (NAS) is a client-server sound library for X. | |
2332 nas-1.6.src.tar.gz | |
2333 ftp://ftp.x.org/contrib/audio/nas/ | |
2334 http://radscan.com/nas.html | |
2335 configure flag: --with-nas | |
2336 | |
2337 Enlightened Sound Daemon (ESD) is yet another sound system. | |
2338 esound-0.2.8.tar.gz | |
2339 http://www.tux.org/~ricdude/EsounD.html | |
2340 | |
2341 Netpbm is a collection of programs that XEmacs might use at runtime. | |
2342 netpbm-1mar1994.tar.gz | |
2343 netpbm-9.2.tar.gz | |
2344 ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/ | |
2345 | |
2346 Xaw3d is designed to be a drop-in replacement for the Athena widget | |
2347 library that `looks cooler'. | |
2348 Xaw3d-1.5.tar.gz | |
2349 ftp://ftp.x.org/contrib/widgets/Xaw3d/ | |
2350 @end example | |
2351 | |
2352 @subheading Internationalization: | |
2353 | |
2354 @example | |
2355 Canna is a Japanese language input method. | |
2356 Canna has not been updated since 1996. | |
2357 Canna35b2.tar.gz | |
2358 cfw35f1p.exe (Canna on W95) | |
2359 http://www.nec.co.jp/canna/ (in Japanese) | |
2360 http://www.nec.co.jp/canna/c-down.html (download site, for those not able | |
2361 to read Japanese) | |
2362 configure flag: --with-canna | |
2363 | |
2364 Wnn is a multi-language mule input method. | |
2365 Wnn4 is the free version, while Wnn6 is the commercial version. | |
2366 Wnn4.2.tar.gz | |
2367 ftp://ftp.omronsoft.co.jp/pub/Wnn6/ (commercial version) | |
2368 | |
2369 Wnn4 appears completely orphaned; searches on google turn up XEmacs' own | |
2370 site first. However, here is a (very old) site with some info on WNN: | |
2371 http://web.kyoto-inet.or.jp/people/tomoko-y/biwa/root/wnn_e.html | |
2372 | |
2373 configure flag: --with-wnn | |
2374 | |
2375 Mew is a multi-lingual mailreader. | |
2376 mew-1.94.2.tar.gz | |
2377 http://www.mew.org/ | |
2378 | |
2379 kterm is a multi-lingual terminal emulator with special support for | |
2380 Asian languages with large character sets. | |
2381 kterm-6.2.0.tar.gz | |
2382 ftp://ftp.x.org/contrib/applications/ | |
2383 | |
2384 ispell is a spelling checker with support for multiple languages. | |
2385 ispell-3.2.06.tar.gz | |
2386 http://ficus-www.cs.ucla.edu/ficus-members/geoff/ispell.html | |
2387 http://www.kdstevens.com/~stevens/ispell-page.html | |
2388 | |
2389 SKK (Simple Kana-to-Kanji) is a simple input method for Japanese. | |
2390 It has been modified to work with XEmacs. | |
2391 skk-8.6x.tar.gz | |
2392 | |
2393 X11 fonts for numerous languages. | |
2394 intlfonts-1.2.tar.gz | |
2395 http://www.gnu.org/directory/localization/intlfonts.html | |
2396 @end example | |
2397 | |
2398 @subheading Miscellaneous: | |
2399 | |
2400 @example | |
2401 ncurses is the standard free software curses library. | |
2402 ncurses-5.3.tar.gz | |
2403 http://dickey.his.com/ncurses/ncurses.html | |
2404 ftp://dickey.his.com/ncurses/ | |
2405 @end example | |
2406 | |
2407 @subheading Developer Tools: | |
2408 | |
2409 @example | |
2410 CVS is the version control system used by XEmacs to manage the sources. | |
2411 cvs-1.11.5.tar.gz | |
2412 http:/www.cvshome.org/ | |
2413 | |
2414 bzip2 is a compressor that compresses much better than gzip. | |
2415 bzip2-1.0.2.tar.gz | |
2416 http://sources.redhat.com/bzip2/ | |
2417 | |
2418 texi2html is a script that converts Texinfo pages to HTML. | |
2419 texi2html-1.64.tar.gz | |
2420 http://www.mathematik.uni-kl.de/~obachman/Texi2html/ | |
2421 | |
2422 Gnats is a bug tracking system. Red Hat recommends using GNATS 4.0 for any | |
2423 new installations (see the beta below). | |
2424 gnats-3.113.tar.gz | |
2425 gnats-3.999.2.tar.gz | |
2426 cern_wwwgnats_v2.0-beta.tar.gz (WWW front end to Gnats) | |
2427 http://sources.redhat.com/gnats/ | |
2428 | |
2429 Use autoconf to generate `configure' from `configure.in'. | |
2430 NOTE: There is a more recent series, 2.5x, that XEmacs doesn't currently | |
2431 work with. | |
2432 autoconf-2.13.tar.gz | |
2433 http://www.gnu.org/software/autoconf/ | |
2434 | |
2435 Use the `applypatch' program from the makepatch package | |
2436 to apply patches to upgrade from one beta release to another. | |
2437 Use this if you have a slow or expensive connection to the Net. | |
2438 makepatch-2.00_09.tar.gz | |
2439 http://www.squirrel.nl/people/jvromans/ | |
2440 @end example | |
2441 | |
2442 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation | |
2443 @unnumberedsubsec Q2.0.4: How do I specify the paths that XEmacs uses for finding files? | |
2444 | |
2445 You can specify what paths to use by using a number of different flags | |
2446 when running configure. See the section MAKE VARIABLES in the top-level | |
2447 file INSTALL in the XEmacs distribution for a listing of those flags. | |
2448 | |
2449 Most of the time, however, the simplest fix is: @strong{do not} specify | |
2450 paths as you might for GNU Emacs. XEmacs can generally determine the | |
2451 necessary paths dynamically at run time. The only path that generally | |
2452 needs to be specified is the root directory to install into. That can | |
2453 be specified by passing the @code{--prefix} flag to configure. For a | |
2454 description of the XEmacs install tree, please consult the @file{NEWS} | |
2455 file. | |
2456 | |
2457 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation | |
2458 @unnumberedsubsec Q2.0.5: Running XEmacs without installing | |
1403 | 2459 |
1404 How can I just try XEmacs without installing it? | 2460 How can I just try XEmacs without installing it? |
1405 | 2461 |
1406 XEmacs will run in place without requiring installation and copying of | 2462 XEmacs will run in place without requiring installation and copying of |
1407 the Lisp directories, and without having to specify a special build-time | 2463 the Lisp directories, and without having to specify a special build-time |
1417 (You will obviously use whatever directory you downloaded the source | 2473 (You will obviously use whatever directory you downloaded the source |
1418 tree to instead of @file{/i/xemacs-20.2}). | 2474 tree to instead of @file{/i/xemacs-20.2}). |
1419 | 2475 |
1420 This will let you run XEmacs without massive copying. | 2476 This will let you run XEmacs without massive copying. |
1421 | 2477 |
1422 @node Q2.0.2, Q2.0.3, Q2.0.1, Installation | 2478 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation |
1423 @unnumberedsubsec Q2.0.2: XEmacs is too big | 2479 @unnumberedsubsec Q2.0.6: XEmacs is too big |
1424 | 2480 |
1425 The space required by the installation directories can be | 2481 The space required by the installation directories can be |
1426 reduced dramatically if desired. Gzip all the .el files. Remove all | 2482 reduced dramatically if desired. Gzip all the .el files. Remove all |
1427 the packages you'll never want to use. Remove the TexInfo manuals. | 2483 the packages you'll never want to use. Remove the TexInfo manuals. |
1428 Remove the Info (and use just hardcopy versions of the manual). Remove | 2484 Remove the Info (and use just hardcopy versions of the manual). Remove |
1447 (@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages | 2503 (@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages |
1448 you wish to delete, and then @kbd{x} to delete them. | 2504 you wish to delete, and then @kbd{x} to delete them. |
1449 | 2505 |
1450 Another method is to do @code{M-x package-get-delete-package}. | 2506 Another method is to do @code{M-x package-get-delete-package}. |
1451 | 2507 |
1452 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation | 2508 @node Q2.0.7, Q2.1.1, Q2.0.6, Installation |
1453 @unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio. | 2509 @unnumberedsubsec Q2.0.7: EFS fails with "500 AUTH not understood" (NEW) |
2510 | |
2511 A typical error: FTP Error: USER request failed; 500 AUTH not understood. | |
2512 | |
2513 Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends | |
2514 on comp.emacs.xemacs: | |
2515 | |
2516 tell your ftp client to not attempt AUTH authentication (or do not | |
2517 use FTP servers that don't understand AUTH) | |
2518 | |
2519 and notes that you need to add an element (often "-u") to | |
2520 `efs-ftp-program-args'. Use M-x customize-variable, and verify the | |
2521 needed flag with `man ftp' or other local documentation. | |
2522 | |
2523 @unnumberedsec 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW) | |
2524 | |
2525 @node Q2.1.1, Q2.1.2, Q2.0.7, Installation | |
2526 @unnumberedsubsec Q2.1.1: Libraries in non-standard locations | |
2527 | |
2528 I have x-faces, jpeg, xpm etc. all in different places. I've tried | |
2529 space-separated, comma-separated, several --site-libraries, all to no | |
2530 avail. | |
2531 | |
2532 @example | |
2533 --site-libraries='/path/one /path/two /path/etc' | |
2534 @end example | |
2535 | |
2536 @node Q2.1.2, Q2.1.3, Q2.1.1, Installation | |
2537 @unnumberedsubsec Q2.1.2: Why can't I strip XEmacs? | |
2538 | |
2539 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: | |
2540 | |
2541 @quotation | |
2542 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The | |
2543 link gives you a bare-boned emacs (called temacs). temacs is then run, | |
2544 preloading some of the lisp files. The result is then dumped into a new | |
2545 executable, named xemacs, which will contain all of the preloaded lisp | |
2546 functions and data. | |
2547 | |
2548 Now, during the dump itself, the executable (code+data+symbols) is | |
2549 written on disk using a special unexec() function. This function is | |
2550 obviously heavily system dependent. And on some systems, it leads to an | |
2551 executable which, although valid, cannot be stripped without damage. If | |
2552 memory serves, this is especially the case for AIX binaries. On other | |
2553 architectures it might work OK. | |
2554 | |
2555 The Right Way to strip the emacs binary is to strip temacs prior to | |
2556 dumping xemacs. This will always work, although you can do that only if | |
2557 you install from sources (as temacs is @file{not} part of the binary | |
2558 kits). | |
2559 @end quotation | |
2560 | |
2561 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes: | |
2562 | |
2563 @quotation | |
2564 Here is the trick: | |
2565 | |
2566 @enumerate | |
2567 @item | |
2568 [ ./configure; make ] | |
2569 | |
2570 @item | |
2571 rm src/xemacs | |
2572 | |
2573 @item | |
2574 strip src/temacs | |
2575 | |
2576 @item | |
2577 make | |
2578 | |
2579 @item | |
2580 cp src/xemacs /usr/local/bin/xemacs | |
2581 | |
2582 @item | |
2583 cp lib-src/DOC-19.16-XEmacs | |
2584 @iftex | |
2585 \ @* | |
2586 @end iftex | |
2587 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout | |
2588 @end enumerate | |
2589 @end quotation | |
2590 | |
2591 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation | |
2592 @unnumberedsubsec Q2.1.3: Compiling XEmacs with Netaudio. | |
1454 | 2593 |
1455 What is the best way to compile XEmacs with the netaudio system, since I | 2594 What is the best way to compile XEmacs with the netaudio system, since I |
1456 have got the netaudio system compiled but installed at a weird place, I | 2595 have got the netaudio system compiled but installed at a weird place, I |
1457 am not root. Also in the READMEs it does not say anything about | 2596 am not root. Also in the READMEs it does not say anything about |
1458 compiling with the audioserver? | 2597 compiling with the audioserver? |
1476 BTW, netaudio has been renamed as it has a name clash with something | 2615 BTW, netaudio has been renamed as it has a name clash with something |
1477 else, so if you see references to NAS or Network Audio System, it's the | 2616 else, so if you see references to NAS or Network Audio System, it's the |
1478 same thing. It also might be found at | 2617 same thing. It also might be found at |
1479 @uref{ftp://ftp.x.org/contrib/audio/nas/}. | 2618 @uref{ftp://ftp.x.org/contrib/audio/nas/}. |
1480 | 2619 |
1481 @node Q2.0.4, Q2.0.5, Q2.0.3, Installation | 2620 @node Q2.1.4, Q2.2.1, Q2.1.3, Installation |
1482 @unnumberedsubsec Q2.0.4: Problems with Linux and ncurses. | 2621 @unnumberedsubsec Q2.1.4: Problems with Linux and ncurses. |
1483 | 2622 |
1484 On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc | 2623 On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc |
1485 5.2.18, XEmacs 20.0b20 is unable to open a tty device: | 2624 5.2.18, XEmacs 20.0b20 is unable to open a tty device: |
1486 | 2625 |
1487 @example | 2626 @example |
1498 @quotation | 2637 @quotation |
1499 Your ncurses configuration is messed up. Your /usr/lib/terminfo is a | 2638 Your ncurses configuration is messed up. Your /usr/lib/terminfo is a |
1500 bad pointer, perhaps to a CD-ROM that is not inserted. | 2639 bad pointer, perhaps to a CD-ROM that is not inserted. |
1501 @end quotation | 2640 @end quotation |
1502 | 2641 |
1503 @node Q2.0.5, Q2.0.6, Q2.0.4, Installation | 2642 @unnumberedsec 2.2: Windows Installation (Windows, Cygwin, MinGW) |
1504 @unnumberedsubsec Q2.0.5: Do I need X11 to run XEmacs? | 2643 |
1505 | 2644 @node Q2.2.1, Q2.2.2, Q2.1.4, Installation |
1506 No. The name @dfn{XEmacs} is unfortunate in the sense that it is | 2645 @unnumberedsubsec Q2.2.1: What exactly are all the different ways to build XEmacs under Windows? |
1507 @strong{not} an X Window System-only version of Emacs. XEmacs has | 2646 |
1508 full color support on a color-capable character terminal. | 2647 XEmacs can be built in several ways in the MS Windows environment. |
1509 | 2648 |
1510 @node Q2.0.6, Q2.0.7, Q2.0.5, Installation | 2649 The standard way is what we call the "native" port. It uses the Win32 |
1511 @unnumberedsubsec Q2.0.6: I'm having strange crashes. What do I do? | 2650 API and has no connection with X whatsoever -- it does not require X |
1512 | 2651 libraries to build, nor does it require an X server to run. The native |
1513 There have been a variety of reports of crashes due to compilers with | 2652 port is the most reliable version and provides the best graphical |
1514 buggy optimizers. Please see the @file{PROBLEMS} file that comes with | 2653 support. Almost all development is geared towards this version, and |
1515 XEmacs to read what it says about your platform. | 2654 there is little reason not to use it. |
1516 | 2655 |
1517 If you compiled XEmacs using @samp{--use-union-type} (or the option | 2656 The second way to build is the Cygwin port. It takes advantage of |
1518 @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try | 2657 Cygnus emulation library under Win32. @xref{Q1.1.4, What are Cygwin |
1519 recompiling again without it. The union type has been known to trigger | 2658 and MinGW, and do I need them to run XEmacs?}, for more information. |
1520 compiler errors in a number of cases. | 2659 |
1521 | 2660 A third way is the MinGW port. It uses the Cygwin environment to |
1522 @node Q2.0.7, Q2.0.8, Q2.0.6, Installation | 2661 build but does not require it at runtime. @xref{Q1.1.4, What are |
1523 @unnumberedsubsec Q2.0.7: Libraries in non-standard locations | 2662 Cygwin and MinGW, and do I need them to run XEmacs?}, for more |
1524 | 2663 information. |
1525 I have x-faces, jpeg, xpm etc. all in different places. I've tried | 2664 |
1526 space-separated, comma-separated, several --site-libraries, all to no | 2665 Finally, you might also be able to build the non-Cygwin, non-MinGW "X" |
1527 avail. | 2666 port. This was actually the first version of XEmacs that ran under MS |
2667 Windows, and although the code is still in XEmacs, it's essentially | |
2668 orphaned and it's unlikely it will compile without a lot of work. If | |
2669 you want an MS Windows versin of XEmacs that supports X, use the Cygwin | |
2670 version. (The X support there is actively maintained, so that Windows | |
2671 developers can test the X support in XEmacs.) | |
2672 | |
2673 @node Q2.2.2, Q2.2.3, Q2.2.1, Installation | |
2674 @unnumberedsubsec Q2.2.2: What compiler/libraries do I need to compile XEmacs? | |
2675 | |
2676 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have | |
2677 some beta testers currently trying to compile with VC.NET, aka version | |
2678 7.0, but we can't yet report complete success.) For the Cygwin and | |
2679 MinGW versions, you need the Cygwin environment, which comes with GCC, | |
2680 the compiler used for those versions. @xref{Q1.1.4, What are Cygwin | |
2681 and MinGW, and do I need them to run XEmacs?}, for more information on | |
2682 Cygwin and MinGW. | |
2683 | |
2684 @node Q2.2.3, Q2.2.4, Q2.2.2, Installation | |
2685 @unnumberedsubsec Q2.2.3: How do I compile the native port? | |
2686 | |
2687 Please read the file @file{nt/README} in the XEmacs distribution, which | |
2688 contains the full description. | |
2689 | |
2690 @node Q2.2.4, Q2.2.5, Q2.2.3, Installation | |
2691 @unnumberedsubsec Q2.2.4: What do I need for Cygwin? | |
2692 | |
2693 You can find the Cygwin tools and compiler at: | |
2694 | |
2695 @uref{http://www.cygwin.com/} | |
2696 | |
2697 Click on the @samp{Install or update now!} link, which will download a | |
2698 file @file{setup.exe}, which you can use to download everything | |
2699 else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is | |
2700 probably the best.) You should go ahead and install everything -- | |
2701 you'll get various ancillary libraries that XEmacs needs or likes, | |
2702 e.g. XPM, PNG, JPEG, TIFF, etc. You can also get X Windows here, if you | |
2703 want to compile under X. | |
2704 | |
2705 If you want to compile without X, you will need the @file{xpm-nox} | |
2706 library, which must be specifically selected in the Cygwin netinstaller; | |
2707 it is not selected by default. The package has had various names. | |
2708 Currently it is called @file{cygXpm-noX4.dll}. | |
2709 | |
2710 @node Q2.2.5, Q2.2.6, Q2.2.4, Installation | |
2711 @unnumberedsubsec Q2.2.5: How do I compile under Cygwin? | |
2712 | |
2713 Similar as on Unix; use the usual `configure' and `make' process. | |
2714 Some problems to watch out for: | |
2715 | |
2716 @itemize @bullet | |
2717 @item | |
2718 make sure HOME is set. This controls where you | |
2719 @file{init.el} file comes from; | |
2720 | |
2721 @item | |
2722 @samp{CYGWIN} needs to be set to @samp{tty} for process support to work; | |
2723 | |
2724 @item | |
2725 picking up some other grep or other UNIX-like tools can kill configure; | |
2726 | |
2727 @item | |
2728 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive | |
2729 number; | |
2730 | |
2731 @item | |
2732 (Unconfirmed) The Cygwin version doesn't understand | |
2733 @file{//machine/path} type paths so you will need to manually mount a | |
2734 directory of this form under a unix style directory for a build to work | |
2735 on the directory; | |
2736 | |
2737 @item | |
2738 If you're building @strong{WITHOUT} X11, don't forget to change symlinks | |
2739 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to | |
2740 the non-X versions of these libraries. By default they point to the X | |
2741 versions. So: | |
1528 | 2742 |
1529 @example | 2743 @example |
1530 --site-libraries='/path/one /path/two /path/etc' | 2744 /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a |
2745 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a | |
1531 @end example | 2746 @end example |
1532 | 2747 |
1533 @node Q2.0.8, Q2.0.9, Q2.0.7, Installation | 2748 (This advice may now be obsolete because of the availability of the |
1534 @unnumberedsubsec Q2.0.8: can't resolve symbol _h_errno | 2749 cygXpm-noX4.dll package from Cygwin. Send confirmation to |
1535 | 2750 @email{faq@@xemacs.org}.) |
1536 You are using the Linux/ELF distribution of XEmacs 19.14, and your ELF | 2751 |
1537 libraries are out of date. You have the following options: | 2752 @item |
1538 | 2753 Other problems are listed in the @file{PROBLEMS} file, in the top-level |
1539 @enumerate | 2754 directory of the XEmacs sources. |
1540 @item | 2755 |
1541 Upgrade your libc to at least 5.2.16 (better is 5.2.18, 5.3.12, or | 2756 @end itemize |
1542 5.4.10). | 2757 |
1543 | 2758 |
1544 @item | 2759 @node Q2.2.6, Q2.2.7, Q2.2.5, Installation |
1545 Patch the XEmacs binary by replacing all occurrences of | 2760 @unnumberedsubsec Q2.2.6: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? |
1546 @samp{_h_errno^@@} with | 2761 |
1547 @iftex | 2762 Similar to the method for Unix. Things to remember: |
1548 @* | 2763 |
1549 @end iftex | 2764 @itemize @bullet |
1550 @samp{h_errno^@@^@@}. Any version of Emacs will | 2765 @item |
1551 suffice. If you don't understand how to do this, don't do it. | 2766 Specify the target host on the command line for @file{./configure}, e.g. |
1552 | 2767 @samp{./configure i586-pc-mingw32}. |
1553 @item | 2768 |
1554 Rebuild XEmacs yourself---any working ELF version of libc should be | 2769 @item |
1555 O.K. | 2770 Be sure that your build directory is mounted such that it has the |
1556 @end enumerate | 2771 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows |
1557 | 2772 path (@file{c:\build\xemacs}). |
1558 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes: | 2773 |
1559 | 2774 @item |
1560 @quotation | 2775 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng}, |
1561 Why not use a Perl one-liner for No. 2? | 2776 @file{compface}, etc. |
1562 | 2777 |
1563 @example | 2778 @item |
1564 perl -pi -e 's/_h_errno\0/h_errno\0\0/g' \ | 2779 Specify the target location of the extra libs on the command line |
1565 /usr/local/bin/xemacs-19.14 | 2780 to @file{configure}, e.g. |
1566 @end example | 2781 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}. |
1567 | 2782 @end itemize |
1568 NB: You @emph{must} patch @file{/usr/local/bin/xemacs-19.14}, and not | 2783 |
1569 @file{xemacs} because @file{xemacs} is a link to @file{xemacs-19.14}; | 2784 @node Q2.2.7, Q2.2.8, Q2.2.6, Installation |
1570 the Perl @samp{-i} option will cause unwanted side-effects if applied to | 2785 @unnumberedsubsec Q2.2.7: How do I compile with X support? |
1571 a symbolic link. | 2786 |
1572 @end quotation | 2787 To compile under Cygwin, all you need to do is install XFree86, which |
1573 | 2788 is available as part of the standard Cygwin installation. |
1574 @email{steve@@xemacs.org, SL Baur} writes: | 2789 @uref{http://www.cygwin.com/}. Once installed, @file{configure} |
1575 | 2790 should automatically find the X libraries and compile with X support. |
1576 @quotation | 2791 |
1577 If you build against a recent libc-5.4 (late enough to have caused | 2792 As noted above, the non-Cygwin X support is basically orphaned, and |
1578 problems earlier in the beta cycle) and then run with an earlier version | 2793 probably won't work. But if it want to try, it's described in |
1579 of libc, you get a | 2794 @file{nt/README} in some detail. Basically, you need to get X11 |
1580 | 2795 libraries from @uref{ftp://ftp.x.org}, and compile them. If the |
1581 @example | 2796 precompiled versions are available somewhere, we don't know of it. |
1582 $ xemacs | 2797 |
1583 xemacs: can't resolve symbol '__malloc_hook' | 2798 @node Q2.2.8, Q2.3.1, Q2.2.7, Installation |
1584 zsh: 7942 segmentation fault (core dumped) xemacs | 2799 @unnumberedsubsec Q2.2.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found (NEW) |
1585 @end example | |
1586 | |
1587 (Example binary compiled against libc-5.4.23 and run with libc-5.4.16). | |
1588 | |
1589 The solution is to upgrade to at least libc-5.4.23. Sigh. Drat. | |
1590 @end quotation | |
1591 | |
1592 @node Q2.0.9, Q2.0.10, Q2.0.8, Installation | |
1593 @unnumberedsubsec Q2.0.9: Where do I find external libraries? | |
1594 | |
1595 All external libraries used by XEmacs can be found at the XEmacs FTP | |
1596 site | |
1597 @iftex | |
1598 @* | |
1599 @end iftex | |
1600 @uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}. | |
1601 [These tarballs and this FAQ are wa-a-ay out of date. Sorry, I'm not | |
1602 currently network-capable, and I will probably forgot to update this | |
1603 before submitting the patch. -- Ed.] | |
1604 | |
1605 @c Changed June Link above, <URL:ftp://ftp.xemacs.org/pub/aux/> was dead. | |
1606 @c This list is a pain in the you-know-what to keep in synch with the | |
1607 @c world. | |
1608 The canonical locations (at the time of this writing) are as follows: | |
1609 | |
1610 @table @asis | |
1611 @item JPEG | |
1612 @uref{ftp://ftp.uu.net/graphics/jpeg/}. Version 6a is current. | |
1613 @c Check from host with legal IP address | |
1614 @item XPM | |
1615 @uref{ftp://ftp.x.org/contrib/libraries/}. Version 3.4j is current. | |
1616 Older versions of this package are known to cause XEmacs crashes. | |
1617 | |
1618 @item TIFF | |
1619 @uref{ftp://ftp.sgi.com/graphics/tiff/}. v3.4 is current. The latest | |
1620 beta is v3.4b035. There is a HOWTO here. | |
1621 | |
1622 @item PNG | |
1623 @uref{ftp://ftp.uu.net/graphics/png/}. 0.89c is current. XEmacs | |
1624 requires a fairly recent version to avoid using temporary files. | |
1625 @c Check from host with legal IP address | |
1626 | |
1627 @uref{ftp://swrinde.nde.swri.edu/pub/png/src/} | |
1628 | |
1629 @item Compface | |
1630 @uref{ftp://ftp.cs.indiana.edu/pub/faces/compface/}. This library has | |
1631 been frozen for about 6 years, and is distributed without version | |
1632 numbers. @emph{It should be compiled with the same options that X11 was | |
1633 compiled with on your system}. The version of this library at | |
1634 XEmacs.org includes the @file{xbm2xface.pl} script, written by | |
1635 @email{stig@@hackvan.com}, which may be useful when generating your own xface. | |
1636 | |
1637 @item NAS | |
1638 @uref{ftp://ftp.x.org/contrib/audio/nas/}. | |
1639 Version 1.2p5 is current. There is a FAQ here. | |
1640 @end table | |
1641 | |
1642 @node Q2.0.10, Q2.0.11, Q2.0.9, Installation | |
1643 @unnumberedsubsec Q2.0.10: After I run configure I find a core dump, is something wrong? | |
1644 | |
1645 Not necessarily. If you have GNU sed 3.0 you should downgrade it to | |
1646 2.05. From the @file{README} at prep.ai.mit.edu: | |
1647 | |
1648 @quotation | |
1649 sed 3.0 has been withdrawn from distribution. It has major revisions, | |
1650 which mostly seem to be improvements; but it turns out to have bugs too | |
1651 which cause trouble in some common cases. | |
1652 | |
1653 Tom Lord won't be able to work fixing the bugs until May. So in the | |
1654 mean time, we've decided to withdraw sed 3.0 from distribution and make | |
1655 version 2.05 once again the recommended version. | |
1656 @end quotation | |
1657 | |
1658 It has also been observed that the vfork test on Solaris will leave a | |
1659 core dump. | |
1660 | |
1661 @node Q2.0.11, Q2.0.12, Q2.0.10, Installation | |
1662 @unnumberedsubsec Q2.0.11: XEmacs doesn't resolve hostnames. | |
1663 | |
1664 This is the result of a long-standing problem with SunOS and the fact | |
1665 that stock SunOS systems do not ship with DNS resolver code in libc. | |
1666 | |
1667 @email{ckd@@loiosh.kei.com, Christopher Davis} writes: | |
1668 | |
1669 @quotation | |
1670 That's correct [The SunOS 4.1.3 precompiled binaries don't do name | |
1671 lookup]. Since Sun figured that everyone used NIS to do name lookups | |
1672 (that DNS thing was apparently only a passing fad, right?), the stock | |
1673 SunOS 4.x systems don't have DNS-based name lookups in libc. | |
1674 | |
1675 This is also why Netscape ships two binaries for SunOS 4.1.x. | |
1676 | |
1677 The best solution is to compile it yourself; the configure script will | |
1678 check to see if you've put DNS in the shared libc and will then proceed | |
1679 to link against the DNS resolver library code. | |
1680 @end quotation | |
1681 | |
1682 @node Q2.0.12, Q2.0.13, Q2.0.11, Installation | |
1683 @unnumberedsubsec Q2.0.12: Why can't I strip XEmacs? | |
1684 | |
1685 @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: | |
1686 | |
1687 @quotation | |
1688 Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The | |
1689 link gives you a bare-boned emacs (called temacs). temacs is then run, | |
1690 preloading some of the lisp files. The result is then dumped into a new | |
1691 executable, named xemacs, which will contain all of the preloaded lisp | |
1692 functions and data. | |
1693 | |
1694 Now, during the dump itself, the executable (code+data+symbols) is | |
1695 written on disk using a special unexec() function. This function is | |
1696 obviously heavily system dependent. And on some systems, it leads to an | |
1697 executable which, although valid, cannot be stripped without damage. If | |
1698 memory serves, this is especially the case for AIX binaries. On other | |
1699 architectures it might work OK. | |
1700 | |
1701 The Right Way to strip the emacs binary is to strip temacs prior to | |
1702 dumping xemacs. This will always work, although you can do that only if | |
1703 you install from sources (as temacs is @file{not} part of the binary | |
1704 kits). | |
1705 @end quotation | |
1706 | |
1707 @email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes: | |
1708 | |
1709 @quotation | |
1710 Here is the trick: | |
1711 | |
1712 @enumerate | |
1713 @item | |
1714 [ ./configure; make ] | |
1715 | |
1716 @item | |
1717 rm src/xemacs | |
1718 | |
1719 @item | |
1720 strip src/temacs | |
1721 | |
1722 @item | |
1723 make | |
1724 | |
1725 @item | |
1726 cp src/xemacs /usr/local/bin/xemacs | |
1727 | |
1728 @item | |
1729 cp lib-src/DOC-19.16-XEmacs | |
1730 @iftex | |
1731 \ @* | |
1732 @end iftex | |
1733 /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout | |
1734 @end enumerate | |
1735 @end quotation | |
1736 | |
1737 @node Q2.0.13, Q2.0.14, Q2.0.12, Installation | |
1738 @unnumberedsubsec Q2.0.13: I don't need no steenkin' packages. Do I? | |
1739 | |
1740 Strictly speaking, no. XEmacs will build and install just fine without | |
1741 any packages installed. However, only the most basic editing functions | |
1742 will be available with no packages installed, so installing packages is | |
1743 an essential part of making your installed XEmacs _useful_. | |
1744 | |
1745 @node Q2.0.14, Q2.0.15, Q2.0.13, Installation | |
1746 @unnumberedsubsec Q2.0.14: How do I figure out which packages to install? | |
1747 | |
1748 Many people really liked the old way that packages were bundled and do | |
1749 not want to mess with packages at all. You can grab all the packages at | |
1750 once like you used to with old XEmacs versions. Download the file | |
1751 | |
1752 @file{xemacs-sumo.tar.gz} | |
1753 | |
1754 For an XEmacs compiled with Mule you also need | |
1755 | |
1756 @file{xemacs-mule-sumo.tar.gz} | |
1757 | |
1758 from the @file{packages} directory on your XEmacs mirror archive. | |
1759 N.B. They are called 'Sumo Tarballs' for good reason. They are | |
1760 currently about 15MB and 2.3MB (gzipped) respectively. | |
1761 | |
1762 Install them by | |
1763 | |
1764 @code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xf -} | |
1765 | |
1766 See README.packages for more detailed installation instructions. | |
1767 | |
1768 As the Sumo tarballs are not regenerated as often as the individual | |
1769 packages, it is recommended that you use the automatic package tools | |
1770 afterwards to pick up any recent updates. | |
1771 | |
1772 @node Q2.0.15, Q2.0.16, Q2.0.14, Installation | |
1773 @unnumberedsubsec Q2.0.15: EFS fails with "500 AUTH not understood" (NEW) | |
1774 | |
1775 A typical error: FTP Error: USER request failed; 500 AUTH not understood. | |
1776 | |
1777 Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends | |
1778 on comp.emacs.xemacs: | |
1779 | |
1780 tell your ftp client to not attempt AUTH authentication (or do not | |
1781 use FTP servers that don't understand AUTH) | |
1782 | |
1783 and notes that you need to add an element (often "-u") to | |
1784 `efs-ftp-program-args'. Use M-x customize-variable, and verify the | |
1785 needed flag with `man ftp' or other local documentation. | |
1786 | |
1787 @node Q2.0.16, Q2.1.1, Q2.0.15, Installation | |
1788 @unnumberedsubsec Q2.0.16: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) | |
1789 | 2800 |
1790 The Cygwin binary distributed with the netinstaller uses an external DLL | 2801 The Cygwin binary distributed with the netinstaller uses an external DLL |
1791 to handle XPM images (such as toolbar buttons). You may get an error like | 2802 to handle XPM images (such as toolbar buttons). You may get an error like |
1792 | 2803 |
1793 This application has failed to start because cygXpm-noX4.dll was not found. | 2804 This application has failed to start because cygXpm-noX4.dll was not found. |
1800 cygwin setup again and select this package. | 2811 cygwin setup again and select this package. |
1801 | 2812 |
1802 Ie, reinstalling XEmacs won't help because it is not part of the XEmacs | 2813 Ie, reinstalling XEmacs won't help because it is not part of the XEmacs |
1803 distribution. | 2814 distribution. |
1804 | 2815 |
1805 @node Q2.1.1, Q2.1.2, Q2.0.16, Installation | 2816 @unnumberedsec 2.3: General Troubleshooting |
1806 @unnumberedsec 2.1: Trouble Shooting | 2817 |
1807 @unnumberedsubsec Q2.1.1: Help! XEmacs just crashed on me! | 2818 @node Q2.3.1, Q2.3.2, Q2.2.8, Installation |
2819 @unnumberedsubsec Q2.3.1: Help! XEmacs just crashed on me! | |
1808 | 2820 |
1809 First of all, don't panic. Whenever XEmacs crashes, it tries extremely | 2821 First of all, don't panic. Whenever XEmacs crashes, it tries extremely |
1810 hard to auto-save all of your files before dying. (The main time that | 2822 hard to auto-save all of your files before dying. (The main time that |
1811 this will not happen is if the machine physically lost power or if you | 2823 this will not happen is if the machine physically lost power or if you |
1812 killed the XEmacs process using @code{kill -9}). The next time you try | 2824 killed the XEmacs process using @code{kill -9}). The next time you try |
1819 | 2831 |
1820 Now, XEmacs is not perfect, and there may occasionally be times, or | 2832 Now, XEmacs is not perfect, and there may occasionally be times, or |
1821 particular sequences of actions, that cause it to crash. If you can | 2833 particular sequences of actions, that cause it to crash. If you can |
1822 come up with a reproducible way of doing this (or even if you have a | 2834 come up with a reproducible way of doing this (or even if you have a |
1823 pretty good memory of exactly what you were doing at the time), the | 2835 pretty good memory of exactly what you were doing at the time), the |
1824 maintainers would be very interested in knowing about it. The best way | 2836 maintainers would be very interested in knowing about it. The best |
1825 to report a bug is using @kbd{M-x report-emacs-bug} (or by selecting | 2837 way to report a bug is using @kbd{M-x report-emacs-bug} (or by |
1826 @samp{Send Bug Report...} from the Help menu). If that won't work | 2838 selecting @samp{Send Bug Report...} from the Help menu). If that |
1827 (e.g. you can't get XEmacs working at all), send ordinary mail to | 2839 won't work (e.g. you can't get XEmacs working at all), send ordinary |
1828 @email{crashes@@xemacs.org}. @emph{MAKE SURE} to include the output from | 2840 mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include |
1829 the crash, especially including the Lisp backtrace, as well as the | 2841 the output from the crash, especially including the Lisp backtrace, as |
1830 XEmacs configuration from @kbd{M-x describe-installation} (or | 2842 well as the XEmacs configuration from @kbd{M-x describe-installation} |
1831 equivalently, the file @file{Installation} in the top of the build | 2843 (or equivalently, the file @file{Installation} in the top of the build |
1832 tree). Please note that the @samp{crashes} address is exclusively for | 2844 tree). Note that the developers do @emph{not} usually follow |
1833 crash reports. The best way to report bugs in general is through the | 2845 @samp{comp.emacs.xemacs} on a regular basis; thus, this is better for |
1834 @kbd{M-x report-emacs-bug} interface just mentioned, or if necessary by | 2846 general questions about XEmacs than bug reports. |
1835 emailing @email{xemacs-beta@@xemacs.org}. Note that the developers do | |
1836 @emph{not} usually follow @samp{comp.emacs.xemacs} on a regular basis; | |
1837 thus, this is better for general questions about XEmacs than bug | |
1838 reports. | |
1839 | 2847 |
1840 If at all possible, include a C stack backtrace of the core dump that | 2848 If at all possible, include a C stack backtrace of the core dump that |
1841 was produced. This shows where exactly things went wrong, and makes it | 2849 was produced. This shows where exactly things went wrong, and makes |
1842 much easier to diagnose problems. To do this under Unix, you need to | 2850 it much easier to diagnose problems. To do this under Unix and Mac OS |
1843 locate the core file (it's called @file{core}, and is usually sitting in | 2851 X, you need to locate the core file (it's called @file{core}, and is |
1844 the directory that you started XEmacs from, or your home directory if | 2852 usually sitting in the directory that you started XEmacs from, or your |
1845 that other directory was not writable). Then, go to that directory and | 2853 home directory if that other directory was not writable). Then, go to |
1846 execute a command like: | 2854 that directory and execute a command like: |
1847 | 2855 |
1848 @example | 2856 @example |
1849 gdb `which xemacs` core | 2857 gdb `which xemacs` core |
1850 @end example | 2858 @end example |
1851 | 2859 |
1852 and then issue the command @samp{where} to get the stack backtrace. You | 2860 and then issue the command @samp{where} to get the stack backtrace. You |
1853 might have to use @code{dbx} or some similar debugger in place of | 2861 might have to use @code{dbx} or some similar debugger in place of |
1854 @code{gdb}. If you don't have any such debugger available, complain to | 2862 @code{gdb}. If you don't have any such debugger available, complain to |
1855 your system administrator. | 2863 your system administrator. |
1856 | 2864 |
1857 It's possible that a core file didn't get produced, in which case you're | 2865 It's possible that a core file didn't get produced or the stack trace |
1858 out of luck. Go complain to your system administrator and tell him not | 2866 from gdb is garbage, in which case you're out of luck unless you can |
1859 to disable core files by default. Also see @ref{Q2.1.15}, for tips and | 2867 reproduce the bug. A nonexistent core file can happen in some |
1860 techniques for dealing with a debugger. | 2868 circumstances on some operating systems, depending on what exactly |
2869 triggered the crash. It's also possible, however, that your limits | |
2870 are set to turn them off. You may be able to reenable them using a | |
2871 command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find | |
2872 out how your limits are set, use the command @samp{limit}.) However, if | |
2873 you didn't explicitly set your limits this way, go complain to your | |
2874 system administrator and tell him not to disable core files by | |
2875 default. | |
2876 | |
2877 A garbaged stack trace can happen for various reasons. Some versions | |
2878 of gdb are broken on certain operating systems and aren't able to read | |
2879 the core file. It's also possible that the stack got overwritten | |
2880 during the crash. A very simple reason, however, is that your version | |
2881 of XEmacs was compiled without debugging information or had the | |
2882 debugging information stripped. A compilation with optimization can | |
2883 also result in partly or completely garbaged stack trace. In such | |
2884 cases, you will need to recompile XEmacs with debugging information | |
2885 and without optimization; @xref{Q2.3.3, How to debug an XEmacs problem | |
2886 with a debugger}. Note also that core files currently don't work at | |
2887 all under Cygwin, and the only way to get a backtrace is to run XEmacs | |
2888 from gdb. | |
2889 | |
2890 If you cannot get a backtrace from the core dump, but can reproduce | |
2891 the problem, try running XEmacs under gdb. The goal is to get clean C | |
2892 and Lisp backtraces and submit a bug report including full | |
2893 configuration information as described above, as this will greatly | |
2894 assist in the process of tracking down the bug. However, even partial | |
2895 information is better than none. The process of getting backtraces | |
2896 from gdb is described in detail in @ref{Q2.3.3, How to debug an XEmacs | |
2897 problem with a debugger}. | |
1861 | 2898 |
1862 If you're under Microsoft Windows, you're out of luck unless you happen | 2899 If you're under Microsoft Windows, you're out of luck unless you happen |
1863 to have a debugging aid installed on your system, for example Visual | 2900 to have a debugging aid installed on your system, for example Visual |
1864 C++. In this case, the crash will result in a message giving you the | 2901 C++. In this case, the crash will result in a message giving you the |
1865 option to enter a debugger (for example, by pressing @samp{Cancel}). Do | 2902 option to enter a debugger (for example, by pressing @samp{Cancel}). Do |
1872 @item | 2909 @item |
1873 Report @strong{all} of the information output by XEmacs during the | 2910 Report @strong{all} of the information output by XEmacs during the |
1874 crash. | 2911 crash. |
1875 | 2912 |
1876 @item | 2913 @item |
1877 You mention what O/S & Hardware you are running XEmacs on. | 2914 You mention what O/S and Hardware you are running XEmacs on. |
1878 | 2915 |
1879 @item | 2916 @item |
1880 What version of XEmacs you are running. | 2917 What version of XEmacs you are running. |
1881 | 2918 |
1882 @item | 2919 @item |
1883 What build options you are using. | 2920 What build options you are using. |
1884 | 2921 |
1885 @item | 2922 @item |
1886 If the problem is related to graphics and you are running Unix, we will | 2923 If the problem is related to graphics and you are running Unix or Mac |
1887 also need to know what version of the X Window System you are running, | 2924 OS X, we will also need to know what version of the X Window System |
1888 and what window manager you are using. | 2925 you are running, and what window manager you are using. |
1889 | 2926 |
1890 @item | 2927 @item |
1891 If the problem happened on a TTY, please include the terminal type. | 2928 If the problem happened on a TTY, please include the terminal type. |
2929 | |
2930 @item | |
2931 Try very hard to get both C and Lisp backtraces, as described above. | |
1892 @end enumerate | 2932 @end enumerate |
1893 | 2933 |
1894 Much of the information above is automatically generated by @kbd{M-x | 2934 Much of the information above is automatically generated by @kbd{M-x |
1895 report-emacs-bug}. Even more, and often useful, information can be | 2935 report-emacs-bug}. Even more, and often useful, information can be |
1896 generated by redirecting the output of @code{make} and @code{make check} | 2936 generated by redirecting the output of @code{make} and @code{make check} |
1897 to a file (@file{beta.err} is the default used by @code{build-report}), | 2937 to a file (@file{beta.err} is the default used by @code{build-report}), |
1898 and executing @kbd{M-x build-report}. | 2938 and executing @kbd{M-x build-report}. |
1899 | 2939 |
1900 @node Q2.1.2, Q2.1.3, Q2.1.1, Installation | 2940 |
1901 @unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages. | 2941 @node Q2.3.2, Q2.3.3, Q2.3.1, Installation |
2942 @unnumberedsubsec Q2.3.2: XEmacs crashes and I compiled it myself. | |
2943 | |
2944 There have been a variety of reports of crashes due to compilers with | |
2945 buggy optimizers. If you are compiling with optimization, consider | |
2946 turning it off (@pxref{Q2.3.3, How to debug an XEmacs problem with a | |
2947 debugger}) and recompiling. | |
2948 | |
2949 Please see the @file{PROBLEMS} file that comes with XEmacs (it's in | |
2950 the top-level source directory) to read what it says about your | |
2951 platform. | |
2952 | |
2953 If you compiled XEmacs using @samp{--use-union-type} (or the option | |
2954 @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try | |
2955 recompiling again without it. The union type has been known to trigger | |
2956 compiler errors in a number of cases. | |
2957 | |
2958 @node Q2.3.3, Q2.3.4, Q2.3.2, Installation | |
2959 @unnumberedsubsec Q2.3.3: How to debug an XEmacs problem with a debugger | |
2960 | |
2961 If XEmacs does crash on you, one of the most productive things you can | |
2962 do to help get the bug fixed is to poke around a bit with the debugger. | |
2963 Here are some hints: | |
2964 | |
2965 @itemize @bullet | |
2966 @item | |
2967 First of all, if the crash is at all reproducible, consider very | |
2968 strongly recompiling your XEmacs with debugging symbols and with no | |
2969 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} -- | |
2970 that's an "oh" followed by a zero), and with the configure options | |
2971 @samp{--debug=yes} and @samp{--error-checking=all}. This will make | |
2972 your XEmacs run somewhat slower, but you are a lot more likely to | |
2973 catch the problem earlier (closer to its source). It makes it a lot | |
2974 easier to determine what's going on with a debugger. The way to | |
2975 control the compiler flags is with the configuration option | |
2976 @samp{--cflags}. If you have a recent version of 21.5, you should use | |
2977 @samp{--without-optimization} in preference to directly setting | |
2978 @samp{--cflags}. | |
2979 | |
2980 @item | |
2981 If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie | |
2982 process), or it's inconvenient to run XEmacs again because XEmacs is | |
2983 already running or is running in batch mode as part of a bunch of | |
2984 scripts, you may be able to attach to the existing process with your | |
2985 debugger. Under Unix and Mac OS X, the typical way to do this is to | |
2986 first use some variant of the @samp{ps} command to figure out the | |
2987 process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under | |
2988 a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V, | |
2989 or @samp{ps -aW | grep xemacs} under Cygwin. Then run | |
2990 | |
2991 @example | |
2992 gdb /path/to/xemacs/xemacs #### | |
2993 @end example | |
2994 | |
2995 Where @code{####} is the process id of your XEmacs. (If you're not | |
2996 sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs | |
2997 will stop and you can type @samp{where} in gdb to get a stack trace as | |
2998 usual. To get things moving again, you can just type @samp{quit} in | |
2999 gdb. It'll tell you the program is running and ask if you want to | |
3000 quit anyways. Say @samp{y} and it'll quit and have your emacs | |
3001 continue from where it was at. | |
3002 | |
3003 If you're running another debugger, a similar method may work, or you | |
3004 may have to run the debugger first and then use the @code{attach} | |
3005 command or something similar. | |
3006 | |
3007 Under Microsoft Windows, use the menu item @samp{Build->Start | |
3008 Debug->Attach to Process...} and select the XEmacs process from the list | |
3009 given. | |
3010 | |
3011 @item | |
3012 If you're able to run XEmacs under a debugger and reproduce the crash, | |
3013 here are some things you can do: | |
3014 | |
3015 @item | |
3016 If XEmacs is hitting an assertion failure, put a breakpoint on | |
3017 @code{assert_failed()}. | |
3018 | |
3019 @item | |
3020 If XEmacs is hitting some weird Lisp error that's causing it to crash | |
3021 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is | |
3022 declared static in @file{eval.c}. | |
3023 | |
3024 @item | |
3025 If XEmacs is outputting lots of X errors, put a breakpoint on | |
3026 @code{x_error_handler()}; that will tell you which call is causing | |
3027 them. Note that the result may not be very useful by default because | |
3028 X Windows normally operates asynchronously: A bunch of commands are | |
3029 buffered up and then sent to the server all at once. This greatly | |
3030 improves performance over a network but means that an error may not be | |
3031 reported until the server receives the commands, which can be long | |
3032 after XEmacs made the erroneous calls. For best results, you need to | |
3033 make the X server synchronous before getting the backtrace. This can | |
3034 be done by starting XEmacs with the @samp{-sync} option or executing | |
3035 the Lisp code @code{(x-debug-mode t)}. | |
3036 | |
3037 @item | |
3038 Internally, you will probably see lots of variables that hold objects of | |
3039 type @code{Lisp_Object}. These are references to Lisp objects. | |
3040 Printing them out with the debugger probably won't be too | |
3041 useful---you'll likely just see a number. To decode them, do this: | |
3042 | |
3043 @example | |
3044 call debug_print (OBJECT) | |
3045 @end example | |
3046 | |
3047 where @var{OBJECT} is whatever you want to decode (it can be a variable, | |
3048 a function call, etc.). This uses the Lisp printing routines to out a | |
3049 readable representation on the TTY from which the xemacs process was | |
3050 invoked. | |
3051 | |
3052 Under 21.5 and later, @code{dp} is defined as an easier-to-type equivalent | |
3053 of @code{debug_print}. You can also try @code{dpa} if you can't see | |
3054 the output from @code{debug_print} (this will return a string containing | |
3055 the output), or use @code{debug_p3} if @code{debug_print} itself triggers | |
3056 a crash (this is a less comprehensive but super-safe way to print out | |
3057 a Lisp object). | |
3058 | |
3059 @item | |
3060 If you want to get a Lisp backtrace showing the Lisp call | |
3061 stack, do this: | |
3062 | |
3063 @example | |
3064 call debug_backtrace () | |
3065 @end example | |
3066 | |
3067 Under 21.5 and later, @code{db} is defined as an easier-to-type equivalent | |
3068 of @code{debug_backtrace}. | |
3069 | |
3070 @item | |
3071 Using @code{debug_print} and @code{debug_backtrace} has two | |
3072 disadvantages - they can only be used with a running (including hung | |
3073 or zombie) xemacs process, and they do not display the internal C | |
3074 structure of a Lisp Object. Even if all you've got is a core dump, | |
3075 all is not lost. | |
3076 | |
3077 If you're using GDB, there are some macros in the file | |
3078 @file{src/.gdbinit} in the XEmacs source distribution that should make | |
3079 it easier for you to decode Lisp objects. This file is automatically | |
3080 read by gdb if gdb is run in the directory where xemacs was built, and | |
3081 contains these useful macros to inspect the state of xemacs: | |
3082 | |
3083 @table @code | |
3084 @item pobj | |
3085 Usage: pobj lisp_object @* | |
3086 Print the internal C representation of a lisp object. | |
3087 | |
3088 @item xtype | |
3089 Usage: xtype lisp_object @* | |
3090 Print the Lisp type of a lisp object. | |
3091 | |
3092 @item lbt | |
3093 Usage: lbt @* | |
3094 Print the current Lisp stack trace. | |
3095 Requires a running xemacs process. (It works by calling the db | |
3096 routine described above.) | |
3097 | |
3098 @item ldp | |
3099 Usage: ldp lisp_object @* | |
3100 Print a Lisp Object value using the Lisp printer. | |
3101 Requires a running xemacs process. (It works by calling the dp | |
3102 routine described above.) | |
3103 | |
3104 @item run-temacs | |
3105 Usage: run-temacs @* | |
3106 Run temacs interactively, like xemacs. | |
3107 Use this with debugging tools (like purify) that cannot deal with dumping, | |
3108 or when temacs builds successfully, but xemacs does not. | |
3109 | |
3110 @item dump-temacs | |
3111 Usage: dump-temacs @* | |
3112 Run the dumping part of the build procedure. | |
3113 Use when debugging temacs, not xemacs! | |
3114 Use this when temacs builds successfully, but xemacs does not. | |
3115 | |
3116 @item check-xemacs | |
3117 Usage: check-xemacs @* | |
3118 Run the test suite. Equivalent to 'make check'. | |
3119 | |
3120 @item check-temacs | |
3121 Usage: check-temacs @* | |
3122 Run the test suite on temacs. Equivalent to 'make check-temacs'. | |
3123 Use this with debugging tools (like purify) that cannot deal with dumping, | |
3124 or when temacs builds successfully, but xemacs does not. | |
3125 @end table | |
3126 | |
3127 If you are using Sun's @file{dbx} debugger, there is an equivalent file | |
3128 @file{src/.dbxrc}, which defines the same commands for dbx. | |
3129 | |
3130 @item | |
3131 If you're using a debugger to get a C stack backtrace and you're seeing | |
3132 stack traces with some of the innermost frames mangled, it may be due to | |
3133 dynamic linking. (This happens especially under Linux.) Consider | |
3134 reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under | |
3135 Linux), stack backtraces of core dumps will have the frame where the | |
3136 fatal signal occurred mangled; if you can obtain a stack trace while | |
3137 running the XEmacs process under a debugger, the stack trace should be | |
3138 clean. | |
3139 | |
3140 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so | |
3141 version 1.8 if dynamic linking and debugging is a problem on Linux. | |
3142 | |
3143 @item | |
3144 If you're using a debugger to get a C stack backtrace and you're | |
3145 getting a completely mangled and bogus stack trace, it's probably due to | |
3146 one of the following: | |
3147 | |
3148 @enumerate a | |
3149 @item | |
3150 Your executable has been stripped. Bad news. Tell your sysadmin not to | |
3151 do this---it doesn't accomplish anything except to save a bit of disk | |
3152 space, and makes debugging much much harder. | |
3153 | |
3154 @item | |
3155 Your stack is getting trashed. Debugging this is hard; you have to do a | |
3156 binary-search type of narrowing down where the crash occurs, until you | |
3157 figure out exactly which line is causing the problem. Of course, this | |
3158 only works if the bug is highly reproducible. Also, in many cases if | |
3159 you run XEmacs from the debugger, the debugger can protect the stack | |
3160 somewhat. However, if the stack is being smashed, it is typically the | |
3161 case that there is a wild pointer somewhere in the program, often quite | |
3162 far from where the crash occurs. | |
3163 | |
3164 @item | |
3165 If your stack trace has exactly one frame in it, with address 0x0, this | |
3166 could simply mean that XEmacs attempted to execute code at that address, | |
3167 e.g. through jumping to a null function pointer. Unfortunately, under | |
3168 those circumstances, GDB under Linux doesn't know how to get a stack | |
3169 trace. (Yes, this is the fourth Linux-related problem I've mentioned. I | |
3170 have no idea why GDB under Linux is so bogus. Complain to the GDB | |
3171 authors, or to comp.os.linux.development.system.) Again, you'll have to | |
3172 use the narrowing-down process described above. | |
3173 | |
3174 @item | |
3175 You will get a Lisp backtrace output when XEmacs crashes, so you'll have | |
3176 something useful. | |
3177 | |
3178 @end enumerate | |
3179 | |
3180 @item | |
3181 If you compile with the newer gcc variants gcc-2.8 or egcs, you will | |
3182 also need gdb 4.17 or above. Earlier releases of gdb can't handle the | |
3183 debug information generated by the newer compilers. | |
3184 | |
3185 @item | |
3186 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named | |
3187 @file{src/gdbinit}. This had the disadvantage of not being sourced | |
3188 automatically by gdb, so you had to set that up yourself. | |
3189 | |
3190 @item | |
3191 If you are running Microsoft Windows, the the file @file{nt/README} for | |
3192 further information about debugging XEmacs. | |
3193 | |
3194 @end itemize | |
3195 | |
3196 @node Q2.3.4, Q2.3.5, Q2.3.3, Installation | |
3197 @unnumberedsubsec Q2.3.4: I get a cryptic error message when trying to do something. | |
1902 | 3198 |
1903 When I try to use some particular option of some particular package, I | 3199 When I try to use some particular option of some particular package, I |
1904 get a cryptic error in the minibuffer. | 3200 get a cryptic error message in the minibuffer. |
1905 | 3201 |
1906 If you can't figure out what's going on, select Options/General | 3202 If the message went by too quickly, use @samp{Help->Recent Messages} |
1907 Options/Debug on Error from the Menubar and then try and make the error | 3203 from the menubar (or type @kbd{C-h l}) to see recent messages. |
1908 happen again. This will give you a backtrace that may be enlightening. | 3204 |
1909 If not, try reading through this FAQ; if that fails, you could try | 3205 If you can't figure out what's going on, select |
1910 posting to comp.emacs.xemacs (making sure to include the backtrace) and | 3206 @samp{Options->Troubleshooting->Debug on Error} from the menubar (or |
1911 someone may be able to help. If you can identify which Emacs lisp | 3207 type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make |
3208 the error happen again. This will put in the debugger (you can get | |
3209 out of this and continue what you were doing before by typing @kbd{c}) | |
3210 and give you a backtrace that may be enlightening. If not, try | |
3211 reading through this FAQ; if that fails, you could try posting to | |
3212 @samp{comp.emacs.xemacs} (making sure to include the backtrace) and | |
3213 someone may be able to help. If you can identify which XEmacs Lisp | |
1912 source file the error is coming from you can get a more detailed stack | 3214 source file the error is coming from you can get a more detailed stack |
1913 backtrace by doing the following: | 3215 backtrace by doing the following: |
1914 | 3216 |
1915 @enumerate | 3217 @enumerate |
1916 @item | 3218 @item |
1921 | 3223 |
1922 @item | 3224 @item |
1923 Reproduce the error. | 3225 Reproduce the error. |
1924 @end enumerate | 3226 @end enumerate |
1925 | 3227 |
1926 Depending on the version of XEmacs, you may either select View->Show | 3228 For more information on debugging Lisp code, @xref{Debugging,,, |
1927 Message Log (recent versions), Edit->Show Messages (some earlier | 3229 lispref, XEmacs Lisp Reference Manual}. |
1928 versions) or Help->Recent Keystrokes/Messages (other earlier versions) | 3230 |
1929 from the menubar to see the most recent messages. This command is bound | 3231 @node Q2.3.5, Q2.3.6, Q2.3.4, Installation |
1930 to @kbd{C-h l} by default. | 3232 @unnumberedsubsec Q2.3.5: XEmacs hangs when I try to do something. |
1931 | 3233 |
1932 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation | 3234 XEmacs might just be slow; some operations take a long time. XEmacs |
1933 @unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup | 3235 may also be waiting on a response from the network, for example when |
1934 | 3236 you are trying to send mail. |
1935 I get tons of translation table syntax error messages during startup. | 3237 |
1936 How do I get rid of them? | 3238 You can usually interrupt XEmacs by typing @kbd{C-g}. If not (for |
1937 | 3239 example, Lisp code explicitly disabled this by setting |
1938 There are two causes of this problem. The first usually only strikes | 3240 @code{inhibit-quit}), you can use the "critical quit" mechanism by |
1939 people using the prebuilt binaries. The culprit in both cases is the | 3241 typing @kbd{Control-Shift-G}. This should also pop you into the |
1940 file @file{XKeysymDB}. | 3242 debugger and give you a backtrace, which can tell you where the |
1941 | 3243 problem is (@pxref{Q2.3.3, How to debug an XEmacs problem with a |
1942 @itemize @bullet | 3244 debugger}). (Note that setting @code{debug-on-quit} or selecting |
1943 @item | 3245 @samp{Options->Troubleshooting->Debug on Quit} will also cause regular |
1944 The binary cannot find the @file{XKeysymDB} file. The location is | 3246 @kbd{C-g} to enter the debugger and give you a backtrace.) |
1945 hardcoded at compile time so if the system the binary was built on puts | 3247 |
1946 it a different place than your system does, you have problems. To fix, | 3248 If you can't interrupt XEmacs this way, or for some reason XEmacs is |
1947 set the environment variable @code{XKEYSYMDB} to the location of the | 3249 not talking to the keyboard, you can try sending the @samp{SIGINT} |
1948 @file{XKeysymDB} file on your system or to the location of the one | 3250 signal using the @samp{kill} command. |
1949 included with XEmacs which should be at | 3251 |
1950 @iftex | 3252 If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that |
1951 @* | 3253 you can't interrupt it at all, you could try attaching to the process |
1952 @end iftex | 3254 and getting a C stack backtrace. @xref{Q2.3.3, How to debug an XEmacs |
1953 @file{<xemacs_root_directory>/lib/xemacs-19.16/etc/XKeysymDB}. | 3255 problem with a debugger}. |
1954 | 3256 |
1955 @item | 3257 @node Q2.3.6, Q2.3.7, Q2.3.5, Installation |
1956 The binary is finding the XKeysymDB but it is out-of-date on your system | 3258 @unnumberedsubsec Q2.3.6: I get an error message when XEmacs is running in batch mode. |
1957 and does not contain the necessary lines. Either ask your system | 3259 |
1958 administrator to replace it with the one which comes with XEmacs (which | 3260 Typically this happens when you are trying to compile some Elisp code. |
1959 is the stock R6 version and is backwards compatible) or set your | 3261 If you are doing this as part of XEmacs or the XEmacs packages, you |
1960 @code{XKEYSYMDB} variable to the location of XEmacs's described above. | 3262 should automatically get a backtrace, which can help you determine the |
1961 @end itemize | 3263 source of the problem. In other cases, you can get equivalent results |
1962 | 3264 by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq |
1963 @node Q2.1.4, Q2.1.5, Q2.1.3, Installation | 3265 stack-trace-on-error t load-always-display-messages t |
1964 @unnumberedsubsec Q2.1.4: Startup warnings about deducing proper fonts? | 3266 load-ignore-out-of-date-elc-files t load-show-full-path-in-messages |
3267 t)} (this needs to be all on one line; to set an environment variable, | |
3268 use @samp{export XEMACSDEBUG='FOO'} under @samp{bash}, @samp{zsh}, | |
3269 etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and | |
3270 @samp{tcsh}). @samp{XEMACSDEBUG} specifies Lisp code that will be | |
3271 executed at startup time. | |
3272 | |
3273 If the backtrace is not sufficiently useful in helping you diagnose | |
3274 the problem, you should consider using a debugger such as GDB. | |
3275 @xref{Q2.3.3, How to debug an XEmacs problem with a debugger}. You | |
3276 probably want to set a breakpoint on @code{signal_1}. Since such | |
3277 errors often occur during compiling, which is often triggered by a | |
3278 complex command run from a make suite, it may be easier to attach to | |
3279 the process once it's running. | |
3280 | |
3281 Under Microsoft Windows (and perhaps other operating systems), there | |
3282 is another useful trick you can do if you have configured with | |
3283 debugging support (configure option @samp{--debug} or setting | |
3284 @samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the environment | |
3285 variable @samp{XEMACSDEBUG} (as described above) to @samp{(setq | |
3286 debug-on-error t)}. Then, when an error occurs noninteractively, | |
3287 instead of trying to invoke the Lisp debugger (which obviously won't | |
3288 work), XEmacs will break out to a C debugger using | |
3289 @code{(force-debugging-signal t)}. @emph{NOTE}: This runs | |
3290 @code{abort()}!!! (As well as and after executing INT 3 under MS | |
3291 Windows, which should invoke a debugger if it's active.) This is | |
3292 guaranteed to kill XEmacs! (But in this situation, XEmacs is about to | |
3293 die anyway, and if no debugger is present, this will usefully dump | |
3294 core.) | |
3295 | |
3296 @node Q2.3.7, Q2.3.8, Q2.3.6, Installation | |
3297 @unnumberedsubsec Q2.3.7: The keyboard or mouse is not working properly, or I have some other event-related problem. | |
3298 | |
3299 XEmacs has various facilities for debugging event handling. | |
3300 | |
3301 First, try setting the variable @code{debug-emacs-events} to non-zero. | |
3302 This will output various information showing which events are being | |
3303 received and how they are being translated. This may show you, for | |
3304 example, that a key command is getting intercepted using | |
3305 @code{key-translation-map}; this problem can otherwise be very tricky | |
3306 to debug. | |
3307 | |
3308 Under X, you can see exactly which events are being received from the | |
3309 window system by setting @code{x-debug-events} to non-zero. (The value | |
3310 @samp{1} gives you regular output, and @samp{2} gives you verbose | |
3311 output, including all parameters.) | |
3312 | |
3313 A similar facility exists under MS Windows: Set | |
3314 @code{debug-mswindows-events} to non-zero. (The value @samp{1} gives | |
3315 you regular output. The value @samp{2} gives you verbose output, | |
3316 including all parameters. The value @samp{3} gives you | |
3317 super-gorily-detailed output.) | |
3318 | |
3319 @node Q2.3.8, Q2.3.9, Q2.3.7, Installation | |
3320 @unnumberedsubsec Q2.3.8: @kbd{C-g} doesn't work for me. Is it broken? | |
3321 | |
3322 @kbd{C-g} does work for most people in most circumstances. If it | |
3323 doesn't, there are two possible explanations: | |
3324 | |
3325 @enumerate | |
3326 @item | |
3327 XEmacs is hung in a way that prevents @kbd{C-g} from working. This | |
3328 can happen when code is wrapped with a binding of @code{inhibit-quit} | |
3329 to @code{t}; you should still be able interrupt XEmacs using "critical | |
3330 quit". On the other hand, XEmacs may be seriously wedged. (If you're | |
3331 lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.) | |
3332 @xref{Q2.3.5, XEmacs hangs when I try to do something.}. | |
3333 | |
3334 @item | |
3335 @kbd{C-g} is indeed broken on your system. To test, try executing | |
3336 @code{(while t)} from the @samp{*scratch*} buffer. If @kbd{C-g} | |
3337 doesn't interrupt, then it's broken. This used to happen with systems | |
3338 where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined. | |
3339 However, there may not be very many such systems nowadays. | |
3340 @end enumerate | |
3341 | |
3342 @node Q2.3.9, Q2.3.10, Q2.3.8, Installation | |
3343 @unnumberedsubsec Q2.3.9: How do I debug process-related problems? | |
3344 | |
3345 Under MS Windows, you can set the variable | |
3346 @code{debug-mswindows-process-command-lines} to non-@samp{nil} to get | |
3347 information on exactly what is getting passed to a process. This can | |
3348 be useful in determining problems with quoting. (Under Unix, a process | |
3349 receives each argument separately, but under MS Windows a single | |
3350 command line is received, and arguments with spaces or other special | |
3351 characters in them must be quoted. Unfortunately this means that each | |
3352 process, potentially at least, has its own quoting conventions, and | |
3353 the code to process quoting conventions in @file{cmd.exe}, the Visual | |
3354 C++ startup code and the like is baroque and poorly documented. | |
3355 XEmacs uses the variable | |
3356 @code{mswindows-construct-process-command-line-alist} to construct a | |
3357 command line from a list of arguments based on the command to be run, | |
3358 but it is (and cannot be) a perfect solution.) | |
3359 | |
3360 @node Q2.3.10, Q2.3.11, Q2.3.9, Installation | |
3361 @unnumberedsubsec Q2.3.10: XEmacs is outputting lots of X errors. | |
3362 | |
3363 If this is happening, we would very much like to know what's causing | |
3364 them. To find this out, see @ref{Q2.3.3, How to debug an XEmacs | |
3365 problem with a debugger}. Try to get both a C and Lisp backtrace, and | |
3366 send them along with the full error output to | |
3367 @email{xemacs-beta@@xemacs.org}. | |
3368 | |
3369 @node Q2.3.11, Q2.4.1, Q2.3.10, Installation | |
3370 @unnumberedsubsec Q2.3.11: After upgrading, XEmacs won't do `foo' any more! | |
3371 | |
3372 You have been used to doing `foo', but now when you invoke it (or | |
3373 click the toolbar button or select the menu item), nothing (or an | |
3374 error) happens. The simplest explanation is that you are missing a | |
3375 package that is essential to you. You can either track it down and | |
3376 install it (there is a list of packages and brief descriptions of | |
3377 their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball' | |
3378 (@pxref{Q2.0.2, How do I figure out which packages to install?}). | |
3379 | |
3380 @c #### should xref to XEmacs manual here | |
3381 | |
3382 @unnumberedsec 2.4: Startup-Related Problems | |
3383 | |
3384 @node Q2.4.1, Q2.4.2, Q2.3.11, Installation | |
3385 @unnumberedsubsec Q2.4.1: XEmacs cannot connect to my X Terminal! | |
3386 | |
3387 Help! I can not get XEmacs to display on my Envizex X-terminal! | |
3388 | |
3389 Try setting the @code{DISPLAY} variable using the numeric IP address of | |
3390 the host you are running XEmacs from. | |
3391 | |
3392 @node Q2.4.2, Q2.4.3, Q2.4.1, Installation | |
3393 @unnumberedsubsec Q2.4.2: XEmacs won't start on Windows. | |
3394 | |
3395 XEmacs relies on a process called "dumping" to generate a working | |
3396 executable. Under MS-Windows this process effectively fixes the memory | |
3397 addresses of information in the executable. When XEmacs starts up it tries | |
3398 to reserve these memory addresses so that the dumping process can be | |
3399 reversed -- putting the information back at the correct addresses. | |
3400 Unfortunately some .DLLs (for instance the soundblaster driver) occupy | |
3401 memory addresses that can conflict with those needed by the dumped XEmacs | |
3402 executable. In this instance XEmacs will fail to start without any | |
3403 explanation. Note that this is extremely machine specific. | |
3404 | |
3405 21.1.10 includes a fix for this that makes more intelligent guesses | |
3406 about which memory addresses will be free, and this should cure the | |
3407 problem for most people. 21.4 implements "portable dumping", which | |
3408 eliminates the problem altogether. We recommend you use the 21.4 | |
3409 binaries, but you can use the 21.1 binaries if you are very paranoid | |
3410 about stability. @xref{Q1.0.4, Are binaries available?}. | |
3411 | |
3412 @node Q2.4.3, Q2.4.4, Q2.4.2, Installation | |
3413 @unnumberedsubsec Q2.4.3: XEmacs won't start without network. | |
3414 | |
3415 If XEmacs starts when you're on the network, but fails when you're not | |
3416 on the network, you may be missing a "localhost" entry in your | |
3417 @file{/etc/hosts} file. The file should contain an entry like: | |
3418 | |
3419 @example | |
3420 127.0.0.1 localhost | |
3421 @end example | |
3422 | |
3423 Add that line, and XEmacs will be happy. | |
3424 | |
3425 @node Q2.4.4, Q2.4.5, Q2.4.3, Installation | |
3426 @unnumberedsubsec Q2.4.4: Startup warnings about deducing proper fonts? | |
1965 | 3427 |
1966 How can I avoid the startup warnings about deducing proper fonts? | 3428 How can I avoid the startup warnings about deducing proper fonts? |
1967 | 3429 |
1968 This is highly dependent on your installation, but try with the | 3430 This is highly dependent on your installation, but try with the |
1969 following font as your base font for XEmacs and see what it does: | 3431 following font as your base font for XEmacs and see what it does: |
1986 (setq display-warning-minimum-level 'error) | 3448 (setq display-warning-minimum-level 'error) |
1987 @end lisp | 3449 @end lisp |
1988 | 3450 |
1989 The buffer still exists; it just isn't in your face. | 3451 The buffer still exists; it just isn't in your face. |
1990 | 3452 |
1991 @node Q2.1.5, Q2.1.6, Q2.1.4, Installation | 3453 @node Q2.4.5, Q2.4.6, Q2.4.4, Installation |
1992 @unnumberedsubsec Q2.1.5: XEmacs cannot connect to my X Terminal! | 3454 @unnumberedsubsec Q2.4.5: Warnings from incorrect key modifiers. |
1993 | |
1994 Help! I can not get XEmacs to display on my Envizex X-terminal! | |
1995 | |
1996 Try setting the @code{DISPLAY} variable using the numeric IP address of | |
1997 the host you are running XEmacs from. | |
1998 | |
1999 @node Q2.1.6, Q2.1.7, Q2.1.5, Installation | |
2000 @unnumberedsubsec Q2.1.6: XEmacs just locked up my Linux X server! | |
2001 | |
2002 There have been several reports of the X server locking up under Linux. | |
2003 In all reported cases removing speedo and scaled fonts from the font | |
2004 path corrected the problem. This can be done with the command | |
2005 @code{xset}. | |
2006 | |
2007 It is possible that using a font server may also solve the problem. | |
2008 | |
2009 @node Q2.1.7, Q2.1.8, Q2.1.6, Installation | |
2010 @unnumberedsubsec Q2.1.7: HP Alt key as Meta. | |
2011 | |
2012 How can I make XEmacs recognize the Alt key of my HP workstation as a | |
2013 Meta key? | |
2014 | |
2015 Put the following line into a file and load it with xmodmap(1) before | |
2016 starting XEmacs: | |
2017 | |
2018 @example | |
2019 remove Mod1 = Mode_switch | |
2020 @end example | |
2021 | |
2022 @node Q2.1.8, Q2.1.9, Q2.1.7, Installation | |
2023 @unnumberedsubsec Q2.1.8: got (wrong-type-argument color-instance-p nil) | |
2024 | |
2025 @email{nataliek@@rd.scitec.com.au, Natalie Kershaw} writes: | |
2026 | |
2027 @quotation | |
2028 I am trying to run xemacs 19.13 under X11R4. Whenever I move the mouse I | |
2029 get the following error. Has anyone seen anything like this? This | |
2030 doesn't occur on X11R5. | |
2031 | |
2032 @lisp | |
2033 Signalling: | |
2034 (error "got (wrong-type-argument color-instance-p nil) | |
2035 and I don't know why!") | |
2036 @end lisp | |
2037 @end quotation | |
2038 | |
2039 @email{map01kd@@gold.ac.uk, dinos} writes: | |
2040 | |
2041 @quotation | |
2042 I think this is due to undefined resources; You need to define color | |
2043 backgrounds and foregrounds into your @file{.../app-defaults/Emacs} | |
2044 like: | |
2045 | |
2046 @example | |
2047 *Foreground: Black ;everything will be of black on grey95, | |
2048 *Background: Grey95 ;unless otherwise specified. | |
2049 *cursorColor: Red3 ;red3 cursor with grey95 border. | |
2050 *pointerColor: Red3 ;red3 pointer with grey95 border. | |
2051 @end example | |
2052 @end quotation | |
2053 | |
2054 Natalie Kershaw adds: | |
2055 | |
2056 @quotation | |
2057 What fixed the problem was adding some more colors to the X color | |
2058 database (copying the X11R5 colors over), and also defining the | |
2059 following resources: | |
2060 | |
2061 @example | |
2062 xemacs*cursorColor: black | |
2063 xemacs*pointerColor: black | |
2064 @end example | |
2065 | |
2066 With the new colors installed the problem still occurs if the above | |
2067 resources are not defined. | |
2068 | |
2069 If the new colors are not present then an additional error occurs on | |
2070 XEmacs startup, which says @samp{Color Red3} not defined. | |
2071 @end quotation | |
2072 | |
2073 @node Q2.1.9, Q2.1.10, Q2.1.8, Installation | |
2074 @unnumberedsubsec Q2.1.9: XEmacs causes my OpenWindows 3.0 server to crash. | |
2075 | |
2076 The OpenWindows 3.0 server is incredibly buggy. Your best bet is to | |
2077 replace it with one from the generic MIT X11 release. You might also | |
2078 try disabling parts of your @file{init.el}/@file{.emacs}, like those | |
2079 that enable background pixmaps. | |
2080 | |
2081 @node Q2.1.10, Q2.1.11, Q2.1.9, Installation | |
2082 @unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers. | |
2083 | 3455 |
2084 The following information comes from the @file{PROBLEMS} file that comes | 3456 The following information comes from the @file{PROBLEMS} file that comes |
2085 with XEmacs. | 3457 with XEmacs. |
2086 | 3458 |
2087 If you're having troubles with HP/UX it is because HP/UX defines the | 3459 If you're having troubles with HP/UX it is because HP/UX defines the |
2102 keysym Meta_R = Mode_switch | 3474 keysym Meta_R = Mode_switch |
2103 add mod2 = Mode_switch | 3475 add mod2 = Mode_switch |
2104 EOF | 3476 EOF |
2105 @end example | 3477 @end example |
2106 | 3478 |
2107 @node Q2.1.11, Q2.1.12, Q2.1.10, Installation | 3479 @node Q2.4.6, , Q2.4.5, Installation |
2108 @unnumberedsubsec Q2.1.11: @samp{Can't instantiate image error...} in toolbar | 3480 @unnumberedsubsec Q2.4.6: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? |
3481 | |
3482 Yes. | |
3483 | |
3484 The console was there because @file{temacs} (and in turn, @file{xemacs}) | |
3485 was a console application, and Windows typically creates a new | |
3486 console for a console process unless the creating process requests that | |
3487 one isn't created. This used to be fixed with @file{runemacs}, a small | |
3488 Windows application that existed merely to start @file{xemacs}, stating | |
3489 that it didn't want a console. | |
3490 | |
3491 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI" | |
3492 application. The explanation of what that means is included for | |
3493 educational value. | |
3494 | |
3495 When building an application to be run in a Win32 environment, you must | |
3496 state which sub-system it is to run in. Valid subsystems include | |
3497 "console" and "gui". The subsystem you use affects the run time | |
3498 libraries linked into your application, the start up function that is | |
3499 run before control is handed over to your application, the entry point | |
3500 to your program, and how Windows normally invokes your program. (Console | |
3501 programs automatically get a console created for them at startup if | |
3502 their stdin/stdout don't point anywhere useful, which is the case when | |
3503 run from the GUI. This is a stupid design, of course -- instead, the | |
3504 console should get created only when the first I/O actually occurs! | |
3505 GUI programs have an equally stupid design: When called from | |
3506 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to | |
3507 point nowhere useful, even though the command shell has its own | |
3508 stdin/stdout. It's as if someone who had learned a bit about stdio but | |
3509 had no actual knowledge of interprocess communication designed the | |
3510 scheme; unfortunately, the whole process-communication aspect of the | |
3511 Win32 API is equally badly designed.) For example, the entry point for a | |
3512 console app is "main" (which is what you'd expect for a C/C++ program), | |
3513 but the entry point for a "gui" app is "WinMain". This confuses and | |
3514 annoys a lot of programmers who've grown up on Unix systems, where the | |
3515 kernel doesn't really care whether your application is a gui program or | |
3516 not. | |
3517 | |
3518 For reasons not altogether clear, and are lost in the mists of time and | |
3519 tradition, XEmacs on Win32 started out as a console application, and | |
3520 therefore a console was automatically created for it. (It may have been | |
3521 made a console application partly because a console is needed in some | |
3522 circumstances, especially under Win95, to interrupt, terminate, or send | |
3523 signals to a child process, and because of the bogosity mentioned above | |
3524 with GUI programs and the standard command shell. Currently, XEmacs | |
3525 just creates and immediately hides a console when necessary, and | |
3526 works around the "no useful stdio" problem by creating its own console | |
3527 window as necessary to display messages in.) | |
3528 | |
3529 @node Display Subsystems, External Subsystems, Installation, Top | |
3530 @unnumbered 3 Basic Display-Related Subsystems | |
3531 | |
3532 This is part 3 of the XEmacs Frequently Asked Questions list. This | |
3533 section is devoted to the basic display-related capabilities of | |
3534 XEmacs, such as the keyboard, the mouse, fonts, colors, the modeline, | |
3535 etc. | |
3536 | |
3537 @menu | |
3538 3.0: The Keyboard | |
3539 * Q3.0.1:: How can I bind complex functions (or macros) to keys? | |
3540 * Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down? | |
3541 * Q3.0.3:: Globally binding @kbd{Delete}? | |
3542 * Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard? | |
3543 * Q3.0.5:: How can you type in special characters in XEmacs? | |
3544 * Q3.0.6:: Can I turn on @dfn{sticky} modifier keys? | |
3545 * Q3.0.7:: How do I map the arrow keys? | |
3546 * Q3.0.8:: HP Alt key as Meta. | |
3547 * Q3.0.9:: Why does edt emulation not work? | |
3548 * Q3.0.10:: How can I emulate VI and use it as my default mode? | |
3549 | |
3550 3.1: The Mouse | |
3551 * Q3.1.1:: How can I turn off Mouse pasting? | |
3552 * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons? | |
3553 * Q3.1.3:: Clicking the left button does not do anything in buffer list. | |
3554 * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3? | |
3555 * Q3.1.5:: How I can set XEmacs up so that it pastes where the text cursor is? | |
3556 | |
3557 3.2: Textual Fonts and Colors | |
3558 * Q3.2.1:: How do I specify a font? | |
3559 * Q3.2.2:: How do I set the text, menu and modeline fonts? | |
3560 * Q3.2.3:: How can I set color options from @file{init.el}? | |
3561 * Q3.2.4:: How can I set the colors when highlighting a region? | |
3562 * Q3.2.5:: How can I limit color map usage? | |
3563 * Q3.2.6:: My tty supports color, but XEmacs doesn't use them. | |
3564 * Q3.2.7:: Can I have pixmap backgrounds in XEmacs? | |
3565 * Q3.2.8:: How do I display non-ASCII characters? | |
3566 * Q3.2.9:: Font selections in don't get saved after @code{Save Options}. | |
3567 | |
3568 3.3: The Menubar and Toolbar | |
3569 * Q3.3.1:: How do I get rid of the menu (or menubar)? | |
3570 * Q3.3.2:: Can I customize the basic menubar? | |
3571 * Q3.3.3:: How do I control how many buffers are listed in the menu @code{Buffers List}? | |
3572 * Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working? | |
3573 * Q3.3.5:: How can I bind a key to a function to toggle the toolbar? | |
3574 * Q3.3.6:: @samp{Can't instantiate image error...} in toolbar | |
3575 | |
3576 3.4: Scrollbars and Scrolling | |
3577 * Q3.4.1:: How can I disable the scrollbar? | |
3578 * Q3.4.2:: How can one use resources to change scrollbar colors? | |
3579 * Q3.4.3:: Moving the scrollbar can move the point; can I disable this? | |
3580 * Q3.4.4:: Scrolling one line at a time. | |
3581 * Q3.4.5:: How can I turn off automatic horizontal scrolling in specific modes? | |
3582 * Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off? | |
3583 | |
3584 3.5: The Modeline | |
3585 * Q3.5.1:: How can I make the modeline go away? | |
3586 * Q3.5.2:: How do you have XEmacs display the line number in the modeline? | |
3587 * Q3.5.3:: How do I get XEmacs to put the time of day on the modeline? | |
3588 * Q3.5.4:: How can one change the modeline color based on the mode used? | |
3589 | |
3590 3.6: The Cursor | |
3591 * Q3.6.1:: Is there a way to make the bar cursor thicker? | |
3592 * Q3.6.2:: Is there a way to get back the block cursor? | |
3593 * Q3.6.3:: Can I make the cursor blink? | |
3594 | |
3595 3.7: Text Selections | |
3596 * Q3.7.1:: How do I select a rectangular region? | |
3597 * Q3.7.2:: How can I turn off or change highlighted selections? | |
3598 * Q3.7.3:: How do I get that typing on an active region removes it? | |
3599 * Q3.7.4:: Can I turn off the highlight during isearch? | |
3600 * Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? | |
3601 * Q3.7.6:: The region disappears when I hit the end of buffer while scrolling. | |
3602 * Q3.7.7:: Why is killing so slow? | |
3603 * Q3.7.8:: Why does @kbd{M-w} take so long? | |
3604 | |
3605 3.8: Buffers, Text Editing | |
3606 * Q3.8.1:: Can I have the end of the buffer delimited in some way? | |
3607 * Q3.8.2:: How do I insert today's date into a buffer? | |
3608 * Q3.8.3:: How do I get a single minibuffer frame? | |
3609 * Q3.8.4:: How can I enable auto-indent and/or Filladapt? | |
3610 * Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by default? | |
3611 | |
3612 3.9: Editing Source Code | |
3613 * Q3.9.1:: How can I do source code highlighting using font-lock? | |
3614 * Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default? | |
3615 * Q3.9.3:: Where do I get the latest CC Mode? | |
3616 * Q3.9.4:: I do not like cc-mode. How do I use the old c-mode? | |
3617 * Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly? | |
3618 @end menu | |
3619 | |
3620 @unnumberedsec 3.0: The Keyboard | |
3621 | |
3622 @node Q3.0.1, Q3.0.2, Display Subsystems, Display Subsystems | |
3623 @unnumberedsubsec Q3.0.1: How can I bind complex functions (or macros) to keys? | |
3624 | |
3625 As an example, say you want the @kbd{paste} key on a Sun keyboard to | |
3626 insert the current Primary X selection at point. You can accomplish this | |
3627 with: | |
3628 | |
3629 @lisp | |
3630 (define-key global-map [f18] 'x-insert-selection) | |
3631 @end lisp | |
3632 | |
3633 However, this only works if there is a current X selection (the | |
3634 selection will be highlighted). The functionality I like is for the | |
3635 @kbd{paste} key to insert the current X selection if there is one, | |
3636 otherwise insert the contents of the clipboard. To do this you need to | |
3637 pass arguments to @code{x-insert-selection}. This is done by wrapping | |
3638 the call in a 'lambda form: | |
3639 | |
3640 @lisp | |
3641 (global-set-key [f18] | |
3642 (lambda () (interactive) (x-insert-selection t nil))) | |
3643 @end lisp | |
3644 | |
3645 This binds the f18 key to a @dfn{generic} functional object. The | |
3646 interactive spec is required because only interactive functions can be | |
3647 bound to keys. | |
3648 | |
3649 For the FAQ example you could use: | |
3650 | |
3651 @lisp | |
3652 (global-set-key [(control ?.)] | |
3653 (lambda () (interactive) (scroll-up 1))) | |
3654 (global-set-key [(control ?;)] | |
3655 (lambda () (interactive) (scroll-up -1))) | |
3656 @end lisp | |
3657 | |
3658 This is fine if you only need a few functions within the lambda body. | |
3659 If you're doing more it's cleaner to define a separate function. | |
3660 @xref{Q3.0.2, How do I bind C-. and C-; to scroll one line up and | |
3661 down?}. | |
3662 | |
3663 @node Q3.0.2, Q3.0.3, Q3.0.1, Display Subsystems | |
3664 @unnumberedsubsec Q3.0.2: How do I bind C-. and C-; to scroll one line up and down? | |
3665 | |
3666 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and | |
3667 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}: | |
3668 | |
3669 @lisp | |
3670 (defun scroll-up-one-line () | |
3671 (interactive) | |
3672 (scroll-up 1)) | |
3673 | |
3674 (defun scroll-down-one-line () | |
3675 (interactive) | |
3676 (scroll-down 1)) | |
3677 | |
3678 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. | |
3679 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-; | |
3680 @end lisp | |
3681 | |
3682 The key point is that you can only bind simple functions to keys; you | |
3683 can not bind a key to a function that you're also passing arguments | |
3684 to. (@pxref{Q3.0.1, How can I bind complex functions (or macros) to | |
3685 keys?} for a better answer). | |
3686 | |
3687 @node Q3.0.3, Q3.0.4, Q3.0.2, Display Subsystems | |
3688 @unnumberedsubsec Q3.0.3: Globally binding @kbd{Delete}? | |
3689 | |
3690 I cannot manage to globally bind my @kbd{Delete} key to something other | |
3691 than the default. How does one do this? | |
3692 | |
3693 Answer: The problem is that many modes explicitly bind @kbd{Delete}. To | |
3694 get around this, try the following: | |
3695 | |
3696 @lisp | |
3697 (defun foo () | |
3698 (interactive) | |
3699 (message "You hit DELETE")) | |
3700 | |
3701 (define-key key-translation-map 'delete 'redirected-delete) | |
3702 (global-set-key 'redirected-delete 'foo) | |
3703 @end lisp | |
3704 | |
3705 @node Q3.0.4, Q3.0.5, Q3.0.3, Display Subsystems | |
3706 @unnumberedsubsec Q3.0.4: How to map @kbd{Help} key alone on Sun type4 keyboard? | |
3707 | |
3708 The following works in GNU Emacs 19: | |
3709 | |
3710 @lisp | |
3711 (global-set-key [help] 'help-command);; Help | |
3712 @end lisp | |
3713 | |
3714 The following works in XEmacs with the addition of shift: | |
3715 | |
3716 @lisp | |
3717 (global-set-key [(shift help)] 'help-command);; Help | |
3718 @end lisp | |
3719 | |
3720 But it doesn't work alone. This is in the file @file{PROBLEMS} which | |
3721 should have come with your XEmacs installation: @emph{Emacs ignores the | |
3722 @kbd{help} key when running OLWM}. | |
3723 | |
3724 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate | |
3725 client using | |
3726 @iftex | |
3727 @* | |
3728 @end iftex | |
3729 @code{XSendEvent}. Allowing Emacs to react to synthetic | |
3730 events is a security hole, so this is turned off by default. You can | |
3731 enable it by setting the variable @code{x-allow-sendevents} to t. You | |
3732 can also cause fix this by telling OLWM to not grab the help key, with | |
3733 the null binding @code{OpenWindows.KeyboardCommand.Help:}. | |
3734 | |
3735 @node Q3.0.5, Q3.0.6, Q3.0.4, Display Subsystems | |
3736 @unnumberedsubsec Q3.0.5: How can you type in special characters in XEmacs? | |
3737 One way is to use the package @code{x-compose}. Then you can use | |
3738 sequences like @kbd{Compose " a} to get ä, etc. | |
3739 | |
3740 Another way is to use the @code{iso-insert} package. Then you can use | |
3741 sequences like @kbd{C-x 8 " a} to get ä, etc. | |
3742 | |
3743 @email{glynn@@sensei.co.uk, Glynn Clements} writes: | |
3744 | |
3745 @quotation | |
3746 It depends upon your X server. | |
3747 | |
3748 Generally, the simplest way is to define a key as Multi_key with | |
3749 xmodmap, e.g. | |
3750 @c hey, show some respect, willya -- there's xkeycaps, isn't there? -- | |
3751 @c chr ;) | |
3752 @example | |
3753 xmodmap -e 'keycode 0xff20 = Multi_key' | |
3754 @end example | |
3755 | |
3756 You will need to pick an appropriate keycode. Use xev to find out the | |
3757 keycodes for each key. | |
3758 | |
3759 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically | |
3760 define the right `Windows' key as Multi_key'.] | |
3761 | |
3762 Once you have Multi_key defined, you can use e.g. | |
3763 @example | |
3764 Multi a ' => á | |
3765 Multi e " => ë | |
3766 Multi c , => ç | |
3767 @end example | |
3768 | |
3769 etc. | |
3770 | |
3771 Also, recent versions of XFree86 define various AltGr-<key> | |
3772 combinations as dead keys, i.e. | |
3773 @example | |
3774 AltGr [ => dead_diaeresis | |
3775 AltGr ] => dead_tilde | |
3776 AltGr ; => dead_acute | |
3777 @end example | |
3778 etc. | |
3779 | |
3780 Running @samp{xmodmap -pk} will list all of the defined keysyms. | |
3781 @end quotation | |
3782 | |
3783 For the related problem of @emph{displaying} non-ASCII characters in a | |
3784 non-Mule XEmacs, @xref{Q3.2.8, How do I display non-ASCII characters?}. | |
3785 | |
3786 @node Q3.0.6, Q3.0.7, Q3.0.5, Display Subsystems | |
3787 @unnumberedsubsec Q3.0.6: Can I turn on @dfn{sticky} modifier keys? | |
3788 | |
3789 Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the | |
3790 effect of being able to press and release Shift and have the next | |
3791 character typed come out in upper case. This will affect all the other | |
3792 modifier keys like Control and Meta as well. | |
3793 | |
3794 @email{ben@@xemacs.org, Ben Wing} writes: | |
3795 | |
3796 @quotation | |
3797 One thing about the sticky modifiers is that if you move the mouse out | |
3798 of the frame and back in, it cancels all currently ``stuck'' modifiers. | |
3799 @end quotation | |
3800 | |
3801 @node Q3.0.7, Q3.0.8, Q3.0.6, Display Subsystems | |
3802 @unnumberedsubsec Q3.0.7: How do I map the arrow keys? | |
2109 @c New | 3803 @c New |
2110 | 3804 Say you want to map @kbd{C-@key{right}} to forward-word: |
2111 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: | 3805 |
2112 | 3806 @email{sds@@usa.net, Sam Steingold} writes: |
2113 I just installed the XEmacs (20.4-2) RPMS that I downloaded from | 3807 |
2114 @uref{http://www.xemacs.org/}. Everything works fine, except that when | 3808 @quotation |
2115 I place my mouse over the toolbar, it beeps and gives me this message: | 3809 @lisp |
3810 ; both XEmacs and Emacs | |
3811 (define-key global-map [(control right)] 'forward-word) | |
3812 @end lisp | |
3813 or | |
3814 @lisp | |
3815 ; Emacs only | |
3816 (define-key global-map [C-right] 'forward-word) | |
3817 @end lisp | |
3818 or | |
3819 @lisp | |
3820 ; ver > 20, both | |
3821 (define-key global-map (kbd "C-<right>") 'forward-word) | |
3822 @end lisp | |
3823 @end quotation | |
3824 | |
3825 @node Q3.0.8, Q3.0.9, Q3.0.7, Display Subsystems | |
3826 @unnumberedsubsec Q3.0.8: HP Alt key as Meta. | |
3827 | |
3828 How can I make XEmacs recognize the Alt key of my HP workstation as a | |
3829 Meta key? | |
3830 | |
3831 Put the following line into a file and load it with xmodmap(1) before | |
3832 starting XEmacs: | |
2116 | 3833 |
2117 @example | 3834 @example |
2118 Can't instantiate image (probably cached): | 3835 remove Mod1 = Mode_switch |
2119 [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data | |
2120 (16 16 <strange control characters> ... | |
2121 @end example | 3836 @end example |
2122 | 3837 |
2123 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes: | 3838 @node Q3.0.9, Q3.0.10, Q3.0.8, Display Subsystems |
3839 @unnumberedsubsec Q3.0.9: Why does edt emulation not work? | |
3840 | |
3841 We don't know, but you can use tpu-edt emulation instead, which works | |
3842 fine and is a little fancier than the standard edt emulation. To do | |
3843 this, add the following line to your @file{init.el}: | |
3844 | |
3845 @lisp | |
3846 (tpu-edt) | |
3847 @end lisp | |
3848 | |
3849 If you don't want it to replace @kbd{C-h} with an edt-style help menu | |
3850 add this as well: | |
3851 | |
3852 @lisp | |
3853 (global-set-key [(control h)] 'help-for-help) | |
3854 @end lisp | |
3855 | |
3856 @node Q3.0.10, Q3.1.1, Q3.0.9, Display Subsystems | |
3857 @unnumberedsubsec Q3.0.10: How can I emulate VI and use it as my default mode? | |
3858 | |
3859 Our recommended VI emulator is viper. To make viper-mode the default, | |
3860 add this to your @file{init.el}: | |
3861 | |
3862 @lisp | |
3863 (viper-mode) | |
3864 @end lisp | |
3865 | |
3866 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes: | |
3867 | |
2124 @quotation | 3868 @quotation |
2125 This is problem specific to some Chips and Technologies video | 3869 This should be added as close to the top of @file{init.el} as you can get |
2126 chips, when running XFree86. Putting | 3870 it, otherwise some minor modes may not get viper-ized. |
2127 | |
2128 @code{Option "sw_cursor"} | |
2129 | |
2130 in @file{XF86Config} gets rid of the problem. | |
2131 @end quotation | 3871 @end quotation |
2132 | 3872 |
2133 @node Q2.1.12, Q2.1.13, Q2.1.11, Installation | 3873 @unnumberedsec 3.1: The Mouse |
2134 @unnumberedsubsec Q2.1.12: Problems with Regular Expressions on DEC OSF1. | 3874 |
2135 | 3875 @node Q3.1.1, Q3.1.2, Q3.0.10, Display Subsystems |
2136 I have xemacs 19.13 running on an alpha running OSF1 V3.2 148 and ispell | 3876 @unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting? |
2137 would not run because it claimed the version number was incorrect | 3877 |
2138 although it was indeed OK. I traced the problem to the regular | 3878 I keep hitting the middle mouse button by accident and getting stuff |
2139 expression handler. | 3879 pasted into my buffer so how can I turn this off? |
2140 | 3880 |
2141 @email{douglask@@dstc.edu.au, Douglas Kosovic} writes: | 3881 Here is an alternative binding, whereby the middle mouse button selects |
2142 | 3882 (but does not cut) the expression under the mouse. Clicking middle on a |
2143 @quotation | 3883 left or right paren will select to the matching one. Note that you can |
2144 Actually it's a DEC cc optimization bug that screws up the regexp | 3884 use @code{define-key} or @code{global-set-key}. |
2145 handling in XEmacs. | 3885 |
2146 | 3886 @lisp |
2147 Rebuilding using the @samp{-migrate} switch for DEC cc (which uses a | 3887 (defun mouse-set-point-and-select (event) |
2148 different sort of optimization) works fine. | 3888 "Sets the point at the mouse location, then marks following form" |
2149 @end quotation | 3889 (interactive "@@e") |
2150 | 3890 (mouse-set-point event) |
2151 See @file{xemacs-19_13-dunix-3_2c.patch} at the following URL on how to | 3891 (mark-sexp 1)) |
2152 build with the @samp{-migrate} flag: | 3892 (define-key global-map [button2] 'mouse-set-point-and-select) |
3893 @end lisp | |
3894 | |
3895 @node Q3.1.2, Q3.1.3, Q3.1.1, Display Subsystems | |
3896 @unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on mouse buttons? | |
3897 | |
3898 Use, for instance, @code{[(meta button1)]}. For example, here is a common | |
3899 setting for Common Lisp programmers who use the bundled @code{ilisp} | |
3900 package, whereby meta-button1 on a function name will find the file where | |
3901 the function name was defined, and put you at that location in the source | |
3902 file. | |
3903 | |
3904 [Inside a function that gets called by the lisp-mode-hook and | |
3905 ilisp-mode-hook] | |
3906 | |
3907 @lisp | |
3908 (local-set-key [(meta button1)] 'edit-definitions-lisp) | |
3909 @end lisp | |
3910 | |
3911 @node Q3.1.3, Q3.1.4, Q3.1.2, Display Subsystems | |
3912 @unnumberedsubsec Q3.1.3: Clicking the left button does not do anything in buffer list. | |
3913 | |
3914 I do @kbd{C-x C-b} to get a list of buffers and the entries get | |
3915 highlighted when I move the mouse over them but clicking the left mouse | |
3916 does not do anything. | |
3917 | |
3918 Use the middle mouse button. | |
3919 | |
3920 @node Q3.1.4, Q3.1.5, Q3.1.3, Display Subsystems | |
3921 @unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit mouse button 3? | |
3922 | |
3923 The following code will replace the default popup on button3: | |
3924 | |
3925 @lisp | |
3926 (global-set-key [button3] 'popup-buffer-menu) | |
3927 @end lisp | |
3928 | |
3929 @node Q3.1.5, Q3.2.1, Q3.1.4, Display Subsystems | |
3930 @unnumberedsubsec Q3.1.5: How I can set XEmacs up so that it pastes where the text cursor is? | |
3931 | |
3932 By default XEmacs pastes X selections where the mouse pointer is. How | |
3933 do I disable this? | |
3934 | |
3935 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank | |
3936 @key{RET}}. | |
3937 | |
3938 To get XEmacs to paste at the text cursor, add this your @file{init.el}: | |
3939 | |
3940 @lisp | |
3941 (setq mouse-yank-at-point t) | |
3942 @end lisp | |
3943 | |
3944 Starting with XEmacs-20.2 you can also change this with Customize. | |
3945 Select from the @code{Options} menu | |
3946 @code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type | |
3947 @kbd{M-x customize @key{RET} mouse @key{RET}}. | |
3948 | |
3949 @unnumberedsec 3.2: Textual Fonts and Colors | |
3950 | |
3951 @node Q3.2.1, Q3.2.2, Q3.1.5, Display Subsystems | |
3952 @unnumberedsubsec Q3.2.1: How do I specify a font? | |
3953 | |
3954 #### Update me. | |
3955 | |
3956 In 21.4 and above, you can use the @samp{Options} menu to change the font. | |
3957 You can also do it in your init file, e.g. like this (for MS Windows): | |
3958 | |
3959 @display | |
3960 (set-face-font 'default "Lucida Console:Regular:10") | |
3961 (set-face-font 'modeline "MS Sans Serif:Regular:10") | |
3962 @end display | |
3963 | |
3964 @node Q3.2.2, Q3.2.3, Q3.2.1, Display Subsystems | |
3965 @unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts? | |
3966 | |
3967 #### Update me. | |
3968 | |
3969 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when | |
3970 setting face values. | |
3971 | |
3972 In @file{.Xresources}: | |
2153 | 3973 |
2154 @example | 3974 @example |
2155 @uref{http://www-digital.cern.ch/carney/emacs/emacs.html} | 3975 Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-* |
2156 @c Link above, <URL:http://www-digital.cern.ch/carney/emacs/emacs.html> is | 3976 Emacs*menubar*font: fixed |
2157 @c dead. And the directory `carney' is empty. | 3977 Emacs.modeline.attributeFont: fixed |
2158 | |
2159 | |
2160 | |
2161 @end example | 3978 @end example |
2162 | 3979 |
2163 NOTE: There have been a variety of other problems reported that are | 3980 This is confusing because @samp{default} and @samp{modeline} are face |
2164 fixed in this fashion. | 3981 names, and can be found listed with all faces in the current mode by |
2165 | 3982 using @kbd{M-x set-face-font (enter) ?}. They use the face-specific |
2166 @node Q2.1.13, Q2.1.14, Q2.1.12, Installation | 3983 resource @samp{attributeFont}. |
2167 @unnumberedsubsec Q2.1.13: HP/UX 10.10 and @code{create_process} failure. | 3984 |
2168 | 3985 On the other hand, @samp{menubar} is a normal X thing that uses the |
2169 @email{Dave.Carrigan@@ipl.ca, Dave Carrigan} writes: | 3986 resource @samp{font}. With Motif it @emph{may be} necessary to use |
2170 | 3987 @samp{fontList} @emph{instead of} @samp{font}. In @emph{non-Motif} |
2171 @quotation | 3988 configurations with Mule it @emph{is} necessary to use @samp{fontSet} |
2172 With XEmacs 19.13 and HP/UX 10.10, anything that relies on the | 3989 instead of @samp{font}. (Sorry, there just is no simple recipe here.) |
2173 @code{create_process} function fails. This breaks a lot of things | 3990 |
2174 (shell-mode, compile, ange-ftp, to name a few). | 3991 @node Q3.2.3, Q3.2.4, Q3.2.2, Display Subsystems |
2175 @end quotation | 3992 @unnumberedsubsec Q3.2.3: How can I set color options from @file{init.el}? |
2176 | |
2177 @email{johnson@@dtc.hp.com, Phil Johnson} writes: | |
2178 | |
2179 @quotation | |
2180 This is a problem specific to HP-UX 10.10. It only occurs when XEmacs | |
2181 is compiled for shared libraries (the default), so you can work around | |
2182 it by compiling a statically-linked binary (run configure with | |
2183 @samp{--dynamic=no}). | |
2184 | |
2185 I'm not sure whether the problem is with a particular shared library or | |
2186 if it's a kernel problem which crept into 10.10. | |
2187 @end quotation | |
2188 | |
2189 @email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: | |
2190 | |
2191 @quotation | |
2192 I had a few problems with 10.10. Apparently, some of them were solved by | |
2193 forcing a static link of libc (manually). | |
2194 @end quotation | |
2195 | |
2196 @node Q2.1.14, Q2.1.15, Q2.1.13, Installation | |
2197 @unnumberedsubsec Q2.1.14: @kbd{C-g} doesn't work for me. Is it broken? | |
2198 | |
2199 @email{ben@@xemacs.org, Ben Wing} writes: | |
2200 | |
2201 @quotation | |
2202 @kbd{C-g} does work for most people in most circumstances. If it | |
2203 doesn't, there are only two explanations: | |
2204 | |
2205 @enumerate | |
2206 @item | |
2207 The code is wrapped with a binding of @code{inhibit-quit} to | |
2208 @code{t}. @kbd{Ctrl-Shift-G} should still work, I think. | |
2209 | |
2210 @item | |
2211 SIGIO is broken on your system, but BROKEN_SIGIO isn't defined. | |
2212 @end enumerate | |
2213 | |
2214 To test #2, try executing @code{(while t)} from the @samp{*scratch*} | |
2215 buffer. If @kbd{C-g} doesn't interrupt, then you're seeing #2. | |
2216 @end quotation | |
2217 | |
2218 @email{terra@@diku.dk, Morten Welinder} writes: | |
2219 | |
2220 @quotation | |
2221 On some (but @emph{not} all) machines a hung XEmacs can be revived by | |
2222 @code{kill -FPE <pid>}. This is a hack, of course, not a solution. | |
2223 This technique works on a Sun4 running 4.1.3_U1. To see if it works for | |
2224 you, start another XEmacs and test with that first. If you get a core | |
2225 dump the method doesn't work and if you get @samp{Arithmetic error} then | |
2226 it does. | |
2227 @end quotation | |
2228 | |
2229 @node Q2.1.15, Q2.1.16, Q2.1.14, Installation | |
2230 @unnumberedsubsec Q2.1.15: How to debug an XEmacs problem with a debugger | |
2231 | |
2232 If XEmacs does crash on you, one of the most productive things you can | |
2233 do to help get the bug fixed is to poke around a bit with the debugger. | |
2234 Here are some hints: | |
2235 | |
2236 @itemize @bullet | |
2237 @item | |
2238 First of all, if the crash is at all reproducible, consider very | |
2239 strongly recompiling your XEmacs with debugging symbols and with no | |
2240 optimization (e.g. with GCC use the compiler flags @samp{-g -O0} -- | |
2241 that's an "oh" followed by a zero), and with the configure options | |
2242 @samp{--debug=yes} and @samp{--error-checking=all}. This will make your | |
2243 XEmacs run somewhat slower, but you are a lot more likely to catch the | |
2244 problem earlier (closer to its source). It makes it a lot easier to | |
2245 determine what's going on with a debugger. | |
2246 | |
2247 @item | |
2248 If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie | |
2249 process), or it's inconvenient to run XEmacs again because XEmacs is | |
2250 already running or is running in batch mode as part of a bunch of | |
2251 scripts, you may be able to attach to the existing process with your | |
2252 debugger. Most debuggers let you do this by substituting the process ID | |
2253 for the core file when you invoke the debugger from the command line, or | |
2254 by using the @code{attach} command or something similar. | |
2255 | |
2256 @item | |
2257 If you're able to run XEmacs under a debugger and reproduce the crash, | |
2258 here are some things you can do: | |
2259 | |
2260 @item | |
2261 If XEmacs is hitting an assertion failure, put a breakpoint on | |
2262 @code{assert_failed()}. | |
2263 | |
2264 @item | |
2265 If XEmacs is hitting some weird Lisp error that's causing it to crash | |
2266 (e.g. during startup), put a breakpoint on @code{signal_1()}---this is | |
2267 declared static in eval.c. | |
2268 | |
2269 @item | |
2270 If XEmacs is outputting lots of X errors, put a breakpoint on | |
2271 @code{x_error_handler()}; that will tell you which call is causing them. | |
2272 | |
2273 @item | |
2274 Internally, you will probably see lots of variables that hold objects of | |
2275 type @code{Lisp_Object}. These are references to Lisp objects. | |
2276 Printing them out with the debugger probably won't be too | |
2277 useful---you'll likely just see a number. To decode them, do this: | |
2278 | |
2279 @example | |
2280 call dp (OBJECT) | |
2281 @end example | |
2282 | |
2283 where @var{OBJECT} is whatever you want to decode (it can be a variable, | |
2284 a function call, etc.). This uses the Lisp printing routines to out a | |
2285 readable representation on the TTY from which the xemacs process was | |
2286 invoked. | |
2287 | |
2288 @item | |
2289 If you want to get a Lisp backtrace showing the Lisp call | |
2290 stack, do this: | |
2291 | |
2292 @example | |
2293 call db () | |
2294 @end example | |
2295 | |
2296 @item | |
2297 Using @code{dp} and @code{db} has two disadvantages - they can only be | |
2298 used with a running (including hung or zombie) xemacs process, and they | |
2299 do not display the internal C structure of a Lisp Object. Even if all | |
2300 you've got is a core dump, all is not lost. | |
2301 | |
2302 If you're using GDB, there are some macros in the file | |
2303 @file{src/.gdbinit} in the XEmacs source distribution that should make | |
2304 it easier for you to decode Lisp objects. This file is automatically | |
2305 read by gdb if gdb is run in the directory where xemacs was built, and | |
2306 contains these useful macros to inspect the state of xemacs: | |
2307 | |
2308 @table @code | |
2309 @item pobj | |
2310 Usage: pobj lisp_object @* | |
2311 Print the internal C representation of a lisp object. | |
2312 | |
2313 @item xtype | |
2314 Usage: xtype lisp_object @* | |
2315 Print the Lisp type of a lisp object. | |
2316 | |
2317 @item lbt | |
2318 Usage: lbt @* | |
2319 Print the current Lisp stack trace. | |
2320 Requires a running xemacs process. (It works by calling the db | |
2321 routine described above.) | |
2322 | |
2323 @item ldp | |
2324 Usage: ldp lisp_object @* | |
2325 Print a Lisp Object value using the Lisp printer. | |
2326 Requires a running xemacs process. (It works by calling the dp | |
2327 routine described above.) | |
2328 | |
2329 @item run-temacs | |
2330 Usage: run-temacs @* | |
2331 Run temacs interactively, like xemacs. | |
2332 Use this with debugging tools (like purify) that cannot deal with dumping, | |
2333 or when temacs builds successfully, but xemacs does not. | |
2334 | |
2335 @item dump-temacs | |
2336 Usage: dump-temacs @* | |
2337 Run the dumping part of the build procedure. | |
2338 Use when debugging temacs, not xemacs! | |
2339 Use this when temacs builds successfully, but xemacs does not. | |
2340 | |
2341 @item check-xemacs | |
2342 Usage: check-xemacs @* | |
2343 Run the test suite. Equivalent to 'make check'. | |
2344 | |
2345 @item check-temacs | |
2346 Usage: check-temacs @* | |
2347 Run the test suite on temacs. Equivalent to 'make check-temacs'. | |
2348 Use this with debugging tools (like purify) that cannot deal with dumping, | |
2349 or when temacs builds successfully, but xemacs does not. | |
2350 @end table | |
2351 | |
2352 If you are using Sun's @file{dbx} debugger, there is an equivalent file | |
2353 @file{src/.dbxrc}, which defines the same commands for dbx. | |
2354 | |
2355 @item | |
2356 If you're using a debugger to get a C stack backtrace and you're seeing | |
2357 stack traces with some of the innermost frames mangled, it may be due to | |
2358 dynamic linking. (This happens especially under Linux.) Consider | |
2359 reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under | |
2360 Linux), stack backtraces of core dumps will have the frame where the | |
2361 fatal signal occurred mangled; if you can obtain a stack trace while | |
2362 running the XEmacs process under a debugger, the stack trace should be | |
2363 clean. | |
2364 | |
2365 @email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so | |
2366 version 1.8 if dynamic linking and debugging is a problem on Linux. | |
2367 | |
2368 @item | |
2369 If you're using a debugger to get a C stack backtrace and you're | |
2370 getting a completely mangled and bogus stack trace, it's probably due to | |
2371 one of the following: | |
2372 | |
2373 @enumerate a | |
2374 @item | |
2375 Your executable has been stripped. Bad news. Tell your sysadmin not to | |
2376 do this---it doesn't accomplish anything except to save a bit of disk | |
2377 space, and makes debugging much much harder. | |
2378 | |
2379 @item | |
2380 Your stack is getting trashed. Debugging this is hard; you have to do a | |
2381 binary-search type of narrowing down where the crash occurs, until you | |
2382 figure out exactly which line is causing the problem. Of course, this | |
2383 only works if the bug is highly reproducible. Also, in many cases if | |
2384 you run XEmacs from the debugger, the debugger can protect the stack | |
2385 somewhat. However, if the stack is being smashed, it is typically the | |
2386 case that there is a wild pointer somewhere in the program, often quite | |
2387 far from where the crash occurs. | |
2388 | |
2389 @item | |
2390 If your stack trace has exactly one frame in it, with address 0x0, this | |
2391 could simply mean that XEmacs attempted to execute code at that address, | |
2392 e.g. through jumping to a null function pointer. Unfortunately, under | |
2393 those circumstances, GDB under Linux doesn't know how to get a stack | |
2394 trace. (Yes, this is the fourth Linux-related problem I've mentioned. I | |
2395 have no idea why GDB under Linux is so bogus. Complain to the GDB | |
2396 authors, or to comp.os.linux.development.system.) Again, you'll have to | |
2397 use the narrowing-down process described above. | |
2398 | |
2399 @item | |
2400 You will get a Lisp backtrace output when XEmacs crashes, so you'll have | |
2401 something useful. | |
2402 | |
2403 @end enumerate | |
2404 | |
2405 @item | |
2406 If you compile with the newer gcc variants gcc-2.8 or egcs, you will | |
2407 also need gdb 4.17 or above. Earlier releases of gdb can't handle the | |
2408 debug information generated by the newer compilers. | |
2409 | |
2410 @item | |
2411 In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named | |
2412 @file{src/gdbinit}. This had the disadvantage of not being sourced | |
2413 automatically by gdb, so you had to set that up yourself. | |
2414 | |
2415 @item | |
2416 If you are running Microsoft Windows, the the file @file{nt/README} for | |
2417 further information about debugging XEmacs. | |
2418 | |
2419 @end itemize | |
2420 | |
2421 @node Q2.1.16, Q2.1.17, Q2.1.15, Installation | |
2422 @unnumberedsubsec Q2.1.16: XEmacs crashes in @code{strcat} on HP/UX 10 | |
2423 | |
2424 From the problems database (through | |
2425 the former address http://support.mayfield.hp.com/): | |
2426 | |
2427 @example | |
2428 Problem Report: 5003302299 | |
2429 Status: Open | |
2430 | |
2431 System/Model: 9000/700 | |
2432 Product Name: HPUX S800 10.0X | |
2433 Product Vers: 9245XB.10.00 | |
2434 | |
2435 Description: strcat(3C) may read beyond | |
2436 end of source string, can cause SIGSEGV | |
2437 | |
2438 | |
2439 *** PROBLEM TEXT *** | |
2440 strcat(3C) may read beyond the source string onto an unmapped page, | |
2441 causing a segmentation violation. | |
2442 @end example | |
2443 | |
2444 @node Q2.1.17, Q2.1.18, Q2.1.16, Installation | |
2445 @unnumberedsubsec Q2.1.17: @samp{Marker does not point anywhere} | |
2446 | |
2447 As with other errors, set @code{debug-on-error} to @code{t} to get the | |
2448 backtrace when the error occurs. Specifically, two problems have been | |
2449 reported (and fixed). | |
2450 | |
2451 @enumerate | |
2452 @item | |
2453 A problem with line-number-mode in XEmacs 19.14 affected a large number | |
2454 of other packages. If you see this error message, turn off | |
2455 line-number-mode. | |
2456 | |
2457 @item | |
2458 A problem with some early versions of Gnus 5.4 caused this error. | |
2459 Upgrade your Gnus. | |
2460 @end enumerate | |
2461 | |
2462 @node Q2.1.18, Q2.1.19, Q2.1.17, Installation | |
2463 @unnumberedsubsec Q2.1.18: XEmacs is outputting lots of X errors. | |
2464 | |
2465 If this is happening, we would very much like to know what's causing | |
2466 them. To find this out, see @ref{Q2.1.15}. Try to get both a C and Lisp | |
2467 backtrace, and send them to @email{xemacs-beta@@xemacs.org}. | |
2468 | |
2469 @node Q2.1.19, Q2.1.20, Q2.1.18, Installation | |
2470 @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone. | |
2471 | |
2472 When using one of the prebuilt binaries many users have observed that | |
2473 XEmacs uses the timezone under which it was built, but not the timezone | |
2474 under which it is running. The solution is to add: | |
2475 | |
2476 @lisp | |
2477 (set-time-zone-rule "MET") | |
2478 @end lisp | |
2479 | |
2480 to your @file{init.el}/@file{.emacs} or the @file{site-start.el} file if | |
2481 you can. Replace @code{MET} with your local timezone. | |
2482 | |
2483 @node Q2.1.20, Q2.1.21, Q2.1.19, Installation | |
2484 @unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.} | |
2485 | |
2486 This is a problem with a partially loaded hyperbole. Try adding: | |
2487 | |
2488 @lisp | |
2489 (require 'hmouse-drv) | |
2490 @end lisp | |
2491 | |
2492 where you load hyperbole and the problem should go away. | |
2493 | |
2494 @node Q2.1.21, Q2.1.22, Q2.1.20, Installation | |
2495 @unnumberedsubsec Q2.1.21: [This question intentionally left blank] | |
2496 | |
2497 @node Q2.1.22, Q2.1.23, Q2.1.21, Installation | |
2498 @unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things | |
2499 | |
2500 @email{dmoore@@ucsd.edu, David Moore} writes: | |
2501 | |
2502 @quotation | |
2503 Two things you can do: | |
2504 | |
2505 1) C level: | |
2506 | |
2507 When you see it going mad like this, you might want to use gdb from an | |
2508 'xterm' to attach to the running process and get a stack trace. To do | |
2509 this just run: | |
2510 | |
2511 @example | |
2512 gdb /path/to/xemacs/xemacs #### | |
2513 @end example | |
2514 | |
2515 Where @code{####} is the process id of your xemacs, instead of | |
2516 specifying the core. When gdb attaches, the xemacs will stop [1] and | |
2517 you can type `where' in gdb to get a stack trace as usual. To get | |
2518 things moving again, you can just type `quit' in gdb. It'll tell you | |
2519 the program is running and ask if you want to quit anyways. Say 'y' and | |
2520 it'll quit and have your emacs continue from where it was at. | |
2521 | |
2522 2) Lisp level: | |
2523 | |
2524 Turn on debug-on-quit early on. When you think things are going slow | |
2525 hit C-g and it may pop you in the debugger so you can see what routine | |
2526 is running. Press `c' to get going again. | |
2527 | |
2528 debug-on-quit doesn't work if something's turned on inhibit-quit or in | |
2529 some other strange cases. | |
2530 @end quotation | |
2531 | |
2532 @node Q2.1.23, Q2.1.24, Q2.1.22, Installation | |
2533 @unnumberedsubsec Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later. | |
2534 | |
2535 Movemail used to work fine in 19.14 but has stopped working in 19.15 | |
2536 and 20.x. I am using Linux. | |
2537 | |
2538 @email{steve@@xemacs.org, SL Baur} writes: | |
2539 | |
2540 @quotation | |
2541 Movemail on Linux used to default to using flock file locking. With | |
2542 19.15 and later versions it now defaults to using @code{.lock} file | |
2543 locking. If this is not appropriate for your system, edit src/s/linux.h | |
2544 and uncomment the line that reads: | |
2545 | |
2546 @example | |
2547 #define MAIL_USE_FLOCK | |
2548 @end example | |
2549 @end quotation | |
2550 | |
2551 @node Q2.1.24, Q2.1.25, Q2.1.23, Installation | |
2552 @unnumberedsubsec Q2.1.24: XEmacs won't start without network. | |
2553 | |
2554 If XEmacs starts when you're on the network, but fails when you're not | |
2555 on the network, you may be missing a "localhost" entry in your | |
2556 @file{/etc/hosts} file. The file should contain an entry like: | |
2557 | |
2558 @example | |
2559 127.0.0.1 localhost | |
2560 @end example | |
2561 | |
2562 Add that line, and XEmacs will be happy. | |
2563 | |
2564 @node Q2.1.25, , Q2.1.24, Installation | |
2565 @unnumberedsubsec Q2.1.25:: After upgrading, XEmacs won't do `foo' any more! | |
2566 | |
2567 You have been used to doing `foo', but now when you invoke it (or click | |
2568 the toolbar button or select the menu item), nothing (or an error) | |
2569 happens. The simplest explanation is that you are missing a package | |
2570 that is essential to you. You can either track it down and install it | |
2571 (there is a list of packages and brief descriptions of their contents in | |
2572 @file{etc/PACKAGES}), or install the `Sumo Tarball' (@pxref{Q2.0.14}). | |
2573 | |
2574 @c #### should xref to XEmacs manual here | |
2575 | |
2576 @node Customization, Subsystems, Installation, Top | |
2577 @unnumbered 3 Customization and Options | |
2578 | |
2579 This is part 3 of the XEmacs Frequently Asked Questions list. This | |
2580 section is devoted to Customization and screen settings. | |
2581 | |
2582 @menu | |
2583 Customization---Emacs Lisp and @file{init.el}/@file{.emacs}: | |
2584 * Q3.0.1:: What version of Emacs am I running? | |
2585 * Q3.0.2:: How do I evaluate Elisp expressions? | |
2586 * Q3.0.3:: @code{(setq tab-width 6)} behaves oddly. | |
2587 * Q3.0.4:: How can I add directories to the @code{load-path}? | |
2588 * Q3.0.5:: How to check if a lisp function is defined? | |
2589 * Q3.0.6:: Can I force the output of @code{(face-list)} to a buffer? | |
2590 * Q3.0.7:: Font selections don't get saved after @code{Save Options}. | |
2591 * Q3.0.8:: How do I make a single minibuffer frame? | |
2592 * Q3.0.9:: What is @code{Customize}? | |
2593 | |
2594 X Window System & Resources: | |
2595 * Q3.1.1:: Where is a list of X resources? | |
2596 * Q3.1.2:: How can I detect a color display? | |
2597 * Q3.1.3:: [This question intentionally left blank] | |
2598 * Q3.1.4:: [This question intentionally left blank] | |
2599 * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? | |
2600 * Q3.1.6:: How can I have the window title area display the full path? | |
2601 * Q3.1.7:: @samp{xemacs -name junk} doesn't work? | |
2602 * Q3.1.8:: @samp{-iconic} doesn't work. | |
2603 | |
2604 Textual Fonts & Colors: | |
2605 * Q3.2.1:: How can I set color options from @file{init.el}/@file{.emacs}? | |
2606 * Q3.2.2:: How do I set the text, menu and modeline fonts? | |
2607 * Q3.2.3:: How can I set the colors when highlighting a region? | |
2608 * Q3.2.4:: How can I limit color map usage? | |
2609 * Q3.2.5:: My tty supports color, but XEmacs doesn't use them. | |
2610 * Q3.2.6:: Can I have pixmap backgrounds in XEmacs? | |
2611 * Q3.2.7:: How do I display non-ASCII characters? | |
2612 | |
2613 The Modeline: | |
2614 * Q3.3.1:: How can I make the modeline go away? | |
2615 * Q3.3.2:: How do you have XEmacs display the line number in the modeline? | |
2616 * Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? | |
2617 * Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? | |
2618 * Q3.3.5:: How can one change the modeline color based on the mode used? | |
2619 | |
2620 3.4 Multiple Device Support: | |
2621 * Q3.4.1:: How do I open a frame on another screen of my multi-headed display? | |
2622 * Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? | |
2623 | |
2624 3.5 The Keyboard: | |
2625 * Q3.5.1:: How can I bind complex functions (or macros) to keys? | |
2626 * Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? | |
2627 * Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? | |
2628 * Q3.5.4:: Globally binding @kbd{Delete}? | |
2629 * Q3.5.5:: Scrolling one line at a time. | |
2630 * Q3.5.6:: How to map @kbd{Help} key alone on Sun type4 keyboard? | |
2631 * Q3.5.7:: How can you type in special characters in XEmacs? | |
2632 * Q3.5.8:: [This question intentionally left blank] | |
2633 * Q3.5.9:: How do I make the Delete key delete forward? | |
2634 * Q3.5.10:: Can I turn on @dfn{sticky} modifier keys? | |
2635 * Q3.5.11:: How do I map the arrow keys? | |
2636 | |
2637 The Cursor: | |
2638 * Q3.6.1:: Is there a way to make the bar cursor thicker? | |
2639 * Q3.6.2:: Is there a way to get back the old block cursor where the cursor covers the character in front of the point? | |
2640 * Q3.6.3:: Can I make the cursor blink? | |
2641 | |
2642 The Mouse and Highlighting: | |
2643 * Q3.7.1:: How can I turn off Mouse pasting? | |
2644 * Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? | |
2645 * Q3.7.3:: Clicking the left button does not do anything in buffer list. | |
2646 * Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? | |
2647 * Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? | |
2648 * Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? | |
2649 * Q3.7.7:: How do I select a rectangular region? | |
2650 * Q3.7.8:: Why does @kbd{M-w} take so long? | |
2651 | |
2652 The Menubar and Toolbar: | |
2653 * Q3.8.1:: How do I get rid of the menu (or menubar)? | |
2654 * Q3.8.2:: Can I customize the basic menubar? | |
2655 * Q3.8.3:: How do I control how many buffers are listed in the menu @code{Buffers} list? | |
2656 * Q3.8.4:: Resources like @code{Emacs*menubar*font} are not working? | |
2657 * Q3.8.5:: How can I bind a key to a function to toggle the toolbar? | |
2658 | |
2659 Scrollbars: | |
2660 * Q3.9.1:: How can I disable the scrollbar? | |
2661 * Q3.9.2:: How can one use resources to change scrollbar colors? | |
2662 * Q3.9.3:: Moving the scrollbar can move the point; can I disable this? | |
2663 * Q3.9.4:: How can I turn off automatic horizontal scrolling in specific modes? | |
2664 | |
2665 Text Selections: | |
2666 * Q3.10.1:: How can I turn off or change highlighted selections? | |
2667 * Q3.10.2:: How do I get that typing on an active region removes it? | |
2668 * Q3.10.3:: Can I turn off the highlight during isearch? | |
2669 * Q3.10.4:: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? | |
2670 * Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. | |
2671 * Q3.10.6:: Why is killing so slow? | |
2672 @end menu | |
2673 | |
2674 @node Q3.0.1, Q3.0.2, Customization, Customization | |
2675 @unnumberedsec 3.0: Customization -- Emacs Lisp and @file{init.el}/@file{.emacs} | |
2676 @unnumberedsubsec Q3.0.1: What version of Emacs am I running? | |
2677 | |
2678 How can @file{init.el}/@file{.emacs} determine which of the family of | |
2679 Emacsen I am using? | |
2680 | |
2681 To determine if you are currently running GNU Emacs 18, GNU Emacs 19, | |
2682 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the | |
2683 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in | |
2684 XEmacs versions prior to 21.4). There are other nifty things in there | |
2685 as well! | |
2686 | |
2687 For all new code, all you really need to do is: | |
2688 | |
2689 @lisp | |
2690 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) | |
2691 @end lisp | |
2692 | |
2693 @node Q3.0.2, Q3.0.3, Q3.0.1, Customization | |
2694 @unnumberedsubsec Q3.0.2: How can I evaluate Emacs-Lisp expressions? | |
2695 | |
2696 I know I can evaluate Elisp expressions from @code{*scratch*} buffer | |
2697 with @kbd{C-j} after the expression. How do I do it from another | |
2698 buffer? | |
2699 | |
2700 Press @kbd{M-:} (the default binding of @code{eval-expression}), and | |
2701 enter the expression to the minibuffer. | |
2702 | |
2703 @node Q3.0.3, Q3.0.4, Q3.0.2, Customization | |
2704 @unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly. | |
2705 | |
2706 If you put @code{(setq tab-width 6)} in your | |
2707 @file{init.el}/@file{.emacs} file it does not work! Is there a reason | |
2708 for this? If you do it at the EVAL prompt it works fine!! How strange. | |
2709 | |
2710 Use @code{setq-default} instead, since @code{tab-width} is | |
2711 all-buffer-local. | |
2712 | |
2713 @node Q3.0.4, Q3.0.5, Q3.0.3, Customization | |
2714 @unnumberedsubsec Q3.0.4: How can I add directories to the @code{load-path}? | |
2715 | |
2716 Here are two ways to do that, one that puts your directories at the | |
2717 front of the load-path, the other at the end: | |
2718 | |
2719 @lisp | |
2720 ;;; Add things at the beginning of the load-path, do not add | |
2721 ;;; duplicate directories: | |
2722 (pushnew "bar" load-path :test 'equal) | |
2723 | |
2724 (pushnew "foo" load-path :test 'equal) | |
2725 | |
2726 ;;; Add things at the end, unconditionally | |
2727 (setq load-path (nconc load-path '("foo" "bar"))) | |
2728 @end lisp | |
2729 | |
2730 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes: | |
2731 | |
2732 @quotation | |
2733 To add directories using Unix shell metacharacters use | |
2734 @file{expand-file-name} like this: | |
2735 | |
2736 @lisp | |
2737 (push (expand-file-name "~keithh/.emacsdir") load-path) | |
2738 @end lisp | |
2739 @end quotation | |
2740 | |
2741 @node Q3.0.5, Q3.0.6, Q3.0.4, Customization | |
2742 @unnumberedsubsec Q3.0.5: How to check if a lisp function is defined? | |
2743 | |
2744 Use the following elisp: | |
2745 | |
2746 @lisp | |
2747 (fboundp 'foo) | |
2748 @end lisp | |
2749 | |
2750 It's almost always a mistake to test @code{emacs-version} or any similar | |
2751 variables. | |
2752 | |
2753 Instead, use feature-tests, such as @code{featurep}, @code{boundp}, | |
2754 @code{fboundp}, or even simple behavioral tests, eg.: | |
2755 | |
2756 @lisp | |
2757 (defvar foo-old-losing-code-p | |
2758 (condition-case nil (progn (losing-code t) nil) | |
2759 (wrong-number-of-arguments t))) | |
2760 @end lisp | |
2761 | |
2762 There is an incredible amount of broken code out there which could work | |
2763 much better more often in more places if it did the above instead of | |
2764 trying to divine its environment from the value of one variable. | |
2765 | |
2766 @node Q3.0.6, Q3.0.7, Q3.0.5, Customization | |
2767 @unnumberedsubsec Q3.0.6: Can I force the output of @code{(face-list)} to a buffer? | |
2768 | |
2769 It would be good having it in a buffer, as the output of | |
2770 @code{(face-list)} is too wide to fit to a minibuffer. | |
2771 | |
2772 Evaluate the expression in the @samp{*scratch*} buffer with point after | |
2773 the rightmost paren and typing @kbd{C-j}. | |
2774 | |
2775 If the minibuffer smallness is the only problem you encounter, you can | |
2776 simply press @kbd{C-h l} to get the former minibuffer contents in a | |
2777 buffer. | |
2778 | |
2779 @node Q3.0.7, Q3.0.8, Q3.0.6, Customization | |
2780 @unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}. | |
2781 | |
2782 @email{mannj@@ll.mit.edu, John Mann} writes: | |
2783 | |
2784 @quotation | |
2785 You have to go to Options->Frame Appearance and unselect | |
2786 @samp{Frame-Local Font Menu}. If this option is selected, font changes | |
2787 are only applied to the @emph{current} frame and do @emph{not} get saved | |
2788 when you save options. | |
2789 @end quotation | |
2790 | |
2791 Also, set the following in your @file{init.el}/@file{.emacs}: | |
2792 | |
2793 @lisp | |
2794 (setq options-save-faces t) | |
2795 @end lisp | |
2796 | |
2797 @node Q3.0.8, Q3.0.9, Q3.0.7, Customization | |
2798 @unnumberedsubsec Q3.0.8: How do I get a single minibuffer frame? | |
2799 | |
2800 @email{acs@@acm.org, Vin Shelton} writes: | |
2801 | |
2802 @lisp | |
2803 (setq initial-frame-plist '(minibuffer nil)) | |
2804 (setq default-frame-plist '(minibuffer nil)) | |
2805 (setq default-minibuffer-frame | |
2806 (make-frame | |
2807 '(minibuffer only | |
2808 width 86 | |
2809 height 1 | |
2810 menubar-visible-p nil | |
2811 default-toolbar-visible-p nil | |
2812 name "minibuffer" | |
2813 top -2 | |
2814 left -2 | |
2815 has-modeline-p nil))) | |
2816 (frame-notice-user-settings) | |
2817 @end lisp | |
2818 | |
2819 @strong{Please note:} The single minibuffer frame may not be to everyone's | |
2820 taste, and there any number of other XEmacs options settings that may | |
2821 make it difficult or inconvenient to use. | |
2822 | |
2823 @node Q3.0.9, Q3.1.1, Q3.0.8, Customization | |
2824 @unnumberedsubsec Q3.0.9: What is @code{Customize}? | |
2825 | |
2826 Starting with XEmacs 20.2 there is new system 'Customize' for customizing | |
2827 XEmacs options. | |
2828 | |
2829 You can access @code{Customize} from the @code{Options} menu | |
2830 or invoking one of customize commands by typing eg. | |
2831 @kbd{M-x customize}, @kbd{M-x customize-face}, | |
2832 @kbd{M-x customize-variable} or @kbd{M-x customize-apropos}. | |
2833 | |
2834 Starting with XEmacs 20.3 there is also new `browser' mode for Customize. | |
2835 Try it out with @kbd{M-x customize-browse} | |
2836 | |
2837 @node Q3.1.1, Q3.1.2, Q3.0.9, Customization | |
2838 @unnumberedsec 3.1: X Window System & Resources | |
2839 @unnumberedsubsec Q3.1.1: Where is a list of X resources? | |
2840 | |
2841 Search through the @file{NEWS} file for @samp{X Resources}. A fairly | |
2842 comprehensive list is given after it. | |
2843 | |
2844 In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is | |
2845 supplied, listing the defaults. The file @file{etc/sample.Xresources} | |
2846 gives a different set of defaults that you might consider for | |
2847 installation in your @file{~/.Xresources} file. It is nearly the same | |
2848 as @file{etc/Emacs.ad}, but a few entries are altered. Be careful about | |
2849 installing the contents of this file into your @file{.Xresources} (or | |
2850 legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well. | |
2851 | |
2852 @node Q3.1.2, Q3.1.3, Q3.1.1, Customization | |
2853 @unnumberedsubsec Q3.1.2: How can I detect a color display? | |
2854 | |
2855 You can test the return value of the function @code{(device-class)}, as | |
2856 in: | |
2857 | |
2858 @lisp | |
2859 (when (eq (device-class) 'color) | |
2860 (set-face-foreground 'font-lock-comment-face "Grey") | |
2861 (set-face-foreground 'font-lock-string-face "Red") | |
2862 .... | |
2863 ) | |
2864 @end lisp | |
2865 | |
2866 @node Q3.1.3, Q3.1.4, Q3.1.2, Customization | |
2867 @unnumberedsubsec Q3.1.3: [This question intentionally left blank] | |
2868 | |
2869 @node Q3.1.4, Q3.1.5, Q3.1.3, Customization | |
2870 @unnumberedsubsec Q3.1.4: [This question intentionally left blank] | |
2871 | |
2872 @node Q3.1.5, Q3.1.6, Q3.1.4, Customization | |
2873 @unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}? | |
2874 | |
2875 I'd like the icon to just say @samp{XEmacs}, and not include the name of | |
2876 the current file in it. | |
2877 | |
2878 Add the following line to your @file{init.el}/@file{.emacs}: | |
2879 | |
2880 @lisp | |
2881 (setq frame-icon-title-format "XEmacs") | |
2882 @end lisp | |
2883 | |
2884 @node Q3.1.6, Q3.1.7, Q3.1.5, Customization | |
2885 @unnumberedsubsec Q3.1.6: How can I have the window title area display the full path? | |
2886 | |
2887 I'd like to have the window title area display the full directory/name | |
2888 of the current buffer file and not just the name. | |
2889 | |
2890 Add the following line to your @file{init.el}/@file{.emacs}: | |
2891 | |
2892 @lisp | |
2893 (setq frame-title-format "%S: %f") | |
2894 @end lisp | |
2895 | |
2896 A more sophisticated title might be: | |
2897 | |
2898 @lisp | |
2899 (setq frame-title-format | |
2900 '("%S: " (buffer-file-name "%f" | |
2901 (dired-directory dired-directory "%b")))) | |
2902 @end lisp | |
2903 | |
2904 That is, use the file name, or the dired-directory, or the buffer name. | |
2905 | |
2906 @node Q3.1.7, Q3.1.8, Q3.1.6, Customization | |
2907 @unnumberedsubsec Q3.1.7: @samp{xemacs -name junk} doesn't work? | |
2908 | |
2909 When I run @samp{xterm -name junk}, I get an xterm whose class name | |
2910 according to xprop, is @samp{junk}. This is the way it's supposed to | |
2911 work, I think. When I run @samp{xemacs -name junk} the class name is | |
2912 not set to @samp{junk}. It's still @samp{emacs}. What does | |
2913 @samp{xemacs -name} really do? The reason I ask is that my window | |
2914 manager (fvwm) will make a window sticky and I use XEmacs to read my | |
2915 mail. I want that XEmacs window to be sticky, without having to use the | |
2916 window manager's function to set the window sticky. What gives? | |
2917 | |
2918 @samp{xemacs -name} sets the application name for the program (that is, | |
2919 the thing which normally comes from @samp{argv[0]}). Using @samp{-name} | |
2920 is the same as making a copy of the executable with that new name. The | |
2921 @code{WM_CLASS} property on each frame is set to the frame-name, and the | |
2922 application-class. So, if you did @samp{xemacs -name FOO} and then | |
2923 created a frame named @var{BAR}, you'd get an X window with WM_CLASS = | |
2924 @code{( "BAR", "Emacs")}. However, the resource hierarchy for this | |
2925 widget would be: | |
2926 | |
2927 @example | |
2928 Name: FOO .shell .container .BAR | |
2929 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame | |
2930 @end example | |
2931 | |
2932 instead of the default | |
2933 | |
2934 @example | |
2935 Name: xemacs.shell .container .emacs | |
2936 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame | |
2937 @end example | |
2938 | |
2939 | |
2940 It is arguable that the first element of WM_CLASS should be set to the | |
2941 application-name instead of the frame-name, but I think that's less | |
2942 flexible, since it does not give you the ability to have multiple frames | |
2943 with different WM_CLASS properties. Another possibility would be for | |
2944 the default frame name to come from the application name instead of | |
2945 simply being @samp{emacs}. However, at this point, making that change | |
2946 would be troublesome: it would mean that many users would have to make | |
2947 yet another change to their resource files (since the default frame name | |
2948 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever | |
2949 the executable happened to be named), so we'd rather avoid it. | |
2950 | |
2951 To make a frame with a particular name use: | |
2952 | |
2953 @lisp | |
2954 (make-frame '((name . "the-name"))) | |
2955 @end lisp | |
2956 | |
2957 @node Q3.1.8, Q3.2.1, Q3.1.7, Customization | |
2958 @unnumberedsubsec Q3.1.8: @samp{-iconic} doesn't work. | |
2959 | |
2960 When I start up XEmacs using @samp{-iconic} it doesn't work right. | |
2961 Using @samp{-unmapped} on the command line, and setting the | |
2962 @code{initiallyUnmapped} X Resource don't seem to help much either... | |
2963 | |
2964 @email{ben@@xemacs.org, Ben Wing} writes: | |
2965 | |
2966 @quotation | |
2967 Ugh, this stuff is such an incredible mess that I've about given up | |
2968 getting it to work. The principal problem is numerous window-manager | |
2969 bugs... | |
2970 @end quotation | |
2971 | |
2972 @node Q3.2.1, Q3.2.2, Q3.1.8, Customization | |
2973 @unnumberedsec 3.2: Textual Fonts & Colors | |
2974 @unnumberedsubsec Q3.2.1: How can I set color options from @file{init.el}/@file{.emacs}? | |
2975 | 3993 |
2976 How can I set the most commonly used color options from my | 3994 How can I set the most commonly used color options from my |
2977 @file{init.el}/@file{.emacs} instead of from my @file{.Xresources}? | 3995 @file{init.el} instead of from my @file{.Xresources}? |
2978 | 3996 |
2979 Like this: | 3997 Like this: |
2980 | 3998 |
2981 @lisp | 3999 @lisp |
2982 (set-face-background 'default "bisque") ; frame background | 4000 (set-face-background 'default "bisque") ; frame background |
3000 (setq x-pointer-background-color "blue") ; This is color | 4018 (setq x-pointer-background-color "blue") ; This is color |
3001 ; you really | 4019 ; you really |
3002 ; want ptr/crsr | 4020 ; want ptr/crsr |
3003 @end lisp | 4021 @end lisp |
3004 | 4022 |
3005 @node Q3.2.2, Q3.2.3, Q3.2.1, Customization | 4023 @node Q3.2.4, Q3.2.5, Q3.2.3, Display Subsystems |
3006 @unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fonts? | 4024 @unnumberedsubsec Q3.2.4: How can I set the colors when highlighting a region? |
3007 | |
3008 Note that you should use @samp{Emacs.} and not @samp{Emacs*} when | |
3009 setting face values. | |
3010 | |
3011 In @file{.Xresources}: | |
3012 | |
3013 @example | |
3014 Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-*-* | |
3015 Emacs*menubar*font: fixed | |
3016 Emacs.modeline.attributeFont: fixed | |
3017 @end example | |
3018 | |
3019 This is confusing because @samp{default} and @samp{modeline} are face | |
3020 names, and can be found listed with all faces in the current mode by | |
3021 using @kbd{M-x set-face-font (enter) ?}. They use the face-specific | |
3022 resource @samp{attributeFont}. | |
3023 | |
3024 On the other hand, @samp{menubar} is a normal X thing that uses the | |
3025 resource @samp{font}. With Motif it @emph{may be} necessary to use | |
3026 @samp{fontList} @emph{instead of} @samp{font}. In @emph{non-Motif} | |
3027 configurations with Mule it @emph{is} necessary to use @samp{fontSet} | |
3028 instead of @samp{font}. (Sorry, there just is no simple recipe here.) | |
3029 | |
3030 @node Q3.2.3, Q3.2.4, Q3.2.2, Customization | |
3031 @unnumberedsubsec Q3.2.3: How can I set the colors when highlighting a region? | |
3032 | 4025 |
3033 How can I set the background/foreground colors when highlighting a | 4026 How can I set the background/foreground colors when highlighting a |
3034 region? | 4027 region? |
3035 | 4028 |
3036 You can change the face @code{zmacs-region} either in your | 4029 You can change the face @code{zmacs-region} either in your |
3039 @example | 4032 @example |
3040 Emacs.zmacs-region.attributeForeground: firebrick | 4033 Emacs.zmacs-region.attributeForeground: firebrick |
3041 Emacs.zmacs-region.attributeBackground: lightseagreen | 4034 Emacs.zmacs-region.attributeBackground: lightseagreen |
3042 @end example | 4035 @end example |
3043 | 4036 |
3044 or in your @file{init.el}/@file{.emacs}: | 4037 or in your @file{init.el}: |
3045 | 4038 |
3046 @lisp | 4039 @lisp |
3047 (set-face-background 'zmacs-region "red") | 4040 (set-face-background 'zmacs-region "red") |
3048 (set-face-foreground 'zmacs-region "yellow") | 4041 (set-face-foreground 'zmacs-region "yellow") |
3049 @end lisp | 4042 @end lisp |
3050 | 4043 |
3051 @node Q3.2.4, Q3.2.5, Q3.2.3, Customization | 4044 @node Q3.2.5, Q3.2.6, Q3.2.4, Display Subsystems |
3052 @unnumberedsubsec Q3.2.4: How can I limit color map usage? | 4045 @unnumberedsubsec Q3.2.5: How can I limit color map usage? |
3053 | 4046 |
3054 I'm using Netscape (or another color grabber like XEmacs); | 4047 I'm using Netscape (or another color grabber like XEmacs); |
3055 is there any way to limit the number of available colors in the color map? | 4048 is there any way to limit the number of available colors in the color map? |
3056 | 4049 |
3057 Answer: No, but you can start Netscape before XEmacs, and it will use | 4050 Answer: No, but you can start Netscape before XEmacs, and it will use |
3061 map). | 4054 map). |
3062 | 4055 |
3063 If you have the money, another solution would be to use a truecolor or | 4056 If you have the money, another solution would be to use a truecolor or |
3064 direct color video. | 4057 direct color video. |
3065 | 4058 |
3066 @node Q3.2.5, Q3.2.6, Q3.2.4, Customization | 4059 @node Q3.2.6, Q3.2.7, Q3.2.5, Display Subsystems |
3067 @unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them. | 4060 @unnumberedsubsec Q3.2.6: My tty supports color, but XEmacs doesn't use them. |
3068 | 4061 |
3069 XEmacs tries to automatically determine whether your tty supports color, | 4062 XEmacs tries to automatically determine whether your tty supports color, |
3070 but sometimes guesses wrong. In that case, you can make XEmacs Do The | 4063 but sometimes guesses wrong. In that case, you can make XEmacs Do The |
3071 Right Thing using this Lisp code: | 4064 Right Thing using this Lisp code: |
3072 | 4065 |
3073 @lisp | 4066 @lisp |
3074 (if (eq 'tty (device-type)) | 4067 (if (eq 'tty (device-type)) |
3075 (set-device-class nil 'color)) | 4068 (set-device-class nil 'color)) |
3076 @end lisp | 4069 @end lisp |
3077 | 4070 |
3078 @node Q3.2.6, Q3.2.7, Q3.2.5, Customization | 4071 @node Q3.2.7, Q3.2.8, Q3.2.6, Display Subsystems |
3079 @unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs? | 4072 @unnumberedsubsec Q3.2.7: Can I have pixmap backgrounds in XEmacs? |
3080 @c New | 4073 @c New |
3081 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: | 4074 @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: |
3082 | 4075 |
3083 @quotation | 4076 @quotation |
3084 There are several ways to do it. For example, you could specify a | 4077 There are several ways to do it. For example, you could specify a |
3101 | 4094 |
3102 and so on. You can also do this interactively via @kbd{M-x edit-faces}. | 4095 and so on. You can also do this interactively via @kbd{M-x edit-faces}. |
3103 | 4096 |
3104 @end quotation | 4097 @end quotation |
3105 | 4098 |
3106 @node Q3.2.7, Q3.3.1, Q3.2.6, Customization | 4099 @node Q3.2.8, Q3.2.9, Q3.2.7, Display Subsystems |
3107 @unnumberedsubsec Q3.2.7: How do I display non-ASCII characters? | 4100 @unnumberedsubsec Q3.2.8: How do I display non-ASCII characters? |
3108 @c New | 4101 @c New |
3109 | 4102 |
3110 If you're using a Mule-enabled XEmacs, then display is automatic. If | 4103 If you're using a Mule-enabled XEmacs, then display is automatic. If |
3111 you're not seeing the characters you expect, either (1) you don't have | 4104 you're not seeing the characters you expect, either (1) you don't have |
3112 appropriate fonts available or (2) XEmacs did not correctly detect the | 4105 appropriate fonts available or (2) XEmacs did not correctly detect the |
3126 doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all | 4119 doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all |
3127 their Latin-2 buffers, etc. | 4120 their Latin-2 buffers, etc. |
3128 @end quotation | 4121 @end quotation |
3129 | 4122 |
3130 For the related problem of @emph{inputting} non-ASCII characters in a | 4123 For the related problem of @emph{inputting} non-ASCII characters in a |
3131 non-Mule XEmacs, @xref{Q3.5.7}. | 4124 non-Mule XEmacs, @xref{Q3.0.5, How can you type in special characters |
3132 | 4125 in XEmacs?}. |
3133 @node Q3.3.1, Q3.3.2, Q3.2.7, Customization | 4126 |
3134 @unnumberedsec 3.3: The Modeline | 4127 @node Q3.2.9, Q3.3.1, Q3.2.8, Display Subsystems |
3135 @unnumberedsubsec Q3.3.1: How can I make the modeline go away? | 4128 @unnumberedsubsec Q3.2.9: Font selections in don't get saved after @code{Save Options}. |
4129 | |
4130 @email{mannj@@ll.mit.edu, John Mann} writes: | |
4131 | |
4132 @quotation | |
4133 You have to go to @samp{Options->Menubars} and unselect | |
4134 @samp{Frame-Local Font Menu}. If this option is selected, font changes | |
4135 are only applied to the @emph{current} frame and do @emph{not} get saved | |
4136 when you save options. | |
4137 @end quotation | |
4138 | |
4139 Also, set the following in your @file{init.el}: | |
4140 | |
4141 @lisp | |
4142 (setq options-save-faces t) | |
4143 @end lisp | |
4144 | |
4145 @unnumberedsec 3.3: The Menubar and Toolbar | |
4146 | |
4147 @node Q3.3.1, Q3.3.2, Q3.2.9, Display Subsystems | |
4148 @unnumberedsubsec Q3.3.1: How do I get rid of the menu (or menubar)? | |
4149 | |
4150 @lisp | |
4151 (set-specifier menubar-visible-p nil) | |
4152 @end lisp | |
4153 | |
4154 @node Q3.3.2, Q3.3.3, Q3.3.1, Display Subsystems | |
4155 @unnumberedsubsec Q3.3.2: Can I customize the basic menubar? | |
4156 | |
4157 For an extensive menubar, add this line to your @file{init.el}: | |
4158 | |
4159 @lisp | |
4160 (load "big-menubar") | |
4161 @end lisp | |
4162 | |
4163 If you'd like to write your own, this file provides as good a set of | |
4164 examples as any to start from. The file is located in edit-utils | |
4165 package. | |
4166 | |
4167 @node Q3.3.3, Q3.3.4, Q3.3.2, Display Subsystems | |
4168 @unnumberedsubsec Q3.3.3: How do I control how many buffers are listed in the menu @code{Buffers List}? | |
4169 | |
4170 Add the following to your @file{init.el} (suit to fit): | |
4171 | |
4172 @lisp | |
4173 (setq buffers-menu-max-size 20) | |
4174 @end lisp | |
4175 | |
4176 For no limit, use an argument of @samp{nil}. | |
4177 | |
4178 Starting with XEmacs-20.3 you can also change this with Customize. | |
4179 Select from the @code{Options} menu | |
4180 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or | |
4181 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}. | |
4182 | |
4183 @node Q3.3.4, Q3.3.5, Q3.3.3, Display Subsystems | |
4184 @unnumberedsubsec Q3.3.4: Resources like @code{Emacs*menubar*font} are not working? | |
4185 | |
4186 I am trying to use a resource like @code{Emacs*menubar*font} to set the | |
4187 font of the menubar but it's not working. | |
4188 | |
4189 In Motif, the use of @samp{font} resources is obsoleted in order to | |
4190 support internationalization. If you are using the real Motif menubar, | |
4191 this resource is not recognized at all; you have to say: | |
4192 | |
4193 @example | |
4194 Emacs*menubar*fontList: FONT | |
4195 @end example | |
4196 | |
4197 If you are using the Lucid menubar, for backward compatibility with | |
4198 existing user configurations, the @samp{font} resource is recognized. | |
4199 Since this is not supported by Motif itself, the code is a kludge and | |
4200 the @samp{font} resource will be recognized only if the @samp{fontList} | |
4201 resource resource is unset. This means that the resource | |
4202 | |
4203 @example | |
4204 *fontList: FONT | |
4205 @end example | |
4206 | |
4207 will override | |
4208 | |
4209 @example | |
4210 Emacs*menubar*font: FONT | |
4211 @end example | |
4212 | |
4213 even though the latter is more specific. | |
4214 | |
4215 In non-Motif configurations using @samp{--with-mule} and | |
4216 @samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet} | |
4217 resource @emph{instead of} the @code{font} resource. The backward | |
4218 compatibility kludge was never implemented for non-Motif builds. | |
4219 Example: | |
4220 | |
4221 @example | |
4222 *fontSet: FONT | |
4223 @end example | |
4224 | |
4225 @node Q3.3.5, Q3.3.6, Q3.3.4, Display Subsystems | |
4226 @unnumberedsubsec Q3.3.5: How can I bind a key to a function to toggle the toolbar? | |
4227 | |
4228 Try something like: | |
4229 | |
4230 @lisp | |
4231 (defun my-toggle-toolbar () | |
4232 (interactive) | |
4233 (set-specifier default-toolbar-visible-p | |
4234 (not (specifier-instance default-toolbar-visible-p)))) | |
4235 (global-set-key "\C-xT" 'my-toggle-toolbar) | |
4236 @end lisp | |
4237 | |
4238 There are redisplay bugs in 19.14 that may make the preceding result in | |
4239 a messed-up display, especially for frames with multiple windows. You | |
4240 may need to resize the frame before XEmacs completely realizes the | |
4241 toolbar is really gone. | |
4242 | |
4243 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct | |
4244 code. | |
4245 | |
4246 @node Q3.3.6, Q3.4.1, Q3.3.5, Display Subsystems | |
4247 @unnumberedsubsec Q3.3.6: @samp{Can't instantiate image error...} in toolbar | |
4248 @c New | |
4249 | |
4250 @email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: | |
4251 | |
4252 I just installed the XEmacs (20.4-2) RPMS that I downloaded from | |
4253 @uref{http://www.xemacs.org/}. Everything works fine, except that when | |
4254 I place my mouse over the toolbar, it beeps and gives me this message: | |
4255 | |
4256 @example | |
4257 Can't instantiate image (probably cached): | |
4258 [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data | |
4259 (16 16 <strange control characters> ... | |
4260 @end example | |
4261 | |
4262 @email{kyle_jones@@wonderworks.com, Kyle Jones} writes: | |
4263 @quotation | |
4264 This is problem specific to some Chips and Technologies video | |
4265 chips, when running XFree86. Putting | |
4266 | |
4267 @code{Option "sw_cursor"} | |
4268 | |
4269 in @file{XF86Config} gets rid of the problem. | |
4270 @end quotation | |
4271 | |
4272 @unnumberedsec 3.4: Scrollbars | |
4273 | |
4274 @node Q3.4.1, Q3.4.2, Q3.3.6, Display Subsystems | |
4275 @unnumberedsubsec Q3.4.1: How can I disable the scrollbar? | |
4276 | |
4277 To disable them for all frames, add the following line to | |
4278 your @file{.Xresources}: | |
4279 | |
4280 @example | |
4281 Emacs.scrollBarWidth: 0 | |
4282 @end example | |
4283 | |
4284 Or select @samp{Options->Display->Scrollbars}. | |
4285 Remember to save options. | |
4286 | |
4287 To turn the scrollbar off on a per-frame basis, use the following | |
4288 function: | |
4289 | |
4290 @lisp | |
4291 (set-specifier scrollbar-width 0 (selected-frame)) | |
4292 @end lisp | |
4293 | |
4294 You can actually turn the scrollbars on at any level you want by | |
4295 substituting for (selected-frame) in the above command. For example, to | |
4296 turn the scrollbars off only in a single buffer: | |
4297 | |
4298 @lisp | |
4299 (set-specifier scrollbar-width 0 (current-buffer)) | |
4300 @end lisp | |
4301 | |
4302 @node Q3.4.2, Q3.4.3, Q3.4.1, Display Subsystems | |
4303 @unnumberedsubsec Q3.4.2: How can one use resources to change scrollbar colors? | |
4304 | |
4305 Here's a recap of how to use resources to change your scrollbar colors: | |
4306 | |
4307 @example | |
4308 ! Motif scrollbars | |
4309 | |
4310 Emacs*XmScrollBar.Background: skyblue | |
4311 Emacs*XmScrollBar.troughColor: lightgray | |
4312 | |
4313 ! Athena scrollbars | |
4314 | |
4315 Emacs*Scrollbar.Foreground: skyblue | |
4316 Emacs*Scrollbar.Background: lightgray | |
4317 @end example | |
4318 | |
4319 Note the capitalization of @code{Scrollbar} for the Athena widget. | |
4320 | |
4321 @node Q3.4.3, Q3.4.4, Q3.4.2, Display Subsystems | |
4322 @unnumberedsubsec Q3.4.3: Moving the scrollbar can move the point; can I disable this? | |
4323 | |
4324 When I move the scrollbar in an XEmacs window, it moves the point as | |
4325 well, which should not be the default behavior. Is this a bug or a | |
4326 feature? Can I disable it? | |
4327 | |
4328 The current behavior is a feature, not a bug. Point remains at the same | |
4329 buffer position as long as that position does not scroll off the screen. | |
4330 In that event, point will end up in either the upper-left or lower-left | |
4331 hand corner. | |
4332 | |
4333 This cannot be changed. | |
4334 | |
4335 @node Q3.4.4, Q3.4.5, Q3.4.3, Display Subsystems | |
4336 @unnumberedsubsec Q3.4.4: Scrolling one line at a time. | |
4337 | |
4338 Can the cursor keys scroll the screen a line at a time, rather than the | |
4339 default half page jump? I tend it to find it disorienting. | |
4340 | |
4341 Use the following: | |
4342 | |
4343 @lisp | |
4344 (setq scroll-step 1) | |
4345 @end lisp | |
4346 | |
4347 You can also change this with Customize. Select from the | |
4348 @code{Options} menu @code{Advanced | |
4349 (Customize)->Emacs->Environment->Windows->Scroll Step...} or type | |
4350 @kbd{M-x customize @key{RET} windows @key{RET}}. | |
4351 | |
4352 @node Q3.4.5, Q3.4.6, Q3.4.4, Display Subsystems | |
4353 @unnumberedsubsec Q3.4.5: How can I turn off automatic horizontal scrolling in specific modes? | |
4354 | |
4355 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes | |
4356 in which you want lines truncated. | |
4357 | |
4358 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars | |
4359 will never appear. Otherwise, they will appear only if the value of | |
4360 @code{scrollbar-height} for that buffer/window/etc. is non-zero. If you | |
4361 do | |
4362 | |
4363 @lisp | |
4364 (set-specifier scrollbar-height 0) | |
4365 @end lisp | |
4366 | |
4367 then horizontal scrollbars will not appear in truncated buffers unless | |
4368 the package specifically asked for them. | |
4369 | |
4370 @node Q3.4.6, Q3.5.1, Q3.4.5, Display Subsystems | |
4371 @unnumberedsubsec Q3.4.6: I find auto-show-mode disconcerting. How do I turn it off? | |
4372 | |
4373 @code{auto-show-mode} controls whether or not a horizontal scrollbar | |
4374 magically appears when a line is too long to be displayed. This is | |
4375 enabled by default. To turn it off, put the following in your | |
4376 @file{init.el}: | |
4377 | |
4378 @lisp | |
4379 (setq auto-show-mode nil) | |
4380 (setq-default auto-show-mode nil) | |
4381 @end lisp | |
4382 | |
4383 @unnumberedsec 3.5: The Modeline | |
4384 | |
4385 @node Q3.5.1, Q3.5.2, Q3.4.6, Display Subsystems | |
4386 @unnumberedsubsec Q3.5.1: How can I make the modeline go away? | |
3136 | 4387 |
3137 @lisp | 4388 @lisp |
3138 (set-specifier has-modeline-p nil) | 4389 (set-specifier has-modeline-p nil) |
3139 @end lisp | 4390 @end lisp |
3140 | 4391 |
3141 @c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if | 4392 @node Q3.5.2, Q3.5.3, Q3.5.1, Display Subsystems |
3142 @c you haven't liked or used the modeline in the past, you might want to | 4393 @unnumberedsubsec Q3.5.2: How do you have XEmacs display the line number in the modeline? |
3143 @c try the new version out. | 4394 |
3144 @c | 4395 Add the following line to your @file{init.el} file to |
3145 @node Q3.3.2, Q3.3.3, Q3.3.1, Customization | |
3146 @unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline? | |
3147 | |
3148 Add the following line to your @file{init.el}/@file{.emacs} file to | |
3149 display the line number: | 4396 display the line number: |
3150 | 4397 |
3151 @lisp | 4398 @lisp |
3152 (line-number-mode 1) | 4399 (line-number-mode 1) |
3153 @end lisp | 4400 @end lisp |
3169 @end iftex | 4416 @end iftex |
3170 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode} | 4417 @code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode} |
3171 | 4418 |
3172 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. | 4419 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. |
3173 | 4420 |
3174 @node Q3.3.3, Q3.3.4, Q3.3.2, Customization | 4421 @node Q3.5.3, Q3.5.4, Q3.5.2, Display Subsystems |
3175 @unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline? | 4422 @unnumberedsubsec Q3.5.3: How do I get XEmacs to put the time of day on the modeline? |
3176 | 4423 |
3177 Add the following line to your @file{init.el}/@file{.emacs} file to | 4424 Add the following line to your @file{init.el} file to |
3178 display the time: | 4425 display the time: |
3179 | 4426 |
3180 @lisp | 4427 @lisp |
3181 (display-time) | 4428 (display-time) |
3182 @end lisp | 4429 @end lisp |
3183 | 4430 |
3184 See @code{Customize} from the @code{Options} menu for customization. | 4431 See @code{Customize} from the @code{Options} menu for customization. |
3185 | 4432 |
3186 @node Q3.3.4, Q3.3.5, Q3.3.3, Customization | 4433 @node Q3.5.4, Q3.6.1, Q3.5.3, Display Subsystems |
3187 @unnumberedsubsec Q3.3.4: How do I turn off current chapter from AUC TeX modeline? | 4434 @unnumberedsubsec Q3.5.4: How can one change the modeline color based on the mode used? |
3188 | |
3189 With AUC TeX, fast typing is hard because the current chapter, section | |
3190 etc. are given in the modeline. How can I turn this off? | |
3191 | |
3192 It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}. | |
3193 | |
3194 @c Add this code to your @file{init.el}/@file{.emacs} to turn it off: | |
3195 @c | |
3196 @c @lisp | |
3197 @c (setq fume-display-in-modeline-p nil) | |
3198 @c @end lisp | |
3199 @c | |
3200 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX | |
3201 @c mode: | |
3202 @c | |
3203 @c @lisp | |
3204 @c (add-hook 'TeX-mode-hook | |
3205 @c '(lambda () (setq fume-display-in-modeline-p nil))) | |
3206 @c @end lisp | |
3207 @c | |
3208 @email{dhughes@@origin-at.co.uk, David Hughes} writes: | |
3209 | |
3210 @quotation | |
3211 Try this; you'll still get the function name displayed in the modeline, | |
3212 but it won't attempt to keep track when you modify the file. To refresh | |
3213 when it gets out of synch, you simply need click on the @samp{Rescan | |
3214 Buffer} option in the function-menu. | |
3215 | |
3216 @lisp | |
3217 (setq-default fume-auto-rescan-buffer-p nil) | |
3218 @end lisp | |
3219 @end quotation | |
3220 | |
3221 @node Q3.3.5, Q3.4.1, Q3.3.4, Customization | |
3222 @unnumberedsubsec Q3.3.5: How can one change the modeline color based on the mode used? | |
3223 | 4435 |
3224 You can use something like the following: | 4436 You can use something like the following: |
3225 | 4437 |
3226 @lisp | 4438 @lisp |
3227 (add-hook 'lisp-mode-hook | 4439 (add-hook 'lisp-mode-hook |
3228 (lambda () | 4440 (lambda () |
3229 (set-face-background 'modeline "red" (current-buffer)))) | 4441 (set-face-background 'modeline "red" (current-buffer)))) |
3230 @end lisp | 4442 @end lisp |
3231 | 4443 |
3232 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline | 4444 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline |
3233 colors change from the default set in your @file{init.el}/@file{.emacs}. | 4445 colors change from the default set in your @file{init.el}. |
3234 The change will only be made in the buffer you just entered (which | 4446 The change will only be made in the buffer you just entered (which |
3235 contains the Lisp file you are editing) and will not affect the modeline | 4447 contains the Lisp file you are editing) and will not affect the modeline |
3236 colors anywhere else. | 4448 colors anywhere else. |
3237 | 4449 |
3238 Notes: | 4450 Notes: |
3239 | 4451 |
3240 @itemize @bullet | 4452 @itemize @bullet |
3241 | 4453 |
3242 @item The hook is the mode name plus @code{-hook}. eg. c-mode-hook, | 4454 @item The hook is the mode name plus @code{-hook}. eg. c-mode-hook, |
3243 c++-mode-hook, emacs-lisp-mode-hook (used for your | 4455 c++-mode-hook, emacs-lisp-mode-hook (used for your |
3244 @file{init.el}/@file{.emacs} or a @file{xx.el} file), | 4456 @file{init.el} or a @file{xx.el} file), |
3245 lisp-interaction-mode-hook (the @samp{*scratch*} buffer), | 4457 lisp-interaction-mode-hook (the @samp{*scratch*} buffer), |
3246 text-mode-hook, etc. | 4458 text-mode-hook, etc. |
3247 | 4459 |
3248 @item | 4460 @item |
3249 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)}, | 4461 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)}, |
3259 | 4471 |
3260 There are additional modeline faces, @code{modeline-buffer-id}, | 4472 There are additional modeline faces, @code{modeline-buffer-id}, |
3261 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which | 4473 @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which |
3262 you may want to customize. | 4474 you may want to customize. |
3263 | 4475 |
3264 @node Q3.4.1, Q3.4.2, Q3.3.5, Customization | |
3265 @unnumberedsec 3.4: Multiple Device Support | |
3266 @unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display? | |
3267 | |
3268 Use the command @kbd{M-x make-frame-on-display}. This command is also | |
3269 on the File menu in the menubar. | |
3270 | |
3271 The command @code{make-frame-on-tty} also exists, which will establish a | |
3272 connection to any tty-like device. Opening the TTY devices should be | |
3273 left to @code{gnuclient}, though. | |
3274 | |
3275 @node Q3.4.2, Q3.5.1, Q3.4.1, Customization | |
3276 @unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem? How? | |
3277 | |
3278 Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach} | |
3279 program supplied with XEmacs instead.) | |
3280 | |
3281 Also see @ref{Q5.0.12}. | |
3282 | |
3283 @node Q3.5.1, Q3.5.2, Q3.4.2, Customization | |
3284 @unnumberedsec 3.5: The Keyboard | |
3285 @unnumberedsubsec Q3.5.1: How can I bind complex functions (or macros) to keys? | |
3286 | |
3287 As an example, say you want the @kbd{paste} key on a Sun keyboard to | |
3288 insert the current Primary X selection at point. You can accomplish this | |
3289 with: | |
3290 | |
3291 @lisp | |
3292 (define-key global-map [f18] 'x-insert-selection) | |
3293 @end lisp | |
3294 | |
3295 However, this only works if there is a current X selection (the | |
3296 selection will be highlighted). The functionality I like is for the | |
3297 @kbd{paste} key to insert the current X selection if there is one, | |
3298 otherwise insert the contents of the clipboard. To do this you need to | |
3299 pass arguments to @code{x-insert-selection}. This is done by wrapping | |
3300 the call in a 'lambda form: | |
3301 | |
3302 @lisp | |
3303 (global-set-key [f18] | |
3304 (lambda () (interactive) (x-insert-selection t nil))) | |
3305 @end lisp | |
3306 | |
3307 This binds the f18 key to a @dfn{generic} functional object. The | |
3308 interactive spec is required because only interactive functions can be | |
3309 bound to keys. | |
3310 | |
3311 For the FAQ example you could use: | |
3312 | |
3313 @lisp | |
3314 (global-set-key [(control ?.)] | |
3315 (lambda () (interactive) (scroll-up 1))) | |
3316 (global-set-key [(control ?;)] | |
3317 (lambda () (interactive) (scroll-up -1))) | |
3318 @end lisp | |
3319 | |
3320 This is fine if you only need a few functions within the lambda body. | |
3321 If you're doing more it's cleaner to define a separate function as in | |
3322 question 3.5.3 (@pxref{Q3.5.3}). | |
3323 | |
3324 @node Q3.5.2, Q3.5.3, Q3.5.1, Customization | |
3325 @unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers? | |
3326 | |
3327 Add the following line to your @file{init.el}/@file{.emacs} file: | |
3328 | |
3329 @lisp | |
3330 (setq next-line-add-newlines nil) | |
3331 @end lisp | |
3332 | |
3333 This has been the default setting in XEmacs for some time. | |
3334 | |
3335 @node Q3.5.3, Q3.5.4, Q3.5.2, Customization | |
3336 @unnumberedsubsec Q3.5.3: How do I bind C-. and C-; to scroll one line up and down? | |
3337 | |
3338 Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and | |
3339 @email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}: | |
3340 | |
3341 @lisp | |
3342 (defun scroll-up-one-line () | |
3343 (interactive) | |
3344 (scroll-up 1)) | |
3345 | |
3346 (defun scroll-down-one-line () | |
3347 (interactive) | |
3348 (scroll-down 1)) | |
3349 | |
3350 (global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. | |
3351 (global-set-key [(control ?;)] 'scroll-down-one-line) ; C-; | |
3352 @end lisp | |
3353 | |
3354 The key point is that you can only bind simple functions to keys; you | |
3355 can not bind a key to a function that you're also passing arguments to. | |
3356 (@pxref{Q3.5.1} for a better answer). | |
3357 | |
3358 @node Q3.5.4, Q3.5.5, Q3.5.3, Customization | |
3359 @unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}? | |
3360 | |
3361 I cannot manage to globally bind my @kbd{Delete} key to something other | |
3362 than the default. How does one do this? | |
3363 | |
3364 Answer: The problem is that many modes explicitly bind @kbd{Delete}. To | |
3365 get around this, try the following: | |
3366 | |
3367 @lisp | |
3368 (defun foo () | |
3369 (interactive) | |
3370 (message "You hit DELETE")) | |
3371 | |
3372 (define-key key-translation-map 'delete 'redirected-delete) | |
3373 (global-set-key 'redirected-delete 'foo) | |
3374 @end lisp | |
3375 | |
3376 Also see @ref{Q3.5.10}. | |
3377 | |
3378 @node Q3.5.5, Q3.5.6, Q3.5.4, Customization | |
3379 @unnumberedsubsec Q3.5.5: Scrolling one line at a time. | |
3380 | |
3381 Can the cursor keys scroll the screen a line at a time, rather than the | |
3382 default half page jump? I tend it to find it disorienting. | |
3383 | |
3384 Try this: | |
3385 | |
3386 @lisp | |
3387 (defun scroll-one-line-up (&optional arg) | |
3388 "Scroll the selected window up (forward in the text) one line (or N lines)." | |
3389 (interactive "p") | |
3390 (scroll-up (or arg 1))) | |
3391 | |
3392 (defun scroll-one-line-down (&optional arg) | |
3393 "Scroll the selected window down (backward in the text) one line (or N)." | |
3394 (interactive "p") | |
3395 (scroll-down (or arg 1))) | |
3396 | |
3397 (global-set-key [up] 'scroll-one-line-up) | |
3398 (global-set-key [down] 'scroll-one-line-down) | |
3399 @end lisp | |
3400 | |
3401 The following will also work but will affect more than just the cursor | |
3402 keys (i.e. @kbd{C-n} and @kbd{C-p}): | |
3403 | |
3404 @lisp | |
3405 (setq scroll-step 1) | |
3406 @end lisp | |
3407 | |
3408 Starting with XEmacs-20.3 you can also change this with Customize. | |
3409 Select from the @code{Options} menu | |
3410 @code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...} or type | |
3411 @kbd{M-x customize @key{RET} windows @key{RET}}. | |
3412 | |
3413 @node Q3.5.6, Q3.5.7, Q3.5.5, Customization | |
3414 @unnumberedsubsec Q3.5.6: How to map @kbd{Help} key alone on Sun type4 keyboard? | |
3415 | |
3416 The following works in GNU Emacs 19: | |
3417 | |
3418 @lisp | |
3419 (global-set-key [help] 'help-command);; Help | |
3420 @end lisp | |
3421 | |
3422 The following works in XEmacs with the addition of shift: | |
3423 | |
3424 @lisp | |
3425 (global-set-key [(shift help)] 'help-command);; Help | |
3426 @end lisp | |
3427 | |
3428 But it doesn't work alone. This is in the file @file{PROBLEMS} which | |
3429 should have come with your XEmacs installation: @emph{Emacs ignores the | |
3430 @kbd{help} key when running OLWM}. | |
3431 | |
3432 OLWM grabs the @kbd{help} key, and retransmits it to the appropriate | |
3433 client using | |
3434 @iftex | |
3435 @* | |
3436 @end iftex | |
3437 @code{XSendEvent}. Allowing Emacs to react to synthetic | |
3438 events is a security hole, so this is turned off by default. You can | |
3439 enable it by setting the variable @code{x-allow-sendevents} to t. You | |
3440 can also cause fix this by telling OLWM to not grab the help key, with | |
3441 the null binding @code{OpenWindows.KeyboardCommand.Help:}. | |
3442 | |
3443 @node Q3.5.7, Q3.5.8, Q3.5.6, Customization | |
3444 @unnumberedsubsec Q3.5.7: How can you type in special characters in XEmacs? | |
3445 @c Changed | |
3446 One way is to use the package @code{x-compose}. Then you can use | |
3447 sequences like @kbd{Compose " a} to get ä, etc. | |
3448 | |
3449 Another way is to use the @code{iso-insert} package. Then you can use | |
3450 sequences like @kbd{C-x 8 " a} to get ä, etc. | |
3451 | |
3452 @email{glynn@@sensei.co.uk, Glynn Clements} writes: | |
3453 | |
3454 @quotation | |
3455 It depends upon your X server. | |
3456 | |
3457 Generally, the simplest way is to define a key as Multi_key with | |
3458 xmodmap, e.g. | |
3459 @c hey, show some respect, willya -- there's xkeycaps, isn't there? -- | |
3460 @c chr ;) | |
3461 @example | |
3462 xmodmap -e 'keycode 0xff20 = Multi_key' | |
3463 @end example | |
3464 | |
3465 You will need to pick an appropriate keycode. Use xev to find out the | |
3466 keycodes for each key. | |
3467 | |
3468 [NB: On a `Windows' keyboard, recent versions of XFree86 automatically | |
3469 define the right `Windows' key as Multi_key'.] | |
3470 | |
3471 Once you have Multi_key defined, you can use e.g. | |
3472 @example | |
3473 Multi a ' => á | |
3474 Multi e " => ë | |
3475 Multi c , => ç | |
3476 @end example | |
3477 | |
3478 etc. | |
3479 | |
3480 Also, recent versions of XFree86 define various AltGr-<key> | |
3481 combinations as dead keys, i.e. | |
3482 @example | |
3483 AltGr [ => dead_diaeresis | |
3484 AltGr ] => dead_tilde | |
3485 AltGr ; => dead_acute | |
3486 @end example | |
3487 etc. | |
3488 | |
3489 Running @samp{xmodmap -pk} will list all of the defined keysyms. | |
3490 @end quotation | |
3491 | |
3492 For the related problem of @emph{displaying} non-ASCII characters in a | |
3493 non-Mule XEmacs, @xref{Q3.2.7}. | |
3494 | |
3495 @node Q3.5.8, Q3.5.9, Q3.5.7, Customization | |
3496 @unnumberedsubsec Q3.5.8: [This question intentionally left blank] | |
3497 | |
3498 Obsolete question, left blank to avoid renumbering. | |
3499 | |
3500 @node Q3.5.9, Q3.5.10, Q3.5.8, Customization | |
3501 @unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward? | |
3502 | |
3503 With XEmacs-20.2 use the @code{delbs} package: | |
3504 | |
3505 @lisp | |
3506 (require 'delbs) | |
3507 @end lisp | |
3508 | |
3509 This will give you the functions @code{delbs-enable-delete-forward} to | |
3510 set things up, and @code{delbs-disable-delete-forward} to revert to | |
3511 ``normal'' behavior. Note that @code{delbackspace} package is obsolete. | |
3512 | |
3513 Starting with XEmacs-20.3 better solution is to set variable | |
3514 @code{delete-key-deletes-forward} to t. You can also change this with | |
3515 Customize. Select from the @code{Options} menu | |
3516 @code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or | |
3517 type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. | |
3518 | |
3519 Also see @ref{Q3.5.4}. | |
3520 | |
3521 @node Q3.5.10, Q3.5.11, Q3.5.9, Customization | |
3522 @unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys? | |
3523 | |
3524 Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the | |
3525 effect of being able to press and release Shift and have the next | |
3526 character typed come out in upper case. This will affect all the other | |
3527 modifier keys like Control and Meta as well. | |
3528 | |
3529 @email{ben@@xemacs.org, Ben Wing} writes: | |
3530 | |
3531 @quotation | |
3532 One thing about the sticky modifiers is that if you move the mouse out | |
3533 of the frame and back in, it cancels all currently ``stuck'' modifiers. | |
3534 @end quotation | |
3535 | |
3536 @node Q3.5.11, Q3.6.1, Q3.5.10, Customization | |
3537 @unnumberedsubsec Q3.5.11: How do I map the arrow keys? | |
3538 @c New | |
3539 Say you want to map @kbd{C-@key{right}} to forward-word: | |
3540 | |
3541 @email{sds@@usa.net, Sam Steingold} writes: | |
3542 | |
3543 @quotation | |
3544 @lisp | |
3545 ; both XEmacs and Emacs | |
3546 (define-key global-map [(control right)] 'forward-word) | |
3547 @end lisp | |
3548 or | |
3549 @lisp | |
3550 ; Emacs only | |
3551 (define-key global-map [C-right] 'forward-word) | |
3552 @end lisp | |
3553 or | |
3554 @lisp | |
3555 ; ver > 20, both | |
3556 (define-key global-map (kbd "C-<right>") 'forward-word) | |
3557 @end lisp | |
3558 @end quotation | |
3559 | |
3560 | |
3561 | |
3562 @node Q3.6.1, Q3.6.2, Q3.5.11, Customization | |
3563 @unnumberedsec 3.6: The Cursor | 4476 @unnumberedsec 3.6: The Cursor |
4477 | |
4478 @node Q3.6.1, Q3.6.2, Q3.5.4, Display Subsystems | |
3564 @unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker? | 4479 @unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicker? |
3565 | 4480 |
3566 I'd like to have the bar cursor a little thicker, as I tend to "lose" it | 4481 I'd like to have the bar cursor a little thicker, as I tend to "lose" it |
3567 often. | 4482 often. |
3568 | 4483 |
3587 | 4502 |
3588 @example | 4503 @example |
3589 Emacs*cursorColor: Red | 4504 Emacs*cursorColor: Red |
3590 @end example | 4505 @end example |
3591 | 4506 |
3592 @node Q3.6.2, Q3.6.3, Q3.6.1, Customization | 4507 @node Q3.6.2, Q3.6.3, Q3.6.1, Display Subsystems |
3593 @unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor? | 4508 @unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor? |
3594 | 4509 |
3595 @lisp | 4510 @lisp |
3596 (setq bar-cursor nil) | 4511 (setq bar-cursor nil) |
3597 @end lisp | 4512 @end lisp |
3599 Starting with XEmacs 20.3 you can also change this with Customize. | 4514 Starting with XEmacs 20.3 you can also change this with Customize. |
3600 Select from the @code{Options} menu | 4515 Select from the @code{Options} menu |
3601 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type | 4516 @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type |
3602 @kbd{M-x customize @key{RET} display @key{RET}}. | 4517 @kbd{M-x customize @key{RET} display @key{RET}}. |
3603 | 4518 |
3604 @node Q3.6.3, Q3.7.1, Q3.6.2, Customization | 4519 @node Q3.6.3, Q3.7.1, Q3.6.2, Display Subsystems |
3605 @unnumberedsubsec Q3.6.3: Can I make the cursor blink? | 4520 @unnumberedsubsec Q3.6.3: Can I make the cursor blink? |
3606 | 4521 |
3607 Yes, like this: | 4522 Yes, like this: |
3608 | 4523 |
3609 @lisp | 4524 @lisp |
3610 (blink-cursor-mode) | 4525 (blink-cursor-mode) |
3611 @end lisp | 4526 @end lisp |
3612 | 4527 |
3613 This function toggles between a steady cursor and a blinking cursor. | 4528 This function toggles between a steady cursor and a blinking cursor. |
3614 You may also set this mode from the menu bar by selecting @samp{Options | 4529 You may also set this mode from the menu bar by selecting |
3615 => Frame Appearance => Blinking Cursor}. Remember to save options. | 4530 @samp{Options->Display->Blinking Cursor}. Remember to save options. |
3616 | 4531 |
3617 @node Q3.7.1, Q3.7.2, Q3.6.3, Customization | 4532 @unnumberedsec 3.7: Text Selections |
3618 @unnumberedsec 3.7: The Mouse and Highlighting | 4533 |
3619 @unnumberedsubsec Q3.7.1: How can I turn off Mouse pasting? | 4534 @node Q3.7.1, Q3.7.2, Q3.6.3, Display Subsystems |
3620 | 4535 @unnumberedsubsec Q3.7.1: How do I select a rectangular region? |
3621 I keep hitting the middle mouse button by accident and getting stuff | |
3622 pasted into my buffer so how can I turn this off? | |
3623 | |
3624 Here is an alternative binding, whereby the middle mouse button selects | |
3625 (but does not cut) the expression under the mouse. Clicking middle on a | |
3626 left or right paren will select to the matching one. Note that you can | |
3627 use @code{define-key} or @code{global-set-key}. | |
3628 | |
3629 @lisp | |
3630 (defun mouse-set-point-and-select (event) | |
3631 "Sets the point at the mouse location, then marks following form" | |
3632 (interactive "@@e") | |
3633 (mouse-set-point event) | |
3634 (mark-sexp 1)) | |
3635 (define-key global-map [button2] 'mouse-set-point-and-select) | |
3636 @end lisp | |
3637 | |
3638 @node Q3.7.2, Q3.7.3, Q3.7.1, Customization | |
3639 @unnumberedsubsec Q3.7.2: How do I set control/meta/etc modifiers on mouse buttons? | |
3640 | |
3641 Use, for instance, @code{[(meta button1)]}. For example, here is a common | |
3642 setting for Common Lisp programmers who use the bundled @code{ilisp} | |
3643 package, whereby meta-button1 on a function name will find the file where | |
3644 the function name was defined, and put you at that location in the source | |
3645 file. | |
3646 | |
3647 [Inside a function that gets called by the lisp-mode-hook and | |
3648 ilisp-mode-hook] | |
3649 | |
3650 @lisp | |
3651 (local-set-key [(meta button1)] 'edit-definitions-lisp) | |
3652 @end lisp | |
3653 | |
3654 @node Q3.7.3, Q3.7.4, Q3.7.2, Customization | |
3655 @unnumberedsubsec Q3.7.3: Clicking the left button does not do anything in buffer list. | |
3656 | |
3657 I do @kbd{C-x C-b} to get a list of buffers and the entries get | |
3658 highlighted when I move the mouse over them but clicking the left mouse | |
3659 does not do anything. | |
3660 | |
3661 Use the middle mouse button. | |
3662 | |
3663 @node Q3.7.4, Q3.7.5, Q3.7.3, Customization | |
3664 @unnumberedsubsec Q3.7.4: How can I get a list of buffers when I hit mouse button 3? | |
3665 | |
3666 The following code will replace the default popup on button3: | |
3667 | |
3668 @lisp | |
3669 (global-set-key [button3] 'popup-buffer-menu) | |
3670 @end lisp | |
3671 | |
3672 @node Q3.7.5, Q3.7.6, Q3.7.4, Customization | |
3673 @unnumberedsubsec Q3.7.5: Why does cut-and-paste not work between XEmacs and a cmdtool? | |
3674 | |
3675 We don't know. It's a bug. There does seem to be a work-around, | |
3676 however. Try running xclipboard first. It appears to fix the problem | |
3677 even if you exit it. (This should be mostly fixed in 19.13, but we | |
3678 haven't yet verified that). | |
3679 | |
3680 @node Q3.7.6, Q3.7.7, Q3.7.5, Customization | |
3681 @unnumberedsubsec Q3.7.6: How I can set XEmacs up so that it pastes where the text cursor is? | |
3682 | |
3683 By default XEmacs pastes X selections where the mouse pointer is. How | |
3684 do I disable this? | |
3685 | |
3686 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank | |
3687 @key{RET}}. | |
3688 | |
3689 To get XEmacs to paste at the text cursor, add this your @file{init.el}/@file{.emacs}: | |
3690 | |
3691 @lisp | |
3692 (setq mouse-yank-at-point t) | |
3693 @end lisp | |
3694 | |
3695 Starting with XEmacs-20.2 you can also change this with Customize. | |
3696 Select from the @code{Options} menu | |
3697 @code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type | |
3698 @kbd{M-x customize @key{RET} mouse @key{RET}}. | |
3699 | |
3700 @node Q3.7.7, Q3.7.8, Q3.7.6, Customization | |
3701 @unnumberedsubsec Q3.7.7: How do I select a rectangular region? | |
3702 | 4536 |
3703 Just select the region normally, then use the rectangle commands (e.g. | 4537 Just select the region normally, then use the rectangle commands (e.g. |
3704 @code{kill-rectangle} on it. The region does not highlight as a | 4538 @code{kill-rectangle} on it. The region does not highlight as a |
3705 rectangle, but the commands work just fine. | 4539 rectangle, but the commands work just fine. |
3706 | 4540 |
3725 mouse-track-do-rectangle: (event) | 4559 mouse-track-do-rectangle: (event) |
3726 -- an interactive compiled Lisp function. | 4560 -- an interactive compiled Lisp function. |
3727 Like `mouse-track' but selects rectangles instead of regions. | 4561 Like `mouse-track' but selects rectangles instead of regions. |
3728 @end example | 4562 @end example |
3729 | 4563 |
3730 @node Q3.7.8, Q3.8.1, Q3.7.7, Customization | 4564 @node Q3.7.2, Q3.7.3, Q3.7.1, Display Subsystems |
3731 @unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long? | 4565 @unnumberedsubsec Q3.7.2: How can I turn off or change highlighted selections? |
3732 | |
3733 It actually doesn't. It leaves the region visible for a second so that | |
3734 you can see what area is being yanked. If you start working, though, it | |
3735 will immediately complete its operation. In other words, it will only | |
3736 delay for a second if you let it. | |
3737 | |
3738 @node Q3.8.1, Q3.8.2, Q3.7.8, Customization | |
3739 @unnumberedsec 3.8: The Menubar and Toolbar | |
3740 @unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)? | |
3741 | |
3742 @c If you are running XEmacs 19.13 or earlier, add this command to your | |
3743 @c @file{init.el}/@file{.emacs}. | |
3744 @c | |
3745 @c @lisp | |
3746 @c (set-menubar nil) | |
3747 @c @end lisp | |
3748 @c | |
3749 @c Starting with XEmacs 19.14 the preferred method is: | |
3750 @c | |
3751 @lisp | |
3752 (set-specifier menubar-visible-p nil) | |
3753 @end lisp | |
3754 | |
3755 @node Q3.8.2, Q3.8.3, Q3.8.1, Customization | |
3756 @unnumberedsubsec Q3.8.2: Can I customize the basic menubar? | |
3757 | |
3758 For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}: | |
3759 | |
3760 @lisp | |
3761 (load "big-menubar") | |
3762 @end lisp | |
3763 | |
3764 If you'd like to write your own, this file provides as good a set of | |
3765 examples as any to start from. The file is located in edit-utils | |
3766 package. | |
3767 | |
3768 @node Q3.8.3, Q3.8.4, Q3.8.2, Customization | |
3769 @unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}? | |
3770 | |
3771 Add the following to your @file{init.el}/@file{.emacs} (suit to fit): | |
3772 | |
3773 @lisp | |
3774 (setq buffers-menu-max-size 20) | |
3775 @end lisp | |
3776 | |
3777 For no limit, use an argument of @samp{nil}. | |
3778 | |
3779 Starting with XEmacs-20.3 you can also change this with Customize. | |
3780 Select from the @code{Options} menu | |
3781 @code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or | |
3782 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}. | |
3783 | |
3784 @node Q3.8.4, Q3.8.5, Q3.8.3, Customization | |
3785 @unnumberedsubsec Q3.8.4: Resources like @code{Emacs*menubar*font} are not working? | |
3786 | |
3787 I am trying to use a resource like @code{Emacs*menubar*font} to set the | |
3788 font of the menubar but it's not working. | |
3789 | |
3790 In Motif, the use of @samp{font} resources is obsoleted in order to | |
3791 support internationalization. If you are using the real Motif menubar, | |
3792 this resource is not recognized at all; you have to say: | |
3793 | |
3794 @example | |
3795 Emacs*menubar*fontList: FONT | |
3796 @end example | |
3797 | |
3798 If you are using the Lucid menubar, for backward compatibility with | |
3799 existing user configurations, the @samp{font} resource is recognized. | |
3800 Since this is not supported by Motif itself, the code is a kludge and | |
3801 the @samp{font} resource will be recognized only if the @samp{fontList} | |
3802 resource resource is unset. This means that the resource | |
3803 | |
3804 @example | |
3805 *fontList: FONT | |
3806 @end example | |
3807 | |
3808 will override | |
3809 | |
3810 @example | |
3811 Emacs*menubar*font: FONT | |
3812 @end example | |
3813 | |
3814 even though the latter is more specific. | |
3815 | |
3816 In non-Motif configurations using @samp{--with-mule} and | |
3817 @samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet} | |
3818 resource @emph{instead of} the @code{font} resource. The backward | |
3819 compatibility kludge was never implemented for non-Motif builds. | |
3820 Example: | |
3821 | |
3822 @example | |
3823 *fontSet: FONT | |
3824 @end example | |
3825 | |
3826 @node Q3.8.5, Q3.9.1, Q3.8.4, Customization | |
3827 @unnumberedsubsec Q3.8.5: How can I bind a key to a function to toggle the toolbar? | |
3828 | |
3829 Try something like: | |
3830 | |
3831 @lisp | |
3832 (defun my-toggle-toolbar () | |
3833 (interactive) | |
3834 (set-specifier default-toolbar-visible-p | |
3835 (not (specifier-instance default-toolbar-visible-p)))) | |
3836 (global-set-key "\C-xT" 'my-toggle-toolbar) | |
3837 @end lisp | |
3838 | |
3839 There are redisplay bugs in 19.14 that may make the preceding result in | |
3840 a messed-up display, especially for frames with multiple windows. You | |
3841 may need to resize the frame before XEmacs completely realizes the | |
3842 toolbar is really gone. | |
3843 | |
3844 Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct | |
3845 code. | |
3846 | |
3847 @node Q3.9.1, Q3.9.2, Q3.8.5, Customization | |
3848 @unnumberedsec 3.9: Scrollbars | |
3849 @unnumberedsubsec Q3.9.1: How can I disable the scrollbar? | |
3850 | |
3851 To disable them for all frames, add the following line to | |
3852 your @file{.Xresources}: | |
3853 | |
3854 @example | |
3855 Emacs.scrollBarWidth: 0 | |
3856 @end example | |
3857 | |
3858 Or select from the @code{Options} menu @code{Frame Appearance->Scrollbars}. | |
3859 Remember to save options. | |
3860 | |
3861 To turn the scrollbar off on a per-frame basis, use the following | |
3862 function: | |
3863 | |
3864 @lisp | |
3865 (set-specifier scrollbar-width 0 (selected-frame)) | |
3866 @end lisp | |
3867 | |
3868 You can actually turn the scrollbars on at any level you want by | |
3869 substituting for (selected-frame) in the above command. For example, to | |
3870 turn the scrollbars off only in a single buffer: | |
3871 | |
3872 @lisp | |
3873 (set-specifier scrollbar-width 0 (current-buffer)) | |
3874 @end lisp | |
3875 @c | |
3876 @c In XEmacs versions prior to 19.14, you had to use the hairier construct: | |
3877 @c | |
3878 @c @lisp | |
3879 @c (set-specifier scrollbar-width (cons (selected-frame) 0)) | |
3880 @c @end lisp | |
3881 | |
3882 @node Q3.9.2, Q3.9.3, Q3.9.1, Customization | |
3883 @unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors? | |
3884 | |
3885 Here's a recap of how to use resources to change your scrollbar colors: | |
3886 | |
3887 @example | |
3888 ! Motif scrollbars | |
3889 | |
3890 Emacs*XmScrollBar.Background: skyblue | |
3891 Emacs*XmScrollBar.troughColor: lightgray | |
3892 | |
3893 ! Athena scrollbars | |
3894 | |
3895 Emacs*Scrollbar.Foreground: skyblue | |
3896 Emacs*Scrollbar.Background: lightgray | |
3897 @end example | |
3898 | |
3899 Note the capitalization of @code{Scrollbar} for the Athena widget. | |
3900 | |
3901 @node Q3.9.3, Q3.9.4, Q3.9.2, Customization | |
3902 @unnumberedsubsec Q3.9.3: Moving the scrollbar can move the point; can I disable this? | |
3903 | |
3904 When I move the scrollbar in an XEmacs window, it moves the point as | |
3905 well, which should not be the default behavior. Is this a bug or a | |
3906 feature? Can I disable it? | |
3907 | |
3908 The current behavior is a feature, not a bug. Point remains at the same | |
3909 buffer position as long as that position does not scroll off the screen. | |
3910 In that event, point will end up in either the upper-left or lower-left | |
3911 hand corner. | |
3912 | |
3913 This cannot be changed. | |
3914 | |
3915 @node Q3.9.4, Q3.10.1, Q3.9.3, Customization | |
3916 @unnumberedsubsec Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes? | |
3917 | |
3918 Do @code{(setq truncate-lines t)} in the mode-hooks for any modes | |
3919 in which you want lines truncated. | |
3920 | |
3921 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars | |
3922 will never appear. Otherwise, they will appear only if the value of | |
3923 @code{scrollbar-height} for that buffer/window/etc. is non-zero. If you | |
3924 do | |
3925 | |
3926 @lisp | |
3927 (set-specifier scrollbar-height 0) | |
3928 @end lisp | |
3929 | |
3930 then horizontal scrollbars will not appear in truncated buffers unless | |
3931 the package specifically asked for them. | |
3932 | |
3933 @node Q3.10.1, Q3.10.2, Q3.9.4, Customization | |
3934 @unnumberedsec 3.10: Text Selections | |
3935 @unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections? | |
3936 | 4566 |
3937 The @code{zmacs} mode allows for what some might call gratuitous | 4567 The @code{zmacs} mode allows for what some might call gratuitous |
3938 highlighting for selected regions (either by setting mark or by using | 4568 highlighting for selected regions (either by setting mark or by using |
3939 the mouse). This is the default behavior. To turn off, add the | 4569 the mouse). This is the default behavior. To turn off, add the |
3940 following line to your @file{init.el}/@file{.emacs} file: | 4570 following line to your @file{init.el} file: |
3941 | 4571 |
3942 @lisp | 4572 @lisp |
3943 (setq zmacs-regions nil) | 4573 (setq zmacs-regions nil) |
3944 @end lisp | 4574 @end lisp |
3945 | 4575 |
3946 Starting with XEmacs-20.2 you can also change this with Customize. Select | 4576 You can also change this with Customize. Select from the |
3947 from the @code{Options} menu @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs | 4577 @code{Options} menu |
3948 Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. | 4578 @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions} |
3949 | 4579 or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. |
3950 To change the face for selection, look at @code{Options->Customize} on | 4580 |
3951 the menubar. | 4581 To change the face for selection, look at @code{Options->Advanced (Customize)} |
3952 | 4582 on the menubar. |
3953 @node Q3.10.2, Q3.10.3, Q3.10.1, Customization | 4583 |
3954 @unnumberedsubsec Q3.10.2: How do I get that typing on an active region removes it? | 4584 @node Q3.7.3, Q3.7.4, Q3.7.2, Display Subsystems |
4585 @unnumberedsubsec Q3.7.3: How do I get that typing on an active region removes it? | |
3955 | 4586 |
3956 I want to change things so that if I select some text and start typing, | 4587 I want to change things so that if I select some text and start typing, |
3957 the typed text replaces the selected text, similar to Motif. | 4588 the typed text replaces the selected text, similar to Motif. |
3958 | 4589 |
3959 You want to use something called @dfn{pending delete}. Pending delete | 4590 You want to use something called @dfn{pending delete}. Pending delete |
3961 and you press a key to replace the selected region by the key you typed. | 4592 and you press a key to replace the selected region by the key you typed. |
3962 Usually backspace kills the selected region. | 4593 Usually backspace kills the selected region. |
3963 | 4594 |
3964 To get this behavior, ensure that you have the @file{pc} package | 4595 To get this behavior, ensure that you have the @file{pc} package |
3965 installed, and add the following lines to your | 4596 installed, and add the following lines to your |
3966 @file{init.el}/@file{.emacs}: | 4597 @file{init.el}: |
3967 | 4598 |
3968 @lisp | 4599 @lisp |
3969 (cond | 4600 (cond |
3970 ((fboundp 'turn-on-pending-delete) | 4601 ((fboundp 'turn-on-pending-delete) |
3971 (turn-on-pending-delete)) | 4602 (turn-on-pending-delete)) |
3975 | 4606 |
3976 Note that this will work with both Backspace and Delete. This code is a | 4607 Note that this will work with both Backspace and Delete. This code is a |
3977 tad more complicated than it has to be for XEmacs in order to make it | 4608 tad more complicated than it has to be for XEmacs in order to make it |
3978 more portable. | 4609 more portable. |
3979 | 4610 |
3980 @node Q3.10.3, Q3.10.4, Q3.10.2, Customization | 4611 @node Q3.7.4, Q3.7.5, Q3.7.3, Display Subsystems |
3981 @unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch? | 4612 @unnumberedsubsec Q3.7.4: Can I turn off the highlight during isearch? |
3982 | 4613 |
3983 I do not like my text highlighted while I am doing isearch as I am not | 4614 I do not like my text highlighted while I am doing isearch as I am not |
3984 able to see what's underneath. How do I turn it off? | 4615 able to see what's underneath. How do I turn it off? |
3985 | 4616 |
3986 Put the following in your @file{init.el}/@file{.emacs}: | 4617 Put the following in your @file{init.el}: |
3987 | 4618 |
3988 @lisp | 4619 @lisp |
3989 (setq isearch-highlight nil) | 4620 (setq isearch-highlight nil) |
3990 @end lisp | 4621 @end lisp |
3991 | 4622 |
3994 | 4625 |
3995 Note also that isearch-highlight affects query-replace and ispell. | 4626 Note also that isearch-highlight affects query-replace and ispell. |
3996 Instead of disabling isearch-highlight you may find that a better | 4627 Instead of disabling isearch-highlight you may find that a better |
3997 solution consists of customizing the @code{isearch} face. | 4628 solution consists of customizing the @code{isearch} face. |
3998 | 4629 |
3999 @node Q3.10.4, Q3.10.5, Q3.10.3, Customization | 4630 @node Q3.7.5, Q3.7.6, Q3.7.4, Display Subsystems |
4000 @unnumberedsubsec Q3.10.4: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? | 4631 @unnumberedsubsec Q3.7.5: How do I turn off highlighting after @kbd{C-x C-p} (mark-page)? |
4001 | 4632 |
4002 Put this in your @code{.emacs}: | 4633 Put this in your @code{.emacs}: |
4003 | 4634 |
4004 @lisp | 4635 @lisp |
4005 (setq zmacs-regions nil) | 4636 (setq zmacs-regions nil) |
4006 @end lisp | 4637 @end lisp |
4007 | 4638 |
4008 @strong{Warning: This command turns off all region highlighting.} | 4639 @strong{Warning: This command turns off all region highlighting.} |
4009 | 4640 |
4010 Also see @ref{Q3.10.1}. | 4641 @xref{Q3.7.2, How can I turn off or change highlighted selections?}. |
4011 | 4642 |
4012 @node Q3.10.5, Q3.10.6, Q3.10.4, Customization | 4643 @node Q3.7.6, Q3.7.7, Q3.7.5, Display Subsystems |
4013 @unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling. | 4644 @unnumberedsubsec Q3.7.6: The region disappears when I hit the end of buffer while scrolling. |
4014 | 4645 |
4015 This has been fixed by default starting with XEmacs-20.3. | 4646 This has been fixed by default starting with XEmacs-20.3. |
4016 | 4647 |
4017 With older versions you can turn this feature (if it indeed is a feature) | 4648 With older versions you can turn this feature (if it indeed is a feature) |
4018 off like this: | 4649 off like this: |
4038 @end lisp | 4669 @end lisp |
4039 | 4670 |
4040 Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this | 4671 Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in deriving this |
4041 answer. | 4672 answer. |
4042 | 4673 |
4043 @node Q3.10.6, , Q3.10.5, Customization | 4674 @node Q3.7.7, Q3.7.8, Q3.7.6, Display Subsystems |
4044 @unnumberedsubsec Q3.10.6: Why is killing so slow? | 4675 @unnumberedsubsec Q3.7.7: Why is killing so slow? |
4045 | 4676 |
4046 This actually is an X Windows question, although you'll notice it with | 4677 This actually is an X Windows question, although you'll notice it with |
4047 keyboard operations as well as while using the GUI. Basically, there | 4678 keyboard operations as well as while using the GUI. Basically, there |
4048 are four ways to communicate interprogram via the X server: | 4679 are four ways to communicate interprogram via the X server: |
4049 | 4680 |
4105 @code{x-selection-strict-motif-ownership} to nil, but this means you will | 4736 @code{x-selection-strict-motif-ownership} to nil, but this means you will |
4106 only intermittently be able to paste XEmacs kills to Motif applications. | 4737 only intermittently be able to paste XEmacs kills to Motif applications. |
4107 | 4738 |
4108 Thanks to Jeff Mincy and Glynn Clements for corrections. | 4739 Thanks to Jeff Mincy and Glynn Clements for corrections. |
4109 | 4740 |
4110 @node Subsystems, Miscellaneous, Customization, Top | 4741 @node Q3.7.8, Q3.8.1, Q3.7.7, Display Subsystems |
4111 @unnumbered 4 Major Subsystems | 4742 @unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long? |
4112 | 4743 |
4113 This is part 4 of the XEmacs Frequently Asked Questions list. This | 4744 It actually doesn't. It leaves the region visible for a second so that |
4114 section is devoted to major XEmacs subsystems. | 4745 you can see what area is being yanked. If you start working, though, it |
4115 | 4746 will immediately complete its operation. In other words, it will only |
4116 @menu | 4747 delay for a second if you let it. |
4117 Reading Mail with VM: | 4748 |
4118 * Q4.0.1:: How do I set up VM to retrieve remote mail using POP? | 4749 @unnumberedsec 3.8: Buffers, Text Editing |
4119 * Q4.0.2:: How do I get VM to filter mail for me? | 4750 |
4120 * Q4.0.3:: How can I get VM to automatically check for new mail? | 4751 @node Q3.8.1, Q3.8.2, Q3.7.8, Display Subsystems |
4121 * Q4.0.4:: [This question intentionally left blank] | 4752 @unnumberedsubsec Q3.8.1: Can I have the end of the buffer delimited in some way? |
4122 * Q4.0.5:: How do I get my outgoing mail archived? | |
4123 * Q4.0.6:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? | |
4124 * Q4.0.7:: Is there a mailing list or FAQ for VM? | |
4125 * Q4.0.8:: Remote mail reading with VM. | |
4126 * Q4.0.9:: rmail or VM gets an error incorporating new mail. | |
4127 * Q4.0.10:: How do I make VM stay in a single frame? | |
4128 * Q4.0.11:: How do I make VM or mh-e display graphical smilies? | |
4129 * Q4.0.12:: Customization of VM not covered in the manual or here. | |
4130 | |
4131 Web browsing with W3: | |
4132 * Q4.1.1:: What is W3? | |
4133 * Q4.1.2:: How do I run W3 from behind a firewall? | |
4134 * Q4.1.3:: Is it true that W3 supports style sheets and tables? | |
4135 | |
4136 Reading Netnews and Mail with Gnus: | |
4137 * Q4.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus,argh! | |
4138 * Q4.2.2:: [This question intentionally left blank] | |
4139 * Q4.2.3:: How do I make Gnus stay within a single frame? | |
4140 * Q4.2.4:: How do I customize the From: line? | |
4141 | |
4142 Other Mail & News: | |
4143 * Q4.3.1:: How can I read and/or compose MIME messages? | |
4144 * Q4.3.2:: What is TM and where do I get it? | |
4145 * Q4.3.3:: Why isn't this @code{movemail} program working? | |
4146 * Q4.3.4:: Movemail is also distributed by Netscape? Can that cause problems? | |
4147 * Q4.3.5:: Where do I find pstogif (required by tm)? | |
4148 | |
4149 Sparcworks, EOS, and WorkShop: | |
4150 * Q4.4.1:: What is SPARCworks, EOS, and WorkShop | |
4151 * Q4.4.2:: How do I start the Sun Workshop support in XEmacs 21? | |
4152 | |
4153 Energize: | |
4154 * Q4.5.1:: What is/was Energize? | |
4155 | |
4156 Infodock: | |
4157 * Q4.6.1:: What is Infodock? | |
4158 | |
4159 Other Unbundled Packages: | |
4160 * Q4.7.1:: What is AUC TeX? Where do you get it? | |
4161 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? | |
4162 * Q4.7.3:: [This question intentionally left blank] | |
4163 * Q4.7.4:: Problems installing AUC TeX | |
4164 * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? | |
4165 * Q4.7.6:: Is there a MatLab mode? | |
4166 * Q4.7.7:: Can I edit files on other hosts? | |
4167 @end menu | |
4168 | |
4169 @node Q4.0.1, Q4.0.2, Subsystems, Subsystems | |
4170 @unnumberedsec 4.0: Reading Mail with VM | |
4171 @unnumberedsubsec Q4.0.1: How do I set up VM to retrieve mail from a remote site using POP? | |
4172 | |
4173 Use @code{vm-spool-files}, like this for example: | |
4174 | |
4175 @lisp | |
4176 (setq vm-spool-files '("/var/spool/mail/wing" | |
4177 "netcom23.netcom.com:110:pass:wing:MYPASS")) | |
4178 @end lisp | |
4179 | |
4180 Of course substitute your actual password for MYPASS. | |
4181 | |
4182 @node Q4.0.2, Q4.0.3, Q4.0.1, Subsystems | |
4183 @unnumberedsubsec Q4.0.2: How do I get VM to filter mail for me? | |
4184 | |
4185 One possibility is to use procmail to split your mail before it gets to | |
4186 VM. I prefer this personally, since there are many strange and | |
4187 wonderful things one can do with procmail. Procmail may be found at | |
4188 @uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}. | |
4189 | |
4190 Also see the Mail Filtering FAQ at: | |
4191 @iftex | |
4192 @* | |
4193 @end iftex | |
4194 @uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}. | |
4195 @c Link above, | |
4196 @c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html> | |
4197 @c was dead. | |
4198 | |
4199 @node Q4.0.3, Q4.0.4, Q4.0.2, Subsystems | |
4200 @unnumberedsubsec Q4.0.3: How can I get VM to automatically check for new mail? | |
4201 | |
4202 @email{turner@@lanl.gov, John Turner} writes: | |
4203 | |
4204 @quotation | |
4205 Use the following: | |
4206 | |
4207 @lisp | |
4208 (setq vm-auto-get-new-mail 60) | |
4209 @end lisp | |
4210 @end quotation | |
4211 | |
4212 @node Q4.0.4, Q4.0.5, Q4.0.3, Subsystems | |
4213 @unnumberedsubsec Q4.0.4: [This question intentionally left blank] | |
4214 | |
4215 Obsolete question, left blank to avoid renumbering. | |
4216 | |
4217 @node Q4.0.5, Q4.0.6, Q4.0.4, Subsystems | |
4218 @unnumberedsubsec Q4.0.5: How do I get my outgoing mail archived? | |
4219 | |
4220 @lisp | |
4221 (setq mail-archive-file-name "~/outbox") | |
4222 @end lisp | |
4223 | |
4224 @node Q4.0.6, Q4.0.7, Q4.0.5, Subsystems | |
4225 @unnumberedsubsec Q4.0.6: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? | |
4226 | |
4227 Set @code{vm-reply-ignored-addresses} to a list, like | |
4228 | |
4229 @lisp | |
4230 (setq vm-reply-ignored-addresses | |
4231 '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com" | |
4232 "wing@@netcom.com" "wing@@xemacs.org")) | |
4233 @end lisp | |
4234 | |
4235 Note that each string is a regular expression. | |
4236 | |
4237 @node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems | |
4238 @unnumberedsubsec Q4.0.7: Is there a mailing list or FAQ for VM? | |
4239 | |
4240 A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}. | |
4241 | |
4242 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug. | |
4243 | |
4244 @node Q4.0.8, Q4.0.9, Q4.0.7, Subsystems | |
4245 @unnumberedsubsec Q4.0.8: Remote mail reading with VM. | |
4246 | |
4247 My mailbox lives at the office on a big honkin server. My regular INBOX | |
4248 lives on my honkin desktop machine. I now can PPP to the office from | |
4249 home which is far from honking... I'd like to be able to read mail at | |
4250 home without storing it here and I'd like to use xemacs and VM at | |
4251 home... Is there a recommended setup? | |
4252 | |
4253 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes: | |
4254 | |
4255 @quotation | |
4256 There are several ways to do this. | |
4257 | |
4258 @enumerate | |
4259 @item | |
4260 Set your display to your home machine and run dxpc or one of the other X | |
4261 compressors. | |
4262 | |
4263 @item | |
4264 NFS mount your desktop machine on your home machine and modify your pop | |
4265 command on your home machine to rsh to your desktop machine and actually | |
4266 do the pop get's. | |
4267 | |
4268 @item | |
4269 Run a POP server on your desktop machine as well and do a sort of two | |
4270 tiered POP get. | |
4271 @end enumerate | |
4272 @end quotation | |
4273 | |
4274 @email{wmperry@@monolith.spry.com, William Perry} adds: | |
4275 | |
4276 @quotation | |
4277 Or you could run a pop script periodically on your desktop machine, and | |
4278 just use ange-ftp or NFS to get to your mailbox. I used to do this all | |
4279 the time back at IU. | |
4280 @end quotation | |
4281 | |
4282 @node Q4.0.9, Q4.0.10, Q4.0.8, Subsystems | |
4283 @unnumberedsubsec Q4.0.9: rmail or VM gets an error incorporating new mail. | |
4284 | |
4285 Quoting the XEmacs PROBLEMS file: | |
4286 | |
4287 @quotation | |
4288 rmail and VM get new mail from @file{/usr/spool/mail/$USER} using a | |
4289 program called @code{movemail}. This program interlocks with | |
4290 @code{/bin/mail} using the protocol defined by @code{/bin/mail}. | |
4291 | |
4292 There are two different protocols in general use. One of them uses the | |
4293 @code{flock} system call. The other involves creating a lock file; | |
4294 @code{movemail} must be able to write in @file{/usr/spool/mail} in order | |
4295 to do this. You control which one is used by defining, or not defining, | |
4296 the macro @code{MAIL_USE_FLOCK} in @file{config.h} or the m- or s- file | |
4297 it includes. | |
4298 | |
4299 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR | |
4300 SYSTEM, YOU CAN LOSE MAIL!} | |
4301 | |
4302 If your system uses the lock file protocol, and fascist restrictions | |
4303 prevent ordinary users from writing the lock files in | |
4304 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a | |
4305 suitable group such as @samp{mail}. You can use these commands (as | |
4306 root): | |
4307 | |
4308 @example | |
4309 chgrp mail movemail | |
4310 chmod 2755 movemail | |
4311 @end example | |
4312 | |
4313 If your system uses the lock file protocol, and fascist restrictions | |
4314 prevent ordinary users from writing the lock files in | |
4315 @file{/usr/spool/mail}, you may need to make @code{movemail} setgid to a | |
4316 suitable group such as @code{mail}. To do this, use the following | |
4317 commands (as root) after doing the make install. | |
4318 | |
4319 @example | |
4320 chgrp mail movemail | |
4321 chmod 2755 movemail | |
4322 @end example | |
4323 | |
4324 Installation normally copies movemail from the build directory to an | |
4325 installation directory which is usually under @file{/usr/local/lib}. | |
4326 The installed copy of @code{movemail} is usually in the directory | |
4327 @file{/usr/local/lib/emacs/VERSION/TARGET}. You must change the group | |
4328 and mode of the installed copy; changing the group and mode of the build | |
4329 directory copy is ineffective. | |
4330 @end quotation | |
4331 | |
4332 @node Q4.0.10, Q4.0.11, Q4.0.9, Subsystems | |
4333 @unnumberedsubsec Q4.0.10: How do I make VM stay in a single frame? | |
4334 | |
4335 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes: | |
4336 | |
4337 @quotation | |
4338 @lisp | |
4339 ; Don't use multiple frames | |
4340 (setq vm-frame-per-composition nil) | |
4341 (setq vm-frame-per-folder nil) | |
4342 (setq vm-frame-per-edit nil) | |
4343 (setq vm-frame-per-summary nil) | |
4344 @end lisp | |
4345 @end quotation | |
4346 | |
4347 @node Q4.0.11, Q4.0.12, Q4.0.10, Subsystems | |
4348 @unnumberedsubsec Q4.0.11: How do I make VM or mh-e display graphical smilies? | |
4349 @c Changed June | |
4350 For mh-e use the following: | |
4351 | |
4352 @lisp | |
4353 (add-hook 'mh-show-mode-hook '(lambda () | |
4354 (smiley-region (point-min) | |
4355 (point-max)))) | |
4356 @end lisp | |
4357 | |
4358 @email{bill@@carpenter.ORG, WJCarpenter} writes: | |
4359 For VM use the following: | |
4360 @lisp | |
4361 (autoload 'smiley-region "smiley" nil t) | |
4362 (add-hook 'vm-select-message-hook | |
4363 '(lambda () | |
4364 (smiley-region (point-min) | |
4365 (point-max)))) | |
4366 @end lisp | |
4367 | |
4368 For tm use the following: | |
4369 @lisp | |
4370 (autoload 'smiley-buffer "smiley" nil t) | |
4371 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer) | |
4372 @end lisp | |
4373 | |
4374 @node Q4.0.12, Q4.1.1, Q4.0.11, Subsystems | |
4375 @unnumberedsubsec Q4.0.12: Customization of VM not covered in the manual, or here. | |
4376 | |
4377 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes: | |
4378 | |
4379 @quotation | |
4380 The meta-answer is to look into the file @file{vm-vars.el}, in the vm | |
4381 directory of the lisp library. | |
4382 | |
4383 @file{vm-vars.el} contains, initializes and carefully describes, with | |
4384 examples of usage, the plethora of user options that @emph{fully} | |
4385 control VM's behavior. | |
4386 | |
4387 Enter vm-vars, @code{forward-search} for toolbar, find the variables | |
4388 that control the toolbar placement, appearance, existence, copy to your | |
4389 @file{init.el}/@file{.emacs} or @file{.vm} and modify according to the | |
4390 detailed instructions. | |
4391 | |
4392 The above also applies to all the various features of VM: search for | |
4393 some keywords, maybe the first you conjure isn't appropriate, find the | |
4394 appropriate variables, copy and experiment. | |
4395 @end quotation | |
4396 | |
4397 @node Q4.1.1, Q4.1.2, Q4.0.12, Subsystems | |
4398 @unnumberedsec 4.1: Web browsing with W3 | |
4399 @unnumberedsubsec Q4.1.1: What is W3? | |
4400 | |
4401 W3 is an advanced graphical browser written in Emacs lisp that runs on | |
4402 XEmacs. It has full support for cascaded style sheets, and more... | |
4403 | |
4404 It has a home web page at | |
4405 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}. | |
4406 | |
4407 @node Q4.1.2, Q4.1.3, Q4.1.1, Subsystems | |
4408 @unnumberedsubsec Q4.1.2: How do I run W3 from behind a firewall? | |
4409 | |
4410 There is a long, well-written, detailed section in the W3 manual that | |
4411 describes how to do this. Look in the section entitled "Firewalls". | |
4412 | |
4413 @node Q4.1.3, Q4.2.1, Q4.1.2, Subsystems | |
4414 @unnumberedsubsec Q4.1.3: Is it true that W3 supports style sheets and tables? | |
4415 | |
4416 Yes, and much more. W3, as distributed with the latest XEmacs is a | |
4417 full-featured web browser. | |
4418 | |
4419 @node Q4.2.1, Q4.2.2, Q4.1.3, Subsystems | |
4420 @unnumberedsec 4.2: Reading Netnews and Mail with Gnus | |
4421 @unnumberedsubsec Q4.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! | |
4422 | |
4423 The Gnus numbering issues are not meant for mere mortals to know them. | |
4424 If you feel you @emph{must} enter the muddy waters of Gnus, visit the | |
4425 excellent FAQ, maintained by Justin Sheehy, at: | |
4426 | |
4427 @example | |
4428 @uref{http://www.ccs.neu.edu/software/contrib/gnus/} | |
4429 @end example | |
4430 | |
4431 See also Gnus home page | |
4432 @example | |
4433 @uref{http://www.gnus.org/} | |
4434 @end example | |
4435 | |
4436 @node Q4.2.2, Q4.2.3, Q4.2.1, Subsystems | |
4437 @unnumberedsubsec Q4.2.2: This question intentionally left blank. | |
4438 | |
4439 Obsolete question, left blank to avoid renumbering. | |
4440 | |
4441 @node Q4.2.3, Q4.2.4, Q4.2.2, Subsystems | |
4442 @unnumberedsubsec Q4.2.3: How do I make Gnus stay within a single frame? | |
4443 | |
4444 The toolbar code to start Gnus opens the new frame---and it's a feature | |
4445 rather than a bug. If you don't like it, but would still like to click | |
4446 on the seemly icon, use the following code: | |
4447 | |
4448 @lisp | |
4449 (defun toolbar-news () | |
4450 (gnus)) | |
4451 @end lisp | |
4452 | |
4453 It will redefine the callback function of the icon to just call | |
4454 @code{gnus}, without all the fancy frame stuff. | |
4455 | |
4456 @node Q4.2.4, Q4.3.1, Q4.2.3, Subsystems | |
4457 @unnumberedsubsec Q4.2.4: How do I customize the From: line? | |
4458 | |
4459 How do I change the @code{From:} line? I have set gnus-user-from-line | |
4460 to | |
4461 @example | |
4462 Gail Gurman <gail.gurman@@sybase.com> | |
4463 @end example | |
4464 @noindent , but XEmacs Gnus doesn't use | |
4465 it. Instead it uses | |
4466 @example | |
4467 Gail Mara Gurman @email{gailg@@deall} | |
4468 @end example | |
4469 @noindent and then complains | |
4470 that it's incorrect. Also, as you perhaps can see, my Message-ID is | |
4471 screwy. How can I change that? | |
4472 | |
4473 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes: | |
4474 | |
4475 @quotation | |
4476 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or | |
4477 @code{mail-host-address} to @samp{sybase.com}. | |
4478 @end quotation | |
4479 | |
4480 @node Q4.3.1, Q4.3.2, Q4.2.4, Subsystems | |
4481 @unnumberedsec 4.3: Other Mail & News | |
4482 @unnumberedsubsec Q4.3.1: How can I read and/or compose MIME messages? | |
4483 @c Changed June | |
4484 | |
4485 VM supports MIME natively. | |
4486 | |
4487 You probably want to use the Tools for MIME (tm). @xref{Q4.3.2}, for | |
4488 details. | |
4489 | |
4490 @email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at | |
4491 @iftex | |
4492 @* | |
4493 @end iftex | |
4494 @uref{http://bmrc.berkeley.edu/~trey/emacs/mime.html}. | |
4495 | |
4496 | |
4497 Another possibility is RMIME. You may find RMIME at | |
4498 @iftex | |
4499 @* | |
4500 @end iftex | |
4501 @uref{http://www.cinti.net/~rmoody/rmime/index.html}. | |
4502 | |
4503 | |
4504 @node Q4.3.2, Q4.3.3, Q4.3.1, Subsystems | |
4505 @unnumberedsubsec Q4.3.2: What is TM and where do I get it? | |
4506 | |
4507 TM stands for @dfn{Tools for MIME} and not Tiny MIME. TM integrates | |
4508 with all major XEmacs packages like Gnus (all flavors), VM, MH-E, and | |
4509 mailcrypt. It provides totally transparent and trouble-free MIME | |
4510 support. When appropriate a message will be decoded in place in an | |
4511 XEmacs buffer. | |
4512 | |
4513 TM now comes as a package with XEmacs 19.16 and XEmacs 20.2. | |
4514 | |
4515 TM was written by @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} and | |
4516 @email{shuhei-k@@jaist.ac.jp, KOBAYASHI | |
4517 Shuhei}. | |
4518 | |
4519 It is based on the work of @email{umerin@@mse.kyutech.ac.jp, UMEDA | |
4520 Masanobu}, the original writer of GNUS. | |
4521 | |
4522 The following information is from the @file{README}: | |
4523 | |
4524 @dfn{tm} is a MIME package for GNU Emacs. | |
4525 tm has following functions: | |
4526 | |
4527 @itemize @bullet | |
4528 @item MIME style multilingual header. | |
4529 @item MIME message viewer (mime/viewer-mode). | |
4530 @item MIME message composer (mime/editor-mode). | |
4531 @item MIME extenders for mh-e, GNUS, RMAIL and VM. | |
4532 @end itemize | |
4533 | |
4534 tm is available from following anonymous ftp sites: | |
4535 @itemize @bullet | |
4536 @comment @item @uref{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/} (Japan). | |
4537 @comment @item @uref{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/} (Japan). | |
4538 @comment @c The host above is unknown. | |
4539 @comment @item @uref{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/} (US). | |
4540 @comment @item @uref{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/} (US). | |
4541 @item @uref{ftp://ftp.unicamp.br/pub/mail/mime/tm/} (Brasil). | |
4542 @item @uref{ftp://ftp.th-darmstadt.de/pub/editors/GNU-Emacs/lisp/mime/} (Germany). | |
4543 @item @uref{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/} (Germany). | |
4544 @end itemize | |
4545 | |
4546 Don't let the installation procedure & instructions stop you from trying | |
4547 this package out---it's much simpler than it looks, and once installed, | |
4548 trivial to use. | |
4549 | |
4550 @email{youngs@@xemacs.org, Steve Youngs} writes: | |
4551 | |
4552 @quotation | |
4553 All the major Emacs Lisp based MUAs (Gnus, MH-E, and VM) all do their | |
4554 own thing when it comes to MIME so you won't need TM to get MIME support | |
4555 in these packages. | |
4556 @end quotation | |
4557 | |
4558 @node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems | |
4559 @unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working? | |
4560 | |
4561 Ben Wing @email{ben@@xemacs.org} writes: | |
4562 | |
4563 @quotation | |
4564 It wasn't chown'ed/chmod'd correctly. | |
4565 @end quotation | |
4566 | |
4567 @node Q4.3.4, Q4.3.5, Q4.3.3, Subsystems | |
4568 @unnumberedsubsec Q4.3.4: Movemail is also distributed by Netscape? Can that cause problems? | |
4569 | |
4570 @email{steve@@xemacs.org, Steve Baur} writes: | |
4571 | |
4572 @quotation | |
4573 Yes. Always use the movemail installed with your XEmacs. Failure to do | |
4574 so can result in lost mail. | |
4575 @end quotation | |
4576 | |
4577 Please refer to @email{jwz@@jwz.org, Jamie Zawinski's} notes at | |
4578 @iftex | |
4579 @* | |
4580 @end iftex | |
4581 @uref{http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/movemail.html}. | |
4582 In particular, this document will show you how to make Netscape use the | |
4583 version of movemail configured for your system by the person who built | |
4584 XEmacs. | |
4585 | |
4586 @node Q4.3.5, Q4.4.1, Q4.3.4, Subsystems | |
4587 @unnumberedsubsec Q4.3.5: Where do I find pstogif (required by tm)? | |
4588 | |
4589 pstogif is part of the latex2html package. | |
4590 | |
4591 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: | |
4592 | |
4593 latex2html is best found at the CTAN hosts and their mirrors | |
4594 in | |
4595 @iftex | |
4596 @* | |
4597 @end iftex | |
4598 @file{tex-archive/support/latex2html}. | |
4599 | |
4600 CTAN hosts are: | |
4601 | |
4602 @itemize @bullet | |
4603 @item @uref{ftp://ftp.tex.ac.uk/tex-archive/support/latex2html/}. | |
4604 @item @uref{ftp://ftp.dante.de/tex-archive/support/latex2html/}. | |
4605 @end itemize | |
4606 | |
4607 There is a good mirror at ftp.cdrom.com; | |
4608 @iftex | |
4609 @* | |
4610 @end iftex | |
4611 @uref{ftp://ftp.cdrom.com/pub/tex/ctan/support/latex2html/}. | |
4612 | |
4613 @node Q4.4.1, Q4.4.2, Q4.3.5, Subsystems | |
4614 @unnumberedsec 4.4: Sparcworks, EOS, and WorkShop | |
4615 @unnumberedsubsec Q4.4.1: What is SPARCworks, EOS, and WorkShop? | |
4616 | |
4617 @email{turner@@lanl.gov, John Turner} writes: | |
4618 | |
4619 @quotation | |
4620 SPARCworks is SunSoft's development environment, comprising compilers | |
4621 (C, C++, FORTRAN 77, Fortran 90, Ada, and Pascal), a debugger, and other | |
4622 tools such as TeamWare (for configuration management), MakeTool, etc. | |
4623 @end quotation | |
4624 | |
4625 See @uref{http://www.sun.com/software/Developer-products/} | |
4626 for more info. | |
4627 | |
4628 EOS stands for "Era on SPARCworks", but I don't know what Era stands | |
4629 for. | |
4630 | |
4631 EOS is the integration of XEmacs with the SPARCworks debugger. It | |
4632 allows one to use an XEmacs frame to view code (complete with | |
4633 fontification, etc.), set breakpoints, print variables, etc., while | |
4634 using the SPARCworks debugger. It works very well and I use it all the | |
4635 time. | |
4636 | |
4637 @email{cthomp@@xemacs.org, Chuck Thompson} writes: | |
4638 | |
4639 @quotation | |
4640 Era stood for "Emacs Rewritten Again". It was what we were calling the | |
4641 modified version of Lucid Emacs for Sun when I was dragged, er, allowed | |
4642 to work on this wonderful editor. | |
4643 @end quotation | |
4644 | |
4645 @email{martin@@xemacs.org, Martin Buchholz} writes: | |
4646 | |
4647 @quotation | |
4648 EOS is being replaced with a new graphical development environment | |
4649 called Sun WorkShop, which is currently (07/96) in Alpha Test. For more | |
4650 details, check out | |
4651 @iftex | |
4652 @* | |
4653 @end iftex | |
4654 @uref{http://www.sun.com/software/Products/Developer-products}. | |
4655 @end quotation | |
4656 | |
4657 @node Q4.4.2, Q4.5.1, Q4.4.1, Subsystems | |
4658 @unnumberedsubsec Q4.4.2: How do I start the Sun Workshop support in XEmacs 21? | |
4659 | |
4660 Add the switch ---with-workshop to the configure command when building | |
4661 XEmacs and put the following in one of your startup files | |
4662 (e.g. site-start.el or .emacs): | |
4663 | |
4664 @lisp | |
4665 (when (featurep 'tooltalk) | |
4666 (load "tooltalk-macros") | |
4667 (load "tooltalk-util") | |
4668 (load "tooltalk-init")) | |
4669 (when (featurep 'sparcworks) | |
4670 (load "sunpro-init") | |
4671 (load "ring") | |
4672 (load "comint") | |
4673 (load "annotations") | |
4674 (sunpro-startup)) | |
4675 @end lisp | |
4676 | |
4677 If you are not using the latest Workshop (5.0) you have to apply the | |
4678 following patch: | |
4679 | |
4680 @format | |
4681 --- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999 | |
4682 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999 | |
4683 @@@@ -42,7 +42,7 @@@@ | |
4684 (defvar running-xemacs nil "t if we're running XEmacs") | |
4685 (defvar running-emacs nil "t if we're running GNU Emacs 19") | |
4686 | |
4687 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version) | |
4688 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) | |
4689 (setq running-xemacs t) | |
4690 (setq running-emacs t)) | |
4691 @end format | |
4692 | |
4693 | |
4694 | |
4695 @node Q4.5.1, Q4.6.1, Q4.4.2, Subsystems | |
4696 @unnumberedsec 4.5: Energize | |
4697 @unnumberedsubsec Q4.5.1: What is/was Energize? | |
4698 | |
4699 @email{gray@@meteor.harlequin.com, David N Gray} writes: | |
4700 @quotation | |
4701 The files in @file{lisp/energize} are to enable Emacs to interface with | |
4702 the "Energize Programming System", a C and C++ development environment, | |
4703 which was a product of Lucid, Inc. Tragically, Lucid went out of | |
4704 business in 1994, so although Energize is still a great system, if you | |
4705 don't already have it, there isn't any way to get it now. (Unless you | |
4706 happen to be in Japan; INS Engineering may still be selling it there. | |
4707 Tartan bought the rights to sell it in the rest of the world, but never | |
4708 did so.) | |
4709 @end quotation | |
4710 | |
4711 @node Q4.6.1, Q4.7.1, Q4.5.1, Subsystems | |
4712 @unnumberedsec 4.6: Infodock | |
4713 @unnumberedsubsec Q4.6.1: What is Infodock? | |
4714 | |
4715 @uref{http://sourceforge.net/projects/infodock/, InfoDock} is an | |
4716 integrated productivity toolset, mainly aimed at technical people, | |
4717 hosted at SourceForge. | |
4718 | |
4719 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of | |
4720 the power of Emacs, but with an easier to use and more comprehensive | |
4721 menu-based user interface. The bottom portion of this text describes | |
4722 how it differs from XEmacs and GNU Emacs from the Free Software | |
4723 Foundation. | |
4724 | |
4725 InfoDock is aimed at people who want a free, turn-key productivity | |
4726 environment. Although InfoDock is customizable, it is not intended for | |
4727 people who like basic versions of Emacs which need to be customized | |
4728 extensively for local use; standard Emacs distributions are better for | |
4729 such uses. InfoDock is for those people who want a complete, | |
4730 pre-customized environment in one package, which they need not touch | |
4731 more than once or twice a year to update to new revisions. | |
4732 | |
4733 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX, | |
4734 and Intel Linux systems. It is intended for use on a color display, | |
4735 although most features will work on monochrome monitors. Simply unpack | |
4736 InfoDock according to the instructions in the ID-INSTALL file and you | |
4737 are ready to run. | |
4738 | |
4739 The InfoDock Manual is concise, yet sufficient as a user guide for users | |
4740 who have never used an Emacs-type editor before. For users who are | |
4741 already familiar with Emacs, it supplements the information in the GNU | |
4742 Emacs Manual. | |
4743 | |
4744 InfoDock menus are much more extensive and more mature than standard | |
4745 Emacs menus. Each menu offers a @samp{Manual} item which displays | |
4746 documentation associated with the menu's functions. | |
4747 | |
4748 @noindent | |
4749 Four types of menubars are provided: | |
4750 @enumerate | |
4751 @item | |
4752 An extensive menubar providing access to global InfoDock commands. | |
4753 @item | |
4754 Mode-specific menubars tailored to the current major mode. | |
4755 @item | |
4756 A simple menubar for basic editing to help novices get started with InfoDock. | |
4757 @item | |
4758 The standard XEmacs menubar. | |
4759 @end enumerate | |
4760 | |
4761 Most modes also include mode-specific popup menus. Additionally, region and | |
4762 rectangle popup menus are included. | |
4763 | |
4764 @samp{Hyperbole}, the everyday information manager, is a core part of | |
4765 InfoDock. This provides context-sensitive mouse keys, a rolodex-type | |
4766 contact manager, programmable hypertext buttons, and an autonumbered | |
4767 outliner with embedded hyperlink anchors. | |
4768 | |
4769 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a | |
4770 standard part of InfoDock. | |
4771 | |
4772 InfoDock saves a more extensive set of user options than other Emacs | |
4773 versions. | |
4774 | |
4775 InfoDock inserts a useful file header in many file types, showing the | |
4776 author, summary, and last modification time of each file. A summary | |
4777 program can then be used to summarize all of the files in a directory, | |
4778 for easy MANIFEST file creation. | |
4779 | |
4780 Your working set of buffers is automatically saved and restored (if you | |
4781 answer yes to a prompt) between InfoDock sessions. | |
4782 | |
4783 Refined color choices for code highlighting are provided for both dark and | |
4784 light background display frames. | |
4785 | |
4786 The @kbd{C-z} key prefix performs frame-based commands which parallel the | |
4787 @kbd{C-x} key prefix for window-based commands. | |
4788 | |
4789 The Smart Menu system is included for producing command menus on dumb | |
4790 terminals. | |
4791 | |
4792 Lisp libraries are better categorized according to function. | |
4793 | |
4794 Extensions and improvements to many areas of Emacs are included, such as: | |
4795 paragraph filling, mail reading with Rmail, shell handling, outlining, code | |
4796 highlighting and browsing, and man page browsing. | |
4797 | |
4798 InfoDock questions, answers and discussion should go to the mail list | |
4799 @iftex | |
4800 @* | |
4801 @end iftex | |
4802 @email{infodock@@infodock.com}. Use | |
4803 @email{infodock-request@@infodock.com} to be added or removed from the | |
4804 list. Always include your InfoDock version number when sending help | |
4805 requests. | |
4806 | |
4807 InfoDock is available across the Internet via anonymous FTP. To get | |
4808 it, first move to a directory into which you want the InfoDock archive | |
4809 files placed. We will call this <DIST-DIR>. | |
4810 | |
4811 @example | |
4812 cd <DIST-DIR> | |
4813 @end example | |
4814 | |
4815 Ftp to ftp.xemacs.org (Internet Host ID = 128.174.252.16): | |
4816 | |
4817 @example | |
4818 prompt> ftp ftp.xemacs.org | |
4819 @end example | |
4820 | |
4821 Login as @samp{anonymous} with your own <user-id>@@<site-name> as a password. | |
4822 | |
4823 @example | |
4824 Name (ftp.xemacs.org): anonymous | |
4825 331 Guest login ok, send your complete e-mail address as password. | |
4826 Password: -<your-user-id>@@<your-domain> | |
4827 230 Guest login ok, access restrictions apply. | |
4828 @end example | |
4829 | |
4830 Move to the location of the InfoDock archives: | |
4831 | |
4832 @example | |
4833 ftp> cd pub/infodock | |
4834 @end example | |
4835 | |
4836 Set your transfer mode to binary: | |
4837 | |
4838 @example | |
4839 ftp> bin | |
4840 200 Type set to I. | |
4841 @end example | |
4842 | |
4843 Turn off prompting: | |
4844 | |
4845 @example | |
4846 ftp> prompt | |
4847 Interactive mode off. | |
4848 @end example | |
4849 | |
4850 Retrieve the InfoDock archives that you want, either by using a | |
4851 @samp{get <file>} for each file you want or by using the following to | |
4852 get a complete distribution, including all binaries: | |
4853 | |
4854 @example | |
4855 ftp> mget ID-INSTALL | |
4856 ftp> mget id-* | |
4857 @end example | |
4858 | |
4859 Close the FTP connection: | |
4860 | |
4861 @example | |
4862 ftp> quit | |
4863 221 Goodbye. | |
4864 @end example | |
4865 | |
4866 Read the @file{ID-INSTALL} file which you just retrieved for | |
4867 step-by-step installation instructions. | |
4868 | |
4869 @node Q4.7.1, Q4.7.2, Q4.6.1, Subsystems | |
4870 @unnumberedsec 4.7: Other Unbundled Packages | |
4871 @unnumberedsubsec Q4.7.1: What is AUC TeX? Where do you get it? | |
4872 | |
4873 AUC TeX is a package written by @email{abraham@@dina.kvl.dk, Per Abrahamsen}. | |
4874 Starting with XEmacs 19.16, AUC TeX is bundled with XEmacs. The | |
4875 following information is from the @file{README} and website. | |
4876 | |
4877 AUC TeX is an extensible package that supports writing and formatting | |
4878 TeX files for most variants of GNU Emacs. Many different macro packages | |
4879 are supported, including AMS TeX, LaTeX, and TeXinfo. | |
4880 | |
4881 The most recent version is always available by ftp at | |
4882 @iftex | |
4883 @* | |
4884 @end iftex | |
4885 @uref{ftp://sunsite.dk/packages/auctex/auctex.tar.gz}. | |
4886 | |
4887 In case you don't have access to anonymous ftp, you can get it by an | |
4888 email request to @email{ftpmail@@decwrl.dec.com}. | |
4889 | |
4890 WWW users may want to check out the AUC TeX page at | |
4891 @iftex | |
4892 @* | |
4893 @end iftex | |
4894 @uref{http://sunsite.dk/auctex/}. | |
4895 | |
4896 @node Q4.7.2, Q4.7.3, Q4.7.1, Subsystems | |
4897 @unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets? | |
4898 | |
4899 Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at | |
4900 @iftex | |
4901 @* | |
4902 @end iftex | |
4903 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}. | |
4904 | |
4905 @node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems | |
4906 @unnumberedsubsec Q4.7.3: [This question intentionally left blank] | |
4907 | |
4908 @node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems | |
4909 @unnumberedsubsec Q4.7.4: Problems installing AUC TeX. | |
4910 | |
4911 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: | |
4912 | |
4913 @quotation | |
4914 AUC TeX works fine on both stock Emacs and XEmacs has been doing so for | |
4915 a very very long time. This is mostly due to the work of | |
4916 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu} | |
4917 package. Which leads to what is probably the problem... | |
4918 @end quotation | |
4919 | |
4920 Most problems with AUC TeX are one of two things: | |
4921 | |
4922 @itemize @bullet | |
4923 @item | |
4924 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't | |
4925 match. | |
4926 | |
4927 Fix: make sure you configure AUC TeX properly @strong{before} installing. | |
4928 | |
4929 @item | |
4930 You have an old version of easymenu.el in your path. | |
4931 | |
4932 Fix: use @code{locate-library} and remove old versions to make sure it | |
4933 @strong{only} finds the one that came with XEmacs. | |
4934 @end itemize | |
4935 | |
4936 | |
4937 @node Q4.7.5, Q4.7.6, Q4.7.4, Subsystems | |
4938 @unnumberedsubsec Q4.7.5: Is there a reason for an Emacs package not to be included in XEmacs? | |
4939 | |
4940 The reason for an Emacs package not to be included in XEmacs is | |
4941 usually one or more of the following: | |
4942 | |
4943 @enumerate | |
4944 @item | |
4945 The package has not been ported to XEmacs. This will typically happen | |
4946 when it uses GNU-Emacs-specific features, which make it fail under | |
4947 XEmacs. | |
4948 | |
4949 Porting a package to XEmacs can range from a trivial amount of change to | |
4950 a partial or full rewrite. Fortunately, the authors of modern packages | |
4951 usually choose to support both Emacsen themselves. | |
4952 | |
4953 @item | |
4954 The package has been decided not to be appropriate for XEmacs. It may | |
4955 have an equivalent or better replacement within XEmacs, in which case | |
4956 the developers may choose not to burden themselves with supporting an | |
4957 additional package. | |
4958 | |
4959 Each package bundled with XEmacs means more work for the maintainers, | |
4960 whether they want it or not. If you are ready to take over the | |
4961 maintenance responsibilities for the package you port, be sure to say | |
4962 so---we will more likely include it. | |
4963 | |
4964 @item | |
4965 The package simply hasn't been noted by the XEmacs development. If | |
4966 that's the case, the messages like yours are very useful for attracting | |
4967 our attention. | |
4968 | |
4969 @item | |
4970 The package was noted by the developers, but they simply haven't yet | |
4971 gotten around to including/porting it. Wait for the next release or, | |
4972 even better, offer your help. It will be gladly accepted and | |
4973 appreciated. | |
4974 @end enumerate | |
4975 | |
4976 @node Q4.7.6, Q4.7.7, Q4.7.5, Subsystems | |
4977 @unnumberedsubsec Q4.7.5: Is there a MatLab mode? | |
4978 | |
4979 Yes, a matlab mode and other items are available at the | |
4980 @uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons, | |
4981 MathWorks' emacs_add_ons ftp directory}. | |
4982 | |
4983 @node Q4.7.7, , Q4.7.6, Subsystems | |
4984 @unnumberedsubsec Q4.7.7: Can I edit files on other hosts? | |
4985 | |
4986 Yes. Of course XEmacs can use any network file system (such as NFS or | |
4987 Windows file sharing) you have available, and includes some | |
4988 optimizations and safety features appropriate to those environments. | |
4989 | |
4990 It is also possible to transparently edit files via FTP, ssh, or rsh. That | |
4991 is, XEmacs makes a local copy using the transport in the background, and | |
4992 automatically refreshes the remote original from that copy when you save | |
4993 it. XEmacs also is capable of doing file system manipulations like | |
4994 creating and removing directories and files. The FTP interface is | |
4995 provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The | |
4996 ssh/rsh interface is provided by the optional @samp{tramp} package | |
4997 @ref{Top, TRAMP, , tramp}. | |
4998 | |
4999 @node Miscellaneous, MS Windows, Subsystems, Top | |
5000 @unnumbered 5 The Miscellaneous Stuff | |
5001 | |
5002 This is part 5 of the XEmacs Frequently Asked Questions list. This | |
5003 section is devoted to anything that doesn't fit neatly into the other | |
5004 sections. | |
5005 | |
5006 @menu | |
5007 Major & Minor Modes: | |
5008 * Q5.0.1:: How can I do source code highlighting using font-lock? | |
5009 * Q5.0.2:: I do not like cc-mode. How do I use the old c-mode? | |
5010 * Q5.0.3:: How do I get @samp{More} Syntax Highlighting on by default? | |
5011 * Q5.0.4:: How can I enable auto-indent and/or Filladapt? | |
5012 * Q5.0.5:: How can I get XEmacs to come up in text/auto-fill mode by default? | |
5013 * Q5.0.6:: How do I start up a second shell buffer? | |
5014 * Q5.0.7:: Telnet from shell filters too much. | |
5015 * Q5.0.8:: Why does edt emulation not work? | |
5016 * Q5.0.9:: How can I emulate VI and use it as my default mode? | |
5017 * Q5.0.10:: [This question intentionally left blank] | |
5018 * Q5.0.11:: [This question intentionally left blank] | |
5019 * Q5.0.12:: How do I disable gnuserv from opening a new frame? | |
5020 * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? | |
5021 * Q5.0.14:: Strange things are happening in Shell Mode. | |
5022 * Q5.0.15:: Where do I get the latest CC Mode? | |
5023 * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? | |
5024 * Q5.0.17:: How can I get two instances of info? | |
5025 * Q5.0.18:: [This question intentionally left blank] | |
5026 * Q5.0.19:: Is there something better than LaTeX mode? | |
5027 * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? | |
5028 | |
5029 Emacs Lisp Programming Techniques: | |
5030 * Q5.1.1:: The difference in key sequences between XEmacs and GNU Emacs? | |
5031 * Q5.1.2:: Can I generate "fake" keyboard events? | |
5032 * Q5.1.3:: Could you explain @code{read-kbd-macro} in more detail? | |
5033 * Q5.1.4:: What is the performance hit of @code{let}? | |
5034 * Q5.1.5:: What is the recommended use of @code{setq}? | |
5035 * Q5.1.6:: What is the typical misuse of @code{setq}? | |
5036 * Q5.1.7:: I like the @code{do} form of cl, does it slow things down? | |
5037 * Q5.1.8:: I like recursion, does it slow things down? | |
5038 * Q5.1.9:: How do I put a glyph as annotation in a buffer? | |
5039 * Q5.1.10:: @code{map-extents} won't traverse all of my extents! | |
5040 * Q5.1.11:: My elisp program is horribly slow. Is there an easy way to find out where it spends time? | |
5041 | |
5042 Sound: | |
5043 * Q5.2.1:: How do I turn off the sound? | |
5044 * Q5.2.2:: How do I get funky sounds instead of a boring beep? | |
5045 * Q5.2.3:: What's NAS, how do I get it? | |
5046 * Q5.2.4:: Sunsite sounds don't play. | |
5047 | |
5048 Miscellaneous: | |
5049 * Q5.3.1:: How do you make XEmacs indent CL if-clauses correctly? | |
5050 * Q5.3.2:: [This question intentionally left blank] | |
5051 * Q5.3.3:: How can I print WYSIWYG a font-locked buffer? | |
5052 * Q5.3.4:: Getting @kbd{M-x lpr} to work with postscript printer. | |
5053 * Q5.3.5:: How do I specify the paths that XEmacs uses for finding files? | |
5054 * Q5.3.6:: [This question intentionally left blank] | |
5055 * Q5.3.7:: Can I have the end of the buffer delimited in some way? | |
5056 * Q5.3.8:: How do I insert today's date into a buffer? | |
5057 * Q5.3.9:: Are only certain syntactic character classes available for abbrevs? | |
5058 * Q5.3.10:: How can I get those oh-so-neat X-Face lines? | |
5059 * Q5.3.11:: How do I add new Info directories? | |
5060 * Q5.3.12:: What do I need to change to make printing work? | |
5061 | |
5062 Mathematics: | |
5063 * Q5.4.1:: What are bignums, ratios, and bigfloats in Lisp? | |
5064 * Q5.4.2:: XEmacs segfaults when I use very big numbers! | |
5065 * Q5.4.3:: Bignums are really slow! | |
5066 * Q5.4.4:: Equal bignums don't compare as equal! What's going on? | |
5067 @end menu | |
5068 | |
5069 @node Q5.0.1, Q5.0.2, Miscellaneous, Miscellaneous | |
5070 @unnumberedsec 5.0: Major & Minor Modes | |
5071 @unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock? | |
5072 | |
5073 For most modes, font-lock is already set up and just needs to be turned | |
5074 on. This can be done by adding the line: | |
5075 | |
5076 @lisp | |
5077 (require 'font-lock) | |
5078 @end lisp | |
5079 | |
5080 to your @file{init.el}/@file{.emacs}. (You can turn it on for the | |
5081 current buffer and session only by @kbd{M-x font-lock-mode}.) See the | |
5082 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs | |
5083 versions prior to 21.4) for more information. | |
5084 | |
5085 @c the old way: | |
5086 @c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) | |
5087 @c (add-hook 'dired-mode-hook 'turn-on-font-lock) | |
5088 | |
5089 See also @code{Syntax Highlighting} from the @code{Options} menu. | |
5090 Remember to save options. | |
5091 | |
5092 @node Q5.0.2, Q5.0.3, Q5.0.1, Miscellaneous | |
5093 @unnumberedsubsec Q5.0.2: I do not like cc-mode. How do I use the old c-mode? | |
5094 | |
5095 Well, first off, consider if you really want to do this. cc-mode is | |
5096 much more powerful than the old c-mode. If you're having trouble | |
5097 getting your old offsets to work, try using @code{c-set-offset} instead. | |
5098 You might also consider using the package @code{cc-compat}. | |
5099 | |
5100 But, if you still insist, add the following lines to your @file{init.el}/@file{.emacs}: | |
5101 | |
5102 @lisp | |
5103 (fmakunbound 'c-mode) | |
5104 (makunbound 'c-mode-map) | |
5105 (fmakunbound 'c++-mode) | |
5106 (makunbound 'c++-mode-map) | |
5107 (makunbound 'c-style-alist) | |
5108 (load-library "old-c-mode") | |
5109 (load-library "old-c++-mode") | |
5110 @end lisp | |
5111 | |
5112 This must be done before any other reference is made to either c-mode or | |
5113 c++-mode. | |
5114 | |
5115 @node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous | |
5116 @unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default? | |
5117 | |
5118 Use the following code in your @file{init.el}/@file{.emacs}: | |
5119 | |
5120 @lisp | |
5121 (setq-default font-lock-maximum-decoration t) | |
5122 @end lisp | |
5123 | |
5124 @c In versions of XEmacs prior to 19.14, you had to use a kludgy solution | |
5125 @c like this: | |
5126 @c | |
5127 @c @lisp | |
5128 @c (setq c-font-lock-keywords c-font-lock-keywords-2 | |
5129 @c c++-font-lock-keywords c++-font-lock-keywords-2 | |
5130 @c lisp-font-lock-keywords lisp-font-lock-keywords-2) | |
5131 @c @end lisp | |
5132 @c | |
5133 @c It will work for C, C++ and Lisp. | |
5134 @c | |
5135 See also @code{Syntax Highlighting} from the @code{Options} menu. | |
5136 Remember to save options. | |
5137 | |
5138 @node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous | |
5139 @unnumberedsubsec Q5.0.4: How can I enable auto-indent and/or Filladapt? | |
5140 | |
5141 Put the following line in your @file{init.el}/@file{.emacs}: | |
5142 | |
5143 @lisp | |
5144 (setq indent-line-function 'indent-relative-maybe) | |
5145 @end lisp | |
5146 | |
5147 If you want to get fancy, try the @code{filladapt} package available | |
5148 standard with XEmacs. Put this into your @file{init.el}/@file{.emacs}: | |
5149 | |
5150 @lisp | |
5151 (require 'filladapt) | |
5152 (setq-default filladapt-mode t) | |
5153 (add-hook 'c-mode-hook 'turn-off-filladapt-mode) | |
5154 @end lisp | |
5155 | |
5156 This will enable Filladapt for all modes except C mode, where it doesn't | |
5157 work well. To turn Filladapt on only in particular major modes, remove | |
5158 the @code{(setq-default ...)} line and use | |
5159 @code{turn-on-filladapt-mode}, like this: | |
5160 | |
5161 @lisp | |
5162 (add-hook 'text-mode-hook 'turn-on-filladapt-mode) | |
5163 @end lisp | |
5164 | |
5165 You can customize filling and adaptive filling with Customize. | |
5166 Select from the @code{Options} menu | |
5167 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...} | |
5168 or type @kbd{M-x customize @key{RET} fill @key{RET}}. | |
5169 | |
5170 Note that well-behaving text-lookalike modes will run | |
5171 @code{text-mode-hook} by default (e.g. that's what Message does). For | |
5172 the nasty ones, you'll have to provide the @code{add-hook}s yourself. | |
5173 | |
5174 Please note that the @code{fa-extras} package is no longer useful. | |
5175 | |
5176 @node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous | |
5177 @unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default? | |
5178 | |
5179 Try the following lisp in your @file{init.el}/@file{.emacs}: | |
5180 | |
5181 @lisp | |
5182 (setq default-major-mode 'text-mode) | |
5183 (setq text-mode-hook 'turn-on-auto-fill) | |
5184 @end lisp | |
5185 | |
5186 @strong{WARNING}: note that changing the value of | |
5187 @code{default-major-mode} from @code{fundamental-mode} can break a large | |
5188 amount of built-in code that expects newly created buffers to be in | |
5189 @code{fundamental-mode}. (Changing from @code{fundamental-mode} to | |
5190 @code{text-mode} might not wreak too much havoc, but changing to | |
5191 something more exotic like a lisp-mode would break many Emacs packages). | |
5192 | |
5193 Note that Emacs by default starts up in buffer @code{*scratch*} in | |
5194 @code{initial-major-mode}, which defaults to | |
5195 @code{lisp-interaction-mode}. Thus adding the following form to your | |
5196 Emacs init file will cause the initial @code{*scratch*} buffer to be put | |
5197 into auto-fill'ed @code{text-mode}: | |
5198 | |
5199 @lisp | |
5200 (setq initial-major-mode | |
5201 (lambda () | |
5202 (text-mode) | |
5203 (turn-on-auto-fill))) | |
5204 @end lisp | |
5205 | |
5206 Note that after your init file is loaded, if | |
5207 @code{inhibit-startup-message} is @code{nil} (the default) and the | |
5208 startup buffer is @code{*scratch*} then the startup message will be | |
5209 inserted into @code{*scratch*}; it will be removed after a timeout by | |
5210 erasing the entire @code{*scratch*} buffer. Keep in mind this default | |
5211 usage of @code{*scratch*} if you desire any prior manipulation of | |
5212 @code{*scratch*} from within your Emacs init file. In particular, | |
5213 anything you insert into @code{*scratch*} from your init file will be | |
5214 later erased. Also, if you change the mode of the @code{*scratch*} | |
5215 buffer, be sure that this will not interfere with possible later | |
5216 insertion of the startup message (e.g. if you put @code{*scratch*} into | |
5217 a nonstandard mode that has automatic font lock rules, then the startup | |
5218 message might get fontified in a strange foreign manner, e.g. as code in | |
5219 some programming language). | |
5220 | |
5221 @node Q5.0.6, Q5.0.7, Q5.0.5, Miscellaneous | |
5222 @unnumberedsubsec Q5.0.6: How do I start up a second shell buffer? | |
5223 | |
5224 In the @code{*shell*} buffer: | |
5225 | |
5226 @lisp | |
5227 M-x rename-buffer @key{RET} *shell-1* @key{RET} | |
5228 M-x shell RET | |
5229 @end lisp | |
5230 | |
5231 This will then start a second shell. The key is that no buffer named | |
5232 @samp{*shell*} can exist. It might be preferable to use @kbd{M-x | |
5233 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x | |
5234 rename-buffer}. | |
5235 | |
5236 Alternately, you can set the variable @code{shell-multiple-shells}. | |
5237 If the value of this variable is non-nil, each time shell mode is invoked, | |
5238 a new shell is made | |
5239 | |
5240 @node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous | |
5241 @unnumberedsubsec Q5.0.7: Telnet from shell filters too much | |
5242 | |
5243 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke | |
5244 and use a telnet session within it. Everything works fine except that | |
5245 now all @samp{^M}'s are filtered out by Emacs. Fixes? | |
5246 | |
5247 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather | |
5248 than doing rsh or telnet within the local shell buffer. Starting with | |
5249 XEmacs-20.3 you can also use @kbd{M-x ssh} to open secure remote session | |
5250 if you have @code{ssh} installed. | |
5251 | |
5252 @node Q5.0.8, Q5.0.9, Q5.0.7, Miscellaneous | |
5253 @unnumberedsubsec Q5.0.8: Why does edt emulation not work? | |
5254 | |
5255 We don't know, but you can use tpu-edt emulation instead, which works | |
5256 fine and is a little fancier than the standard edt emulation. To do | |
5257 this, add the following line to your @file{init.el}/@file{.emacs}: | |
5258 | |
5259 @lisp | |
5260 (tpu-edt) | |
5261 @end lisp | |
5262 | |
5263 If you don't want it to replace @kbd{C-h} with an edt-style help menu | |
5264 add this as well: | |
5265 | |
5266 @lisp | |
5267 (global-set-key [(control h)] 'help-for-help) | |
5268 @end lisp | |
5269 | |
5270 @node Q5.0.9, Q5.0.10, Q5.0.8, Miscellaneous | |
5271 @unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode? | |
5272 | |
5273 Our recommended VI emulator is viper. To make viper-mode the default, | |
5274 add this to your @file{init.el}/@file{.emacs}: | |
5275 | |
5276 @lisp | |
5277 (viper-mode) | |
5278 @end lisp | |
5279 | |
5280 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes: | |
5281 | |
5282 @quotation | |
5283 This should be added as close to the top of @file{init.el}/@file{.emacs} as you can get | |
5284 it, otherwise some minor modes may not get viper-ized. | |
5285 @end quotation | |
5286 | |
5287 @node Q5.0.10, Q5.0.11, Q5.0.9, Miscellaneous | |
5288 @unnumberedsubsec Q5.0.10: [This question intentionally left blank] | |
5289 | |
5290 Obsolete question, left blank to avoid renumbering | |
5291 | |
5292 @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous | |
5293 @unnumberedsubsec Q5.0.11: [This question intentionally left blank] | |
5294 | |
5295 Obsolete question, left blank to avoid renumbering | |
5296 | |
5297 @node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous | |
5298 @unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame? | |
5299 | |
5300 If you set the @code{gnuserv-frame} variable to the frame that should be | |
5301 used to display buffers that are pulled up, a new frame will not be | |
5302 created. For example, you could put | |
5303 | |
5304 @lisp | |
5305 (setq gnuserv-frame (selected-frame)) | |
5306 @end lisp | |
5307 | |
5308 early on in your @file{init.el}/@file{.emacs}, to ensure that the first frame created | |
5309 is the one used for your gnuserv buffers. | |
5310 | |
5311 There is an option to set the gnuserv target to the current frame. See | |
5312 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target} | |
5313 | |
5314 Starting with XEmacs-20.3 you can also change this with Customize. | |
5315 Select from the @code{Options} menu | |
5316 @code{Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} | |
5317 or type @kbd{M-x customize @key{RET} gnuserv @key{RET}}. | |
5318 | |
5319 | |
5320 @node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous | |
5321 @unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client? | |
5322 | |
5323 Put the following in your @file{init.el}/@file{.emacs} file to start the server: | |
5324 | |
5325 @lisp | |
5326 (gnuserv-start) | |
5327 @end lisp | |
5328 | |
5329 Start your first XEmacs as usual. After that, you can do: | |
5330 | |
5331 @example | |
5332 gnuclient randomfilename | |
5333 @end example | |
5334 | |
5335 from the command line to get your existing XEmacs process to open a new | |
5336 frame and visit randomfilename in that window. When you're done editing | |
5337 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the | |
5338 frame. | |
5339 | |
5340 See also man page of gnuclient. | |
5341 | |
5342 @node Q5.0.14, Q5.0.15, Q5.0.13, Miscellaneous | |
5343 @unnumberedsubsec Q5.0.14: Strange things are happening in Shell Mode. | |
5344 | |
5345 Sometimes (i.e. it's not repeatable, and I can't work out why it | |
5346 happens) when I'm typing into shell mode, I hit return and only a | |
5347 portion of the command is given to the shell, and a blank prompt is | |
5348 returned. If I hit return again, the rest of the previous command is | |
5349 given to the shell. | |
5350 | |
5351 @email{martin@@xemacs.org, Martin Buchholz} writes: | |
5352 | |
5353 @quotation | |
5354 There is a known problem with interaction between @code{csh} and the | |
5355 @code{filec} option and XEmacs. You should add the following to your | |
5356 @file{.cshrc}: | |
5357 | |
5358 @example | |
5359 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec | |
5360 @end example | |
5361 @end quotation | |
5362 | |
5363 @node Q5.0.15, Q5.0.16, Q5.0.14, Miscellaneous | |
5364 @unnumberedsubsec Q5.0.15: Where do I get the latest CC Mode? | |
5365 | |
5366 @email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes: | |
5367 | |
5368 @quotation | |
5369 This can be had from @uref{http://www.python.org/emacs/}. | |
5370 @end quotation | |
5371 | |
5372 @node Q5.0.16, Q5.0.17, Q5.0.15, Miscellaneous | |
5373 @unnumberedsubsec Q5.0.16: I find auto-show-mode disconcerting. How do I turn it off? | |
5374 | |
5375 @code{auto-show-mode} controls whether or not a horizontal scrollbar | |
5376 magically appears when a line is too long to be displayed. This is | |
5377 enabled by default. To turn it off, put the following in your | |
5378 @file{init.el}/@file{.emacs}: | |
5379 | |
5380 @lisp | |
5381 (setq auto-show-mode nil) | |
5382 (setq-default auto-show-mode nil) | |
5383 @end lisp | |
5384 | |
5385 @node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous | |
5386 @unnumberedsubsec Q5.0.17: How can I get two instances of info? | |
5387 | |
5388 Before 21.4, you can't. The @code{info} package does not provide for | |
5389 multiple info buffers. In 21.4, this should be fixed. #### how? | |
5390 | |
5391 @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous | |
5392 @unnumberedsubsec Q5.0.18: [This question intentionally left blank] | |
5393 | |
5394 @node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous | |
5395 @unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode? | |
5396 | |
5397 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes: | |
5398 | |
5399 @quotation | |
5400 The standard TeX modes leave much to be desired, and are somewhat | |
5401 leniently maintained. Serious TeX users use AUC TeX (@pxref{Q4.7.1}). | |
5402 @end quotation | |
5403 | |
5404 @node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous | |
5405 @unnumberedsubsec Q5.0.20: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? | |
5406 | |
5407 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: | |
5408 @quotation | |
5409 Here is one of the solutions, we have this in a script called | |
5410 @file{etc/editclient.sh}. | |
5411 @example | |
5412 #!/bin/sh | |
5413 if gnuclient -batch -eval t >/dev/null 2>&1 | |
5414 then | |
5415 exec gnuclient $@{1+"$@@"@} | |
5416 else | |
5417 xemacs -unmapped -f gnuserv-start & | |
5418 until gnuclient -batch -eval t >/dev/null 2>&1 | |
5419 do | |
5420 sleep 1 | |
5421 done | |
5422 exec gnuclient $@{1+"$@@"@} | |
5423 fi | |
5424 @end example | |
5425 | |
5426 Note that there is a known problem when running XEmacs and 'gnuclient | |
5427 -nw' on the same TTY. | |
5428 @end quotation | |
5429 | |
5430 @node Q5.1.1, Q5.1.2, Q5.0.20, Miscellaneous | |
5431 @unnumberedsec 5.1: Emacs Lisp Programming Techniques | |
5432 @unnumberedsubsec Q5.1.1: What is the difference in key sequences between XEmacs and GNU Emacs? | |
5433 | |
5434 @email{clerik@@naggum.no, Erik Naggum} writes; | |
5435 | |
5436 @quotation | |
5437 Emacs has a legacy of keyboards that produced characters with modifier | |
5438 bits, and therefore map a variety of input systems into this scheme even | |
5439 today. XEmacs is instead optimized for X events. This causes an | |
5440 incompatibility in the way key sequences are specified, but both Emacs | |
5441 and XEmacs will accept a key sequence as a vector of lists of modifiers | |
5442 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say | |
5443 @code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated | |
5444 form for a single key, just (meta control a). Emacs has an abbreviated | |
5445 form for the Control and the Meta modifiers to string-characters (the | |
5446 ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware | |
5447 that the abbreviated form works only for one-character key sequences, | |
5448 while Emacs users need to be aware that the string-character is rather | |
5449 limited. Specifically, the string-character can accommodate only 256 | |
5450 different values, 128 of which have the Meta modifier and 128 of which | |
5451 have not. In each of these blocks, only 32 characters have the Control | |
5452 modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta | |
5453 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A} | |
5454 do not. Programmers are advised to use the full common form, both | |
5455 because it is more readable and less error-prone, and because it is | |
5456 supported by both Emacsen. | |
5457 @end quotation | |
5458 | |
5459 Another (even safer) way to be sure of the key-sequences is to use the | |
5460 @code{read-kbd-macro} function, which takes a string like @samp{C-c | |
5461 <up>}, and converts it to the internal key representation of the Emacs | |
5462 you use. The function is available both on XEmacs and GNU Emacs. | |
5463 | |
5464 @node Q5.1.2, Q5.1.3, Q5.1.1, Miscellaneous | |
5465 @unnumberedsubsec Q5.1.2: Can I generate "fake" keyboard events? | |
5466 | |
5467 I wonder if there is an interactive function that can generate | |
5468 @dfn{fake} keyboard events. This way, I could simply map them inside | |
5469 XEmacs. | |
5470 | |
5471 This seems to work: | |
5472 | |
5473 @lisp | |
5474 (defun cg--generate-char-event (ch) | |
5475 "Generate an event, as if ch has been typed" | |
5476 (dispatch-event (character-to-event ch))) | |
5477 | |
5478 ;; Backspace and Delete stuff | |
5479 (global-set-key [backspace] | |
5480 (lambda () (interactive) (cg--generate-char-event 127))) | |
5481 (global-set-key [unknown_keysym_0x4] | |
5482 (lambda () (interactive) (cg--generate-char-event 4))) | |
5483 @end lisp | |
5484 | |
5485 @node Q5.1.3, Q5.1.4, Q5.1.2, Miscellaneous | |
5486 @unnumberedsubsec Q5.1.3: Could you explain @code{read-kbd-macro} in more detail? | |
5487 | |
5488 The @code{read-kbd-macro} function returns the internal Emacs | |
5489 representation of a human-readable string (which is its argument). | |
5490 Thus: | |
5491 | |
5492 @lisp | |
5493 (read-kbd-macro "C-c C-a") | |
5494 @result{} [(control ?c) (control ?a)] | |
5495 | |
5496 (read-kbd-macro "C-c C-. <up>") | |
5497 @result{} [(control ?c) (control ?.) up] | |
5498 @end lisp | |
5499 | |
5500 In GNU Emacs the same forms will be evaluated to what GNU Emacs | |
5501 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3 | |
5502 67108910 up]}, respectively. | |
5503 | |
5504 The exact @dfn{human-readable} syntax is defined in the docstring of | |
5505 @code{edmacro-mode}. I'll repeat it here, for completeness. | |
5506 | |
5507 @quotation | |
5508 Format of keyboard macros during editing: | |
5509 | |
5510 Text is divided into @dfn{words} separated by whitespace. Except for | |
5511 the words described below, the characters of each word go directly as | |
5512 characters of the macro. The whitespace that separates words is | |
5513 ignored. Whitespace in the macro must be written explicitly, as in | |
5514 @kbd{foo @key{SPC} bar @key{RET}}. | |
5515 | |
5516 @itemize @bullet | |
5517 @item | |
5518 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD}, | |
5519 @kbd{ESC}, and @kbd{NUL} represent special control characters. The | |
5520 words must be written in uppercase. | |
5521 | |
5522 @item | |
5523 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or | |
5524 @code{<f1>}, represents a function key. (Note that in the standard | |
5525 configuration, the function key @code{<return>} and the control key | |
5526 @key{RET} are synonymous.) You can use angle brackets on the words | |
5527 @key{RET}, @key{SPC}, etc., but they are not required there. | |
5528 | |
5529 @item | |
5530 Keys can be written by their @sc{ascii} code, using a backslash followed | |
5531 by up to six octal digits. This is the only way to represent keys with | |
5532 codes above \377. | |
5533 | |
5534 @item | |
5535 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-} | |
5536 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may | |
5537 precede a character or key notation. For function keys, the prefixes | |
5538 may go inside or outside of the brackets: @code{C-<down>} @equiv{} | |
5539 @code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x} | |
5540 @equiv{} @kbd{C-M-x}. | |
5541 | |
5542 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except | |
5543 that the Meta prefix is allowed on a sequence of digits and optional | |
5544 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}. | |
5545 | |
5546 @item | |
5547 The @code{^} notation for control characters also works: @kbd{^M} | |
5548 @equiv{} @kbd{C-m}. | |
5549 | |
5550 @item | |
5551 Double angle brackets enclose command names: @code{<<next-line>>} is | |
5552 shorthand for @kbd{M-x next-line @key{RET}}. | |
5553 | |
5554 @item | |
5555 Finally, @code{REM} or @code{;;} causes the rest of the line to be | |
5556 ignored as a comment. | |
5557 @end itemize | |
5558 | |
5559 Any word may be prefixed by a multiplier in the form of a decimal number | |
5560 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>}, | |
5561 and @code{10*foo} @equiv{} | |
5562 @iftex | |
5563 @* | |
5564 @end iftex | |
5565 @code{foofoofoofoofoofoofoofoofoofoo}. | |
5566 | |
5567 Multiple text keys can normally be strung together to form a word, but | |
5568 you may need to add whitespace if the word would look like one of the | |
5569 above notations: @code{; ; ;} is a keyboard macro with three semicolons, | |
5570 but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but | |
5571 @code{\123} is a single key written in octal, and @code{< right >} is | |
5572 seven keys but @code{<right>} is a single function key. When in doubt, | |
5573 use whitespace. | |
5574 @end quotation | |
5575 | |
5576 @node Q5.1.4, Q5.1.5, Q5.1.3, Miscellaneous | |
5577 @unnumberedsubsec Q5.1.4: What is the performance hit of @code{let}? | |
5578 | |
5579 In most cases, not noticeable. Besides, there's no avoiding | |
5580 @code{let}---you have to bind your local variables, after all. Some | |
5581 pose a question whether to nest @code{let}s, or use one @code{let} per | |
5582 function. I think because of clarity and maintenance (and possible | |
5583 future implementation), @code{let}-s should be used (nested) in a way to | |
5584 provide the clearest code. | |
5585 | |
5586 @node Q5.1.5, Q5.1.6, Q5.1.4, Miscellaneous | |
5587 @unnumberedsubsec Q5.1.5: What is the recommended use of @code{setq}? | |
5588 | |
5589 @itemize @bullet | |
5590 @item Global variables | |
5591 | |
5592 You will typically @code{defvar} your global variable to a default | |
5593 value, and use @code{setq} to set it later. | |
5594 | |
5595 It is never a good practice to @code{setq} user variables (like | |
5596 @code{case-fold-search}, etc.), as it ignores the user's choice | |
5597 unconditionally. Note that @code{defvar} doesn't change the value of a | |
5598 variable if it was bound previously. If you wish to change a | |
5599 user-variable temporarily, use @code{let}: | |
5600 | |
5601 @lisp | |
5602 (let ((case-fold-search nil)) | |
5603 ... ; code with searches that must be case-sensitive | |
5604 ...) | |
5605 @end lisp | |
5606 | |
5607 You will notice the user-variables by their docstrings beginning with an | |
5608 asterisk (a convention). | |
5609 | |
5610 @item Local variables | |
5611 | |
5612 Bind them with @code{let}, which will unbind them (or restore their | |
5613 previous value, if they were bound) after exiting from the @code{let} | |
5614 form. Change the value of local variables with @code{setq} or whatever | |
5615 you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form | |
5616 can even return one of its local variables. | |
5617 | |
5618 Typical usage: | |
5619 | |
5620 @lisp | |
5621 ;; iterate through the elements of the list returned by | |
5622 ;; `hairy-function-that-returns-list' | |
5623 (let ((l (hairy-function-that-returns-list))) | |
5624 (while l | |
5625 ... do something with (car l) ... | |
5626 (setq l (cdr l)))) | |
5627 @end lisp | |
5628 | |
5629 Another typical usage includes building a value simply to work with it. | |
5630 | |
5631 @lisp | |
5632 ;; Build the mode keymap out of the key-translation-alist | |
5633 (let ((inbox (file-truename (expand-file-name box))) | |
5634 (i 0)) | |
5635 ... code dealing with inbox ... | |
5636 inbox) | |
5637 @end lisp | |
5638 | |
5639 This piece of code uses the local variable @code{inbox}, which becomes | |
5640 unbound (or regains old value) after exiting the form. The form also | |
5641 returns the value of @code{inbox}, which can be reused, for instance: | |
5642 | |
5643 @lisp | |
5644 (setq foo-processed-inbox | |
5645 (let .....)) | |
5646 @end lisp | |
5647 @end itemize | |
5648 | |
5649 @node Q5.1.6, Q5.1.7, Q5.1.5, Miscellaneous | |
5650 @unnumberedsubsec Q5.1.6: What is the typical misuse of @code{setq} ? | |
5651 | |
5652 A typical misuse is probably @code{setq}ing a variable that was meant to | |
5653 be local. Such a variable will remain bound forever, never to be | |
5654 garbage-collected. For example, the code doing: | |
5655 | |
5656 @lisp | |
5657 (defun my-function (whatever) | |
5658 (setq a nil) | |
5659 ... build a large list ... | |
5660 ... and exit ...) | |
5661 @end lisp | |
5662 | |
5663 does a bad thing, as @code{a} will keep consuming memory, never to be | |
5664 unbound. The correct thing is to do it like this: | |
5665 | |
5666 @lisp | |
5667 (defun my-function (whatever) | |
5668 (let (a) ; default initialization is to nil | |
5669 ... build a large list ... | |
5670 ... and exit, unbinding `a' in the process ...) | |
5671 @end lisp | |
5672 | |
5673 Not only is this prettier syntactically, but it makes it possible for | |
5674 Emacs to garbage-collect the objects which @code{a} used to reference. | |
5675 | |
5676 Note that even global variables should not be @code{setq}ed without | |
5677 @code{defvar}ing them first, because the byte-compiler issues warnings. | |
5678 The reason for the warning is the following: | |
5679 | |
5680 @lisp | |
5681 (defun flurgoze nil) ; ok, global internal variable | |
5682 ... | |
5683 | |
5684 (setq flurghoze t) ; ops! a typo, but semantically correct. | |
5685 ; however, the byte-compiler warns. | |
5686 | |
5687 While compiling toplevel forms: | |
5688 ** assignment to free variable flurghoze | |
5689 @end lisp | |
5690 | |
5691 @node Q5.1.7, Q5.1.8, Q5.1.6, Miscellaneous | |
5692 @unnumberedsubsec Q5.1.7: I like the @code{do} form of cl, does it slow things down? | |
5693 | |
5694 It shouldn't. Here is what Dave Gillespie has to say about cl.el | |
5695 performance: | |
5696 | |
5697 @quotation | |
5698 Many of the advanced features of this package, such as @code{defun*}, | |
5699 @code{loop}, and @code{setf}, are implemented as Lisp macros. In | |
5700 byte-compiled code, these complex notations will be expanded into | |
5701 equivalent Lisp code which is simple and efficient. For example, the | |
5702 forms | |
5703 | |
5704 @lisp | |
5705 (incf i n) | |
5706 (push x (car p)) | |
5707 @end lisp | |
5708 | |
5709 are expanded at compile-time to the Lisp forms | |
5710 | |
5711 @lisp | |
5712 (setq i (+ i n)) | |
5713 (setcar p (cons x (car p))) | |
5714 @end lisp | |
5715 | |
5716 which are the most efficient ways of doing these respective operations | |
5717 in Lisp. Thus, there is no performance penalty for using the more | |
5718 readable @code{incf} and @code{push} forms in your compiled code. | |
5719 | |
5720 @emph{Interpreted} code, on the other hand, must expand these macros | |
5721 every time they are executed. For this reason it is strongly | |
5722 recommended that code making heavy use of macros be compiled. (The | |
5723 features labelled @dfn{Special Form} instead of @dfn{Function} in this | |
5724 manual are macros.) A loop using @code{incf} a hundred times will | |
5725 execute considerably faster if compiled, and will also garbage-collect | |
5726 less because the macro expansion will not have to be generated, used, | |
5727 and thrown away a hundred times. | |
5728 | |
5729 You can find out how a macro expands by using the @code{cl-prettyexpand} | |
5730 function. | |
5731 @end quotation | |
5732 | |
5733 @node Q5.1.8, Q5.1.9, Q5.1.7, Miscellaneous | |
5734 @unnumberedsubsec Q5.1.8: I like recursion, does it slow things down? | |
5735 | |
5736 Yes. Emacs byte-compiler cannot do much to optimize recursion. But | |
5737 think well whether this is a real concern in Emacs. Much of the Emacs | |
5738 slowness comes from internal mechanisms such as redisplay, or from the | |
5739 fact that it is an interpreter. | |
5740 | |
5741 Please try not to make your code much uglier to gain a very small speed | |
5742 gain. It's not usually worth it. | |
5743 | |
5744 @node Q5.1.9, Q5.1.10, Q5.1.8, Miscellaneous | |
5745 @unnumberedsubsec Q5.1.9: How do I put a glyph as annotation in a buffer? | |
5746 | |
5747 Here is a solution that will insert the glyph annotation at the | |
5748 beginning of buffer: | |
5749 | |
5750 @lisp | |
5751 (make-annotation (make-glyph '([FORMAT :file FILE] | |
5752 [string :data "fallback-text"])) | |
5753 (point-min) | |
5754 'text | |
5755 (current-buffer)) | |
5756 @end lisp | |
5757 | |
5758 Replace @samp{FORMAT} with an unquoted symbol representing the format of | |
5759 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.) | |
5760 Instead of @samp{FILE}, use the image file name | |
5761 (e.g. | |
5762 @iftex | |
5763 @* | |
5764 @end iftex | |
5765 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}). | |
5766 | |
5767 You can turn this to a function (that optionally prompts you for a file | |
5768 name), and inserts the glyph at @code{(point)} instead of | |
5769 @code{(point-min)}. | |
5770 | |
5771 @node Q5.1.10, Q5.1.11, Q5.1.9, Miscellaneous | |
5772 @unnumberedsubsec Q5.1.10: @code{map-extents} won't traverse all of my extents! | |
5773 | |
5774 I tried to use @code{map-extents} to do an operation on all the extents | |
5775 in a region. However, it seems to quit after processing a random number | |
5776 of extents. Is it buggy? | |
5777 | |
5778 No. The documentation of @code{map-extents} states that it will iterate | |
5779 across the extents as long as @var{function} returns @code{nil}. | |
5780 Unexperienced programmers often forget to return @code{nil} explicitly, | |
5781 which results in buggy code. For instance, the following code is | |
5782 supposed to delete all the extents in a buffer, and issue as many | |
5783 @samp{fubar!} messages. | |
5784 | |
5785 @lisp | |
5786 (map-extents (lambda (ext ignore) | |
5787 (delete-extent ext) | |
5788 (message "fubar!"))) | |
5789 @end lisp | |
5790 | |
5791 Instead, it will delete only the first extent, and stop right there -- | |
5792 because @code{message} will return a non-nil value. The correct code | |
5793 is: | |
5794 | |
5795 @lisp | |
5796 (map-extents (lambda (ext ignore) | |
5797 (delete-extent ext) | |
5798 (message "fubar!") | |
5799 nil)) | |
5800 @end lisp | |
5801 | |
5802 @node Q5.1.11, Q5.2.1, Q5.1.10, Miscellaneous | |
5803 @unnumberedsubsec Q5.1.11: My elisp program is horribly slow. Is there | |
5804 an easy way to find out where it spends time? | |
5805 @c New | |
5806 | |
5807 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes: | |
5808 @quotation | |
5809 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, | |
5810 press a key (say @key{RET} in the Gnus Group buffer), and get the | |
5811 results using @kbd{M-x profile-results}. It should give you an idea of | |
5812 where the time is being spent. | |
5813 @end quotation | |
5814 | |
5815 @node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous | |
5816 @unnumberedsec 5.2: Sound | |
5817 @unnumberedsubsec Q5.2.1: How do I turn off the sound? | |
5818 | |
5819 Add the following line to your @file{init.el}/@file{.emacs}: | |
5820 | |
5821 @lisp | |
5822 (setq bell-volume 0) | |
5823 (setq sound-alist nil) | |
5824 @end lisp | |
5825 | |
5826 That will make your XEmacs totally silent---even the default ding sound | |
5827 (TTY beep on TTY-s) will be gone. | |
5828 | |
5829 Starting with XEmacs 20.2 you can also change these with Customize. | |
5830 Select from the @code{Options} menu | |
5831 @code{Advanced (Customize)->Emacs->Environment->Sound->Sound...} or type | |
5832 @kbd{M-x customize @key{RET} sound @key{RET}}. | |
5833 | |
5834 | |
5835 @node Q5.2.2, Q5.2.3, Q5.2.1, Miscellaneous | |
5836 @unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep? | |
5837 | |
5838 Make sure your XEmacs was compiled with sound support, and then put this | |
5839 in your @file{init.el}/@file{.emacs}: | |
5840 | |
5841 @lisp | |
5842 (load-default-sounds) | |
5843 @end lisp | |
5844 | |
5845 @c The sound support in XEmacs 19.14 was greatly improved over previous | |
5846 @c versions. | |
5847 @c | |
5848 @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous | |
5849 @unnumberedsubsec Q5.2.3: What's NAS, how do I get it? | |
5850 | |
5851 @xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}. | |
5852 | |
5853 @node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous | |
5854 @unnumberedsubsec Q5.2.4: Sunsite sounds don't play. | |
5855 | |
5856 I'm having some trouble with sounds I've downloaded from sunsite. They | |
5857 play when I run them through @code{showaudio} or cat them directly to | |
5858 @file{/dev/audio}, but XEmacs refuses to play them. | |
5859 | |
5860 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes: | |
5861 | |
5862 @quotation | |
5863 [Many of] These files have an (erroneous) 24byte header that tells about | |
5864 the format that they have been recorded in. If you cat them to | |
5865 @file{/dev/audio}, the header will be ignored and the default behavior | |
5866 for /dev/audio will be used. This happens to be 8kHz uLaw. It is | |
5867 probably possible to fix the header by piping through @code{sox} and | |
5868 passing explicit parameters for specifying the sampling format; you then | |
5869 need to perform a 'null' conversion from SunAudio to SunAudio. | |
5870 @end quotation | |
5871 | |
5872 @node Q5.3.1, Q5.3.2, Q5.2.4, Miscellaneous | |
5873 @unnumberedsec 5.3: Miscellaneous | |
5874 @unnumberedsubsec Q5.3.1: How do you make XEmacs indent CL if-clauses correctly? | |
5875 | |
5876 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the | |
5877 same amount instead of indenting the 3rd clause differently from the | |
5878 first two. | |
5879 | |
5880 One way is to add, to @file{init.el}/@file{.emacs}: | |
5881 | |
5882 @lisp | |
5883 (put 'if 'lisp-indent-function nil) | |
5884 @end lisp | |
5885 | |
5886 However, note that the package @code{cl-indent} that comes with | |
5887 XEmacs sets up this kind of indentation by default. @code{cl-indent} | |
5888 also knows about many other CL-specific forms. To use @code{cl-indent}, | |
5889 one can do this: | |
5890 | |
5891 @lisp | |
5892 (load "cl-indent") | |
5893 (setq lisp-indent-function (function common-lisp-indent-function)) | |
5894 @end lisp | |
5895 | |
5896 One can also customize @file{cl-indent.el} so it mimics the default | |
5897 @code{if} indentation @code{then} indented more than the @code{else}. | |
5898 Here's how: | |
5899 | |
5900 @lisp | |
5901 (put 'if 'common-lisp-indent-function '(nil nil &body)) | |
5902 @end lisp | |
5903 | |
5904 Also, a new version (1.2) of @file{cl-indent.el} was posted to | |
5905 comp.emacs.xemacs on 12/9/94. This version includes more documentation | |
5906 than previous versions. This may prove useful if you need to customize | |
5907 any indent-functions. | |
5908 | |
5909 @node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous | |
5910 @unnumberedsubsec Q5.3.2: [This question intentionally left blank] | |
5911 | |
5912 Obsolete question, left blank to avoid renumbering. | |
5913 | |
5914 @node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous | |
5915 @unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer? | |
5916 | |
5917 Font-lock looks nice. How can I print (WYSIWYG) the highlighted | |
5918 document? | |
5919 | |
5920 The package @code{ps-print}, which is now included with XEmacs, provides | |
5921 the ability to do this. The source code contains complete instructions | |
5922 on its use, in | |
5923 @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el}, | |
5924 being the default location of an installed ps-print package. | |
5925 | |
5926 @node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous | |
5927 @unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer. | |
5928 | |
5929 My printer is a Postscript printer and @code{lpr} only works for | |
5930 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x | |
5931 lpr-buffer} to work? | |
5932 | |
5933 Put something like this in your @file{init.el}/@file{.emacs}: | |
5934 | |
5935 @lisp | |
5936 (setq lpr-command "a2ps") | |
5937 (setq lpr-switches '("-p" "-1")) | |
5938 @end lisp | |
5939 | |
5940 If you don't use a2ps to convert ASCII to postscript (why not, it's | |
5941 free?), replace with the command you do use. Note also that some | |
5942 versions of a2ps require a @samp{-Pprinter} to ensure spooling. | |
5943 | |
5944 @node Q5.3.5, Q5.3.6, Q5.3.4, Miscellaneous | |
5945 @unnumberedsubsec Q5.3.5: How do I specify the paths that XEmacs uses for finding files? | |
5946 | |
5947 You can specify what paths to use by using a number of different flags | |
5948 when running configure. See the section MAKE VARIABLES in the top-level | |
5949 file INSTALL in the XEmacs distribution for a listing of those flags. | |
5950 | |
5951 Most of the time, however, the simplest fix is: @strong{do not} specify | |
5952 paths as you might for GNU Emacs. XEmacs can generally determine the | |
5953 necessary paths dynamically at run time. The only path that generally | |
5954 needs to be specified is the root directory to install into. That can | |
5955 be specified by passing the @code{--prefix} flag to configure. For a | |
5956 description of the XEmacs install tree, please consult the @file{NEWS} | |
5957 file. | |
5958 | |
5959 @node Q5.3.6, Q5.3.7, Q5.3.5, Miscellaneous | |
5960 @unnumberedsubsec Q5.3.6: [This question intentionally left blank] | |
5961 | |
5962 Obsolete question, left blank to avoid renumbering. | |
5963 | |
5964 @node Q5.3.7, Q5.3.8, Q5.3.6, Miscellaneous | |
5965 @unnumberedsubsec Q5.3.7: Can I have the end of the buffer delimited in some way? | |
5966 | 4753 |
5967 Say, with: @samp{[END]}? | 4754 Say, with: @samp{[END]}? |
5968 | 4755 |
5969 Try this: | 4756 Try this: |
5970 | 4757 |
6021 @end lisp | 4808 @end lisp |
6022 | 4809 |
6023 Note that you might want to make this a function, and put it to a hook. | 4810 Note that you might want to make this a function, and put it to a hook. |
6024 We leave that as an exercise for the reader. | 4811 We leave that as an exercise for the reader. |
6025 | 4812 |
6026 @node Q5.3.8, Q5.3.9, Q5.3.7, Miscellaneous | 4813 @node Q3.8.2, Q3.8.3, Q3.8.1, Display Subsystems |
6027 @unnumberedsubsec Q5.3.8: How do I insert today's date into a buffer? | 4814 @unnumberedsubsec Q3.8.2: How do I insert today's date into a buffer? |
6028 | 4815 |
6029 Like this: | 4816 Like this: |
6030 | 4817 |
6031 @lisp | 4818 @lisp |
6032 (insert (current-time-string)) | 4819 (insert (current-time-string)) |
6033 @end lisp | 4820 @end lisp |
6034 | 4821 |
6035 @node Q5.3.9, Q5.3.10, Q5.3.8, Miscellaneous | 4822 @node Q3.8.3, Q3.8.4, Q3.8.2, Display Subsystems |
6036 @unnumberedsubsec Q5.3.9: Are only certain syntactic character classes available for abbrevs? | 4823 @unnumberedsubsec Q3.8.3: How do I get a single minibuffer frame? |
4824 | |
4825 @email{acs@@acm.org, Vin Shelton} writes: | |
4826 | |
4827 @lisp | |
4828 (setq initial-frame-plist '(minibuffer nil)) | |
4829 (setq default-frame-plist '(minibuffer nil)) | |
4830 (setq default-minibuffer-frame | |
4831 (make-frame | |
4832 '(minibuffer only | |
4833 width 86 | |
4834 height 1 | |
4835 menubar-visible-p nil | |
4836 default-toolbar-visible-p nil | |
4837 name "minibuffer" | |
4838 top -2 | |
4839 left -2 | |
4840 has-modeline-p nil))) | |
4841 (frame-notice-user-settings) | |
4842 @end lisp | |
4843 | |
4844 @strong{Please note:} The single minibuffer frame may not be to everyone's | |
4845 taste, and there any number of other XEmacs options settings that may | |
4846 make it difficult or inconvenient to use. | |
4847 | |
4848 @node Q3.8.4, Q3.8.5, Q3.8.3, Display Subsystems | |
4849 @unnumberedsubsec Q3.8.4: How can I enable auto-indent and/or Filladapt? | |
4850 | |
4851 Put the following line in your @file{init.el}: | |
4852 | |
4853 @lisp | |
4854 (setq indent-line-function 'indent-relative-maybe) | |
4855 @end lisp | |
4856 | |
4857 If you want to get fancy, try the @code{filladapt} package available | |
4858 standard with XEmacs. Put this into your @file{init.el}: | |
4859 | |
4860 @lisp | |
4861 (require 'filladapt) | |
4862 (setq-default filladapt-mode t) | |
4863 (add-hook 'c-mode-hook 'turn-off-filladapt-mode) | |
4864 @end lisp | |
4865 | |
4866 This will enable Filladapt for all modes except C mode, where it doesn't | |
4867 work well. To turn Filladapt on only in particular major modes, remove | |
4868 the @code{(setq-default ...)} line and use | |
4869 @code{turn-on-filladapt-mode}, like this: | |
4870 | |
4871 @lisp | |
4872 (add-hook 'text-mode-hook 'turn-on-filladapt-mode) | |
4873 @end lisp | |
4874 | |
4875 You can customize filling and adaptive filling with Customize. | |
4876 Select from the @code{Options} menu | |
4877 @code{Advanced (Customize)->Emacs->Editing->Fill->Fill...} | |
4878 or type @kbd{M-x customize @key{RET} fill @key{RET}}. | |
4879 | |
4880 Note that well-behaving text-lookalike modes will run | |
4881 @code{text-mode-hook} by default (e.g. that's what Message does). For | |
4882 the nasty ones, you'll have to provide the @code{add-hook}s yourself. | |
4883 | |
4884 Please note that the @code{fa-extras} package is no longer useful. | |
4885 | |
4886 @node Q3.8.5, Q3.9.1, Q3.8.4, Display Subsystems | |
4887 @unnumberedsubsec Q3.8.5: How can I get XEmacs to come up in text/auto-fill mode by default? | |
4888 | |
4889 Try the following lisp in your @file{init.el}: | |
4890 | |
4891 @lisp | |
4892 (setq default-major-mode 'text-mode) | |
4893 (setq text-mode-hook 'turn-on-auto-fill) | |
4894 @end lisp | |
4895 | |
4896 @strong{WARNING}: note that changing the value of | |
4897 @code{default-major-mode} from @code{fundamental-mode} can break a large | |
4898 amount of built-in code that expects newly created buffers to be in | |
4899 @code{fundamental-mode}. (Changing from @code{fundamental-mode} to | |
4900 @code{text-mode} might not wreak too much havoc, but changing to | |
4901 something more exotic like a lisp-mode would break many Emacs packages). | |
4902 | |
4903 Note that Emacs by default starts up in buffer @code{*scratch*} in | |
4904 @code{initial-major-mode}, which defaults to | |
4905 @code{lisp-interaction-mode}. Thus adding the following form to your | |
4906 Emacs init file will cause the initial @code{*scratch*} buffer to be put | |
4907 into auto-fill'ed @code{text-mode}: | |
4908 | |
4909 @lisp | |
4910 (setq initial-major-mode | |
4911 (lambda () | |
4912 (text-mode) | |
4913 (turn-on-auto-fill))) | |
4914 @end lisp | |
4915 | |
4916 Note that after your init file is loaded, if | |
4917 @code{inhibit-startup-message} is @code{nil} (the default) and the | |
4918 startup buffer is @code{*scratch*} then the startup message will be | |
4919 inserted into @code{*scratch*}; it will be removed after a timeout by | |
4920 erasing the entire @code{*scratch*} buffer. Keep in mind this default | |
4921 usage of @code{*scratch*} if you desire any prior manipulation of | |
4922 @code{*scratch*} from within your Emacs init file. In particular, | |
4923 anything you insert into @code{*scratch*} from your init file will be | |
4924 later erased. Also, if you change the mode of the @code{*scratch*} | |
4925 buffer, be sure that this will not interfere with possible later | |
4926 insertion of the startup message (e.g. if you put @code{*scratch*} into | |
4927 a nonstandard mode that has automatic font lock rules, then the startup | |
4928 message might get fontified in a strange foreign manner, e.g. as code in | |
4929 some programming language). | |
4930 | |
4931 @unnumberedsec 3.9: Editing Source Code | |
4932 | |
4933 @node Q3.9.1, Q3.9.2, Q3.8.5, Display Subsystems | |
4934 @unnumberedsubsec Q3.9.1: How can I do source code highlighting using font-lock? | |
4935 | |
4936 For most modes, font-lock is already set up and just needs to be turned | |
4937 on. This can be done by adding the line: | |
4938 | |
4939 @lisp | |
4940 (require 'font-lock) | |
4941 @end lisp | |
4942 | |
4943 to your @file{init.el}. (You can turn it on for the | |
4944 current buffer and session only by @kbd{M-x font-lock-mode}.) See the | |
4945 file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs | |
4946 versions prior to 21.4) for more information. | |
4947 | |
4948 @c the old way: | |
4949 @c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) | |
4950 @c (add-hook 'dired-mode-hook 'turn-on-font-lock) | |
4951 | |
4952 See also @code{Syntax Highlighting} from the @code{Options} menu. | |
4953 Remember to save options. | |
4954 | |
4955 @node Q3.9.2, Q3.9.3, Q3.9.1, Display Subsystems | |
4956 @unnumberedsubsec Q3.9.2: How do I get @samp{More} Syntax Highlighting on by default? | |
4957 | |
4958 Use the following code in your @file{init.el}: | |
4959 | |
4960 @lisp | |
4961 (setq-default font-lock-maximum-decoration t) | |
4962 @end lisp | |
4963 | |
4964 See also @code{Syntax Highlighting} from the @code{Options} menu. | |
4965 Remember to save options. | |
4966 | |
4967 @node Q3.9.3, Q3.9.4, Q3.9.2, Display Subsystems | |
4968 @unnumberedsubsec Q3.9.3: Where do I get the latest CC Mode? | |
4969 | |
4970 @email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes: | |
4971 | |
4972 @quotation | |
4973 This can be had from @uref{http://www.python.org/emacs/}. | |
4974 @end quotation | |
4975 | |
4976 @node Q3.9.4, Q3.9.5, Q3.9.3, Display Subsystems | |
4977 @unnumberedsubsec Q3.9.4: I do not like cc-mode. How do I use the old c-mode? | |
4978 | |
4979 Well, first off, consider if you really want to do this. cc-mode is | |
4980 much more powerful than the old c-mode. If you're having trouble | |
4981 getting your old offsets to work, try using @code{c-set-offset} instead. | |
4982 You might also consider using the package @code{cc-compat}. | |
4983 | |
4984 But, if you still insist, add the following lines to your @file{init.el}: | |
4985 | |
4986 @lisp | |
4987 (fmakunbound 'c-mode) | |
4988 (makunbound 'c-mode-map) | |
4989 (fmakunbound 'c++-mode) | |
4990 (makunbound 'c++-mode-map) | |
4991 (makunbound 'c-style-alist) | |
4992 (load-library "old-c-mode") | |
4993 (load-library "old-c++-mode") | |
4994 @end lisp | |
4995 | |
4996 This must be done before any other reference is made to either c-mode or | |
4997 c++-mode. | |
4998 | |
4999 @node Q3.9.5, , Q3.9.4, Display Subsystems | |
5000 @unnumberedsubsec Q3.9.5: How do you make XEmacs indent CL if-clauses correctly? | |
5001 | |
5002 I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the | |
5003 same amount instead of indenting the 3rd clause differently from the | |
5004 first two. | |
5005 | |
5006 One way is to add, to @file{init.el}: | |
5007 | |
5008 @lisp | |
5009 (put 'if 'lisp-indent-function nil) | |
5010 @end lisp | |
5011 | |
5012 However, note that the package @code{cl-indent} that comes with | |
5013 XEmacs sets up this kind of indentation by default. @code{cl-indent} | |
5014 also knows about many other CL-specific forms. To use @code{cl-indent}, | |
5015 one can do this: | |
5016 | |
5017 @lisp | |
5018 (load "cl-indent") | |
5019 (setq lisp-indent-function (function common-lisp-indent-function)) | |
5020 @end lisp | |
5021 | |
5022 One can also customize @file{cl-indent.el} so it mimics the default | |
5023 @code{if} indentation @code{then} indented more than the @code{else}. | |
5024 Here's how: | |
5025 | |
5026 @lisp | |
5027 (put 'if 'common-lisp-indent-function '(nil nil &body)) | |
5028 @end lisp | |
5029 | |
5030 Also, a new version (1.2) of @file{cl-indent.el} was posted to | |
5031 comp.emacs.xemacs on 12/9/94. This version includes more documentation | |
5032 than previous versions. This may prove useful if you need to customize | |
5033 any indent-functions. | |
5034 | |
5035 @node External Subsystems, Internet, Display Subsystems, Top | |
5036 @unnumbered 4 Interfacing with the Operating System and External Devices | |
5037 | |
5038 This is part 4 of the XEmacs Frequently Asked Questions list. This | |
5039 section is devoted to the various ways that XEmacs interfaces with the | |
5040 operating system, with other processes and with external devices such | |
5041 as speakers and the printer. | |
5042 | |
5043 @menu | |
5044 4.0: X Window System and Resources | |
5045 * Q4.0.1:: Where is a list of X resources? | |
5046 * Q4.0.2:: How can I detect a color display? | |
5047 * Q4.0.3:: How can I get the icon to just say @samp{XEmacs}? | |
5048 * Q4.0.4:: How can I have the window title area display the full path? | |
5049 * Q4.0.5:: @samp{xemacs -name junk} doesn't work? | |
5050 * Q4.0.6:: @samp{-iconic} doesn't work. | |
5051 | |
5052 4.1: Microsoft Windows | |
5053 * Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? | |
5054 * Q4.1.2:: How do I get Windows Explorer to associate a file type with XEmacs? | |
5055 | |
5056 4.2: Printing | |
5057 * Q4.2.1:: What do I need to change to make printing work? | |
5058 * Q4.2.2:: How can I print WYSIWYG a font-locked buffer? | |
5059 * Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. | |
5060 * Q4.2.4:: Can you print under MS Windows? | |
5061 | |
5062 4.3: Sound | |
5063 * Q4.3.1:: How do I turn off the sound? | |
5064 * Q4.3.2:: How do I get funky sounds instead of a boring beep? | |
5065 * Q4.3.3:: What's NAS, how do I get it? | |
5066 * Q4.3.4:: Sunsite sounds don't play. | |
5067 | |
5068 4.4: Running an Interior Shell, Invoking Subprocesses | |
5069 * Q4.4.1:: What is an interior shell? | |
5070 * Q4.4.2:: How do I start up a second shell buffer? | |
5071 * Q4.4.3:: Telnet from shell filters too much | |
5072 * Q4.4.4:: Strange things are happening in Shell Mode. | |
5073 * Q4.4.5:: XEmacs complains "No such file or directory, diff" | |
5074 | |
5075 4.5: Multiple Device Support | |
5076 * Q4.5.1:: How do I open a frame on another screen of my multi-headed display? | |
5077 * Q4.5.2:: Can I really connect to a running XEmacs after calling up over a modem? How? | |
5078 * Q4.5.3:: How do I disable gnuserv from opening a new frame? | |
5079 * Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a client? | |
5080 * Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? | |
5081 | |
5082 4.6: TeX | |
5083 * Q4.6.1:: Is there something better than LaTeX mode? | |
5084 * Q4.6.2:: What is AUCTeX? Where do you get it? | |
5085 * Q4.6.3:: Problems installing AUCTeX. | |
5086 * Q4.6.4:: How do I turn off current chapter from AUCTeX modeline? | |
5087 | |
5088 4.7: Other Unbundled Packages | |
5089 * Q4.7.1:: Is there a reason for an Emacs package not to be included in XEmacs? | |
5090 * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? | |
5091 * Q4.7.3:: Is there a MatLab mode? | |
5092 | |
5093 4.8: Environments Built Around XEmacs | |
5094 * Q4.8.1:: What are SPARCworks, EOS, and WorkShop? | |
5095 * Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21? | |
5096 * Q4.8.3:: What is/was Energize? | |
5097 * Q4.8.4:: What is Infodock? | |
5098 @end menu | |
5099 | |
5100 @unnumberedsec 4.0: X Window System and Resources | |
5101 | |
5102 @node Q4.0.1, Q4.0.2, External Subsystems, External Subsystems | |
5103 @unnumberedsubsec Q4.0.1: Where is a list of X resources? | |
5104 | |
5105 Search through the @file{NEWS} file for @samp{X Resources}. A fairly | |
5106 comprehensive list is given after it. | |
5107 | |
5108 In addition, an @file{app-defaults} file @file{etc/Emacs.ad} is | |
5109 supplied, listing the defaults. The file @file{etc/sample.Xresources} | |
5110 gives a different set of defaults that you might consider for | |
5111 installation in your @file{~/.Xresources} file. It is nearly the same | |
5112 as @file{etc/Emacs.ad}, but a few entries are altered. Be careful about | |
5113 installing the contents of this file into your @file{.Xresources} (or | |
5114 legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well. | |
5115 | |
5116 @node Q4.0.2, Q4.0.3, Q4.0.1, External Subsystems | |
5117 @unnumberedsubsec Q4.0.2: How can I detect a color display? | |
5118 | |
5119 You can test the return value of the function @code{(device-class)}, as | |
5120 in: | |
5121 | |
5122 @lisp | |
5123 (when (eq (device-class) 'color) | |
5124 (set-face-foreground 'font-lock-comment-face "Grey") | |
5125 (set-face-foreground 'font-lock-string-face "Red") | |
5126 .... | |
5127 ) | |
5128 @end lisp | |
5129 | |
5130 @node Q4.0.3, Q4.0.4, Q4.0.2, External Subsystems | |
5131 @unnumberedsubsec Q4.0.3: How can I get the icon to just say @samp{XEmacs}? | |
5132 | |
5133 I'd like the icon to just say @samp{XEmacs}, and not include the name of | |
5134 the current file in it. | |
5135 | |
5136 Add the following line to your @file{init.el}: | |
5137 | |
5138 @lisp | |
5139 (setq frame-icon-title-format "XEmacs") | |
5140 @end lisp | |
5141 | |
5142 @node Q4.0.4, Q4.0.5, Q4.0.3, External Subsystems | |
5143 @unnumberedsubsec Q4.0.4: How can I have the window title area display the full path? | |
5144 | |
5145 I'd like to have the window title area display the full directory/name | |
5146 of the current buffer file and not just the name. | |
5147 | |
5148 Add the following line to your @file{init.el}: | |
5149 | |
5150 @lisp | |
5151 (setq frame-title-format "%S: %f") | |
5152 @end lisp | |
5153 | |
5154 A more sophisticated title might be: | |
5155 | |
5156 @lisp | |
5157 (setq frame-title-format | |
5158 '("%S: " (buffer-file-name "%f" | |
5159 (dired-directory dired-directory "%b")))) | |
5160 @end lisp | |
5161 | |
5162 That is, use the file name, or the dired-directory, or the buffer name. | |
5163 | |
5164 @node Q4.0.5, Q4.0.6, Q4.0.4, External Subsystems | |
5165 @unnumberedsubsec Q4.0.5: @samp{xemacs -name junk} doesn't work? | |
5166 | |
5167 When I run @samp{xterm -name junk}, I get an xterm whose class name | |
5168 according to xprop, is @samp{junk}. This is the way it's supposed to | |
5169 work, I think. When I run @samp{xemacs -name junk} the class name is | |
5170 not set to @samp{junk}. It's still @samp{emacs}. What does | |
5171 @samp{xemacs -name} really do? The reason I ask is that my window | |
5172 manager (fvwm) will make a window sticky and I use XEmacs to read my | |
5173 mail. I want that XEmacs window to be sticky, without having to use the | |
5174 window manager's function to set the window sticky. What gives? | |
5175 | |
5176 @samp{xemacs -name} sets the application name for the program (that is, | |
5177 the thing which normally comes from @samp{argv[0]}). Using @samp{-name} | |
5178 is the same as making a copy of the executable with that new name. The | |
5179 @code{WM_CLASS} property on each frame is set to the frame-name, and the | |
5180 application-class. So, if you did @samp{xemacs -name FOO} and then | |
5181 created a frame named @var{BAR}, you'd get an X window with WM_CLASS = | |
5182 @code{( "BAR", "Emacs")}. However, the resource hierarchy for this | |
5183 widget would be: | |
5184 | |
5185 @example | |
5186 Name: FOO .shell .container .BAR | |
5187 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame | |
5188 @end example | |
5189 | |
5190 instead of the default | |
5191 | |
5192 @example | |
5193 Name: xemacs.shell .container .emacs | |
5194 Class: Emacs .TopLevelEmacsShell.EmacsManager.EmacsFrame | |
5195 @end example | |
5196 | |
5197 | |
5198 It is arguable that the first element of WM_CLASS should be set to the | |
5199 application-name instead of the frame-name, but I think that's less | |
5200 flexible, since it does not give you the ability to have multiple frames | |
5201 with different WM_CLASS properties. Another possibility would be for | |
5202 the default frame name to come from the application name instead of | |
5203 simply being @samp{emacs}. However, at this point, making that change | |
5204 would be troublesome: it would mean that many users would have to make | |
5205 yet another change to their resource files (since the default frame name | |
5206 would suddenly change from @samp{emacs} to @samp{xemacs}, or whatever | |
5207 the executable happened to be named), so we'd rather avoid it. | |
5208 | |
5209 To make a frame with a particular name use: | |
5210 | |
5211 @lisp | |
5212 (make-frame '((name . "the-name"))) | |
5213 @end lisp | |
5214 | |
5215 @node Q4.0.6, Q4.1.1, Q4.0.5, External Subsystems | |
5216 @unnumberedsubsec Q4.0.6: @samp{-iconic} doesn't work. | |
5217 | |
5218 When I start up XEmacs using @samp{-iconic} it doesn't work right. | |
5219 Using @samp{-unmapped} on the command line, and setting the | |
5220 @code{initiallyUnmapped} X Resource don't seem to help much either... | |
5221 | |
5222 @email{ben@@xemacs.org, Ben Wing} writes: | |
5223 | |
5224 @quotation | |
5225 Ugh, this stuff is such an incredible mess that I've about given up | |
5226 getting it to work. The principal problem is numerous window-manager | |
5227 bugs... | |
5228 @end quotation | |
5229 | |
5230 @unnumberedsec 4.1: Microsoft Windows | |
5231 | |
5232 @node Q4.1.1, Q4.1.2, Q4.0.6, External Subsystems | |
5233 @unnumberedsubsec Q4.1.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? | |
5234 | |
5235 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*} | |
5236 symbols to @samp{w32-*}. Does XEmacs do the same? | |
5237 | |
5238 We consider such a move counter-productive, thus we do not use the | |
5239 @samp{w32} prefix. (His rather questionable justification was that he | |
5240 did not consider Windows to be a "winning" platform.) However, the name | |
5241 @samp{Win32} is not particularly descriptive outside the Windows world, | |
5242 and using just @samp{windows-} would be too generic. So we chose a | |
5243 compromise, the prefix @samp{mswindows-} for Windows-related variables | |
5244 and functions. | |
5245 | |
5246 Thus all the XEmacs variables and functions directly related to either | |
5247 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a | |
5248 couple of debugging variables, prefixed @samp{debug-mswindows-}). From | |
5249 an architectural perspective, however, we believe that this is mostly a | |
5250 non-issue because there should be a very small number of | |
5251 window-systems-specific variables anyway. Whenever possible, we try to | |
5252 provide generic interfaces that apply to all window systems. | |
5253 | |
5254 @c not true: | |
5255 @c The user variables | |
5256 @c that share functionality with existing NT Emacs variables are be named | |
5257 @c with our convention, but we provide the GNU Emacs names as | |
5258 @c compatibility aliases. | |
5259 | |
5260 @node Q4.1.2, Q4.2.1, Q4.1.1, External Subsystems | |
5261 @unnumberedsubsec Q4.1.2: How do I get Windows Explorer to associate a file type with XEmacs? | |
5262 | |
5263 @unnumberedsubsubsec Associating a new file type with XEmacs. | |
5264 | |
5265 In Explorer select @samp{View->Options->File Types}, press @samp{[New | |
5266 Type...]} and fill in the dialog box, e.g.: | |
5267 | |
5268 @example | |
5269 Description of type: Emacs Lisp source | |
5270 Associated extension: el | |
5271 Content Type (MIME): text/plain | |
5272 @end example | |
5273 | |
5274 then press @samp{[New...]} and fill in the @samp{Action} dialog box as | |
5275 follows: | |
5276 | |
5277 @example | |
5278 Action: | |
5279 Open | |
5280 | |
5281 Application used to perform action: | |
5282 D:\Full\path\for\xemacs.exe "%1" | |
5283 | |
5284 [x] Use DDE | |
5285 | |
5286 DDE Message: | |
5287 open("%1") | |
5288 | |
5289 Application: | |
5290 <leave blank> | |
5291 | |
5292 DDE Application Not Running: | |
5293 <leave blank> | |
5294 | |
5295 Topic: | |
5296 <leave blank> | |
5297 @end example | |
5298 | |
5299 @unnumberedsubsubsec Associating an existing file type with XEmacs. | |
5300 | |
5301 In Explorer select @samp{View->Options->File Types}. Click on the file | |
5302 type in the list and press @samp{[Edit...]}. If the file type already | |
5303 has an @samp{Open} action, double click on it and fill in the | |
5304 @samp{Action} dialog box as described above; otherwise create a new | |
5305 action. | |
5306 | |
5307 If the file type has more than one action listed, you probably want to | |
5308 make the @samp{Open} action that you just edited the default by clicking on | |
5309 it and pressing @samp{Set Default}. | |
5310 | |
5311 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types} | |
5312 using @samp{Control Panel->Folder Options->File Types}. | |
5313 | |
5314 @unnumberedsec 4.2: Printing | |
5315 | |
5316 @node Q4.2.1, Q4.2.2, Q4.1.2, External Subsystems | |
5317 @unnumberedsubsec Q4.2.1: What do I need to change to make printing work? | |
5318 | |
5319 For regular printing there are two variables that can be customized. | |
5320 | |
5321 @table @code | |
5322 @item lpr-command | |
5323 This should be set to a command that takes standard input and sends | |
5324 it to a printer. Something like: | |
5325 | |
5326 @lisp | |
5327 (setq lpr-command "lp") | |
5328 @end lisp | |
5329 | |
5330 @item lpr-switches | |
5331 This should be set to a list that contains whatever the print command | |
5332 requires to do its job. Something like: | |
5333 | |
5334 @lisp | |
5335 (setq lpr-switches '("-depson")) | |
5336 @end lisp | |
5337 @end table | |
5338 | |
5339 For postscript printing there are three analogous variables to | |
5340 customize. | |
5341 | |
5342 @table @code | |
5343 @item ps-lpr-command | |
5344 This should be set to a command that takes postscript on standard input | |
5345 and directs it to a postscript printer. | |
5346 | |
5347 @item ps-lpr-switches | |
5348 This should be set to a list of switches required for | |
5349 @code{ps-lpr-command} to do its job. | |
5350 | |
5351 @item ps-print-color-p | |
5352 This boolean variable should be set @code{t} if printing will be done in | |
5353 color, otherwise it should be set to @code{nil}. | |
5354 @end table | |
5355 | |
5356 NOTE: It is an undocumented limitation in XEmacs that postscript | |
5357 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a | |
5358 window system environment. It cannot be used outside of X11. | |
5359 | |
5360 @node Q4.2.2, Q4.2.3, Q4.2.1, External Subsystems | |
5361 @unnumberedsubsec Q4.2.2: How can I print WYSIWYG a font-locked buffer? | |
5362 | |
5363 Font-lock looks nice. How can I print (WYSIWYG) the highlighted | |
5364 document? | |
5365 | |
5366 The package @code{ps-print}, which is now included with XEmacs, provides | |
5367 the ability to do this. The source code contains complete instructions | |
5368 on its use, in | |
5369 @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el}, | |
5370 being the default location of an installed ps-print package. | |
5371 | |
5372 @node Q4.2.3, Q4.2.4, Q4.2.2, External Subsystems | |
5373 @unnumberedsubsec Q4.2.3: Getting @kbd{M-x lpr} to work with postscript printer. | |
5374 | |
5375 My printer is a Postscript printer and @code{lpr} only works for | |
5376 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x | |
5377 lpr-buffer} to work? | |
5378 | |
5379 Put something like this in your @file{init.el}: | |
5380 | |
5381 @lisp | |
5382 (setq lpr-command "a2ps") | |
5383 (setq lpr-switches '("-p" "-1")) | |
5384 @end lisp | |
5385 | |
5386 If you don't use a2ps to convert ASCII to postscript (why not, it's | |
5387 free?), replace with the command you do use. Note also that some | |
5388 versions of a2ps require a @samp{-Pprinter} to ensure spooling. | |
5389 | |
5390 @node Q4.2.4, Q4.3.1, Q4.2.3, External Subsystems | |
5391 @unnumberedsubsec Q4.2.4: Can you print under MS Windows? | |
5392 | |
5393 As of 21.4, printing works on Windows, using simply | |
5394 @samp{File->Print BUFFER...}, and can be configured with | |
5395 @samp{File->Page Setup...}. | |
5396 | |
5397 Prior to 21.4, there is no built-in support, but there are some clever | |
5398 hacks out there. If you know how, please let us know and we'll put it | |
5399 here. | |
5400 | |
5401 @unnumberedsec 4.3: Sound | |
5402 | |
5403 @node Q4.3.1, Q4.3.2, Q4.2.4, External Subsystems | |
5404 @unnumberedsubsec Q4.3.1: How do I turn off the sound? | |
5405 | |
5406 Add the following line to your @file{init.el}: | |
5407 | |
5408 @lisp | |
5409 (setq bell-volume 0) | |
5410 (setq sound-alist nil) | |
5411 @end lisp | |
5412 | |
5413 That will make your XEmacs totally silent---even the default ding sound | |
5414 (TTY beep on TTY-s) will be gone. | |
5415 | |
5416 You can also change these with Customize. Select from the | |
5417 @code{Options} menu @code{Advanced | |
5418 (Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x | |
5419 customize @key{RET} sound @key{RET}}. | |
5420 | |
5421 | |
5422 @node Q4.3.2, Q4.3.3, Q4.3.1, External Subsystems | |
5423 @unnumberedsubsec Q4.3.2: How do I get funky sounds instead of a boring beep? | |
5424 | |
5425 Make sure your XEmacs was compiled with sound support, and then put this | |
5426 in your @file{init.el}: | |
5427 | |
5428 @lisp | |
5429 (load-default-sounds) | |
5430 @end lisp | |
5431 | |
5432 @node Q4.3.3, Q4.3.4, Q4.3.2, External Subsystems | |
5433 @unnumberedsubsec Q4.3.3: What's NAS, how do I get it? | |
5434 | |
5435 @xref{Q2.1.3, Compiling XEmacs with Netaudio}, for an explanation of | |
5436 the @dfn{Network Audio System}. | |
5437 | |
5438 @node Q4.3.4, Q4.4.1, Q4.3.3, External Subsystems | |
5439 @unnumberedsubsec Q4.3.4: Sunsite sounds don't play. | |
5440 | |
5441 I'm having some trouble with sounds I've downloaded from sunsite. They | |
5442 play when I run them through @code{showaudio} or cat them directly to | |
5443 @file{/dev/audio}, but XEmacs refuses to play them. | |
6037 | 5444 |
6038 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes: | 5445 @email{gutschk@@uni-muenster.de, Markus Gutschke} writes: |
6039 | 5446 |
6040 @quotation | 5447 @quotation |
6041 Yes, abbrevs only expands word-syntax strings. While XEmacs does not | 5448 [Many of] These files have an (erroneous) 24byte header that tells about |
6042 prevent you from defining (e.g. with @kbd{C-x a g} or @kbd{C-x a l}) | 5449 the format that they have been recorded in. If you cat them to |
6043 abbrevs that contain special characters, it will refuse to expand | 5450 @file{/dev/audio}, the header will be ignored and the default behavior |
6044 them. So you need to ensure, that the abbreviation contains letters and | 5451 for /dev/audio will be used. This happens to be 8kHz uLaw. It is |
6045 digits only. This means that @samp{xd}, @samp{d5}, and @samp{5d} are | 5452 probably possible to fix the header by piping through @code{sox} and |
6046 valid abbrevs, but @samp{&d}, and @samp{x d} are not. | 5453 passing explicit parameters for specifying the sampling format; you then |
6047 | 5454 need to perform a 'null' conversion from SunAudio to SunAudio. |
6048 If this sounds confusing to you, (re-)read the online documentation for | |
6049 abbrevs (@kbd{C-h i m XEmacs @key{RET} m Abbrevs @key{RET}}), and then come back and | |
6050 read this question/answer again. | |
6051 @end quotation | 5455 @end quotation |
6052 | 5456 |
6053 Starting with XEmacs 20.3 this restriction has been lifted. | 5457 @unnumberedsec 4.4: Running an Interior Shell, Invoking Subprocesses |
6054 | 5458 |
6055 @node Q5.3.10, Q5.3.11, Q5.3.9, Miscellaneous | 5459 @node Q4.4.1, Q4.4.2, Q4.3.4, External Subsystems |
6056 @unnumberedsubsec Q5.3.10: How can I get those oh-so-neat X-Face lines? | 5460 @unnumberedsubsec Q4.4.1: What is an interior shell? |
5461 | |
5462 #### Write me. | |
5463 | |
5464 @node Q4.4.2, Q4.4.3, Q4.4.1, External Subsystems | |
5465 @unnumberedsubsec Q4.4.2: How do I start up a second shell buffer? | |
5466 | |
5467 In the @code{*shell*} buffer: | |
5468 | |
5469 @lisp | |
5470 M-x rename-buffer @key{RET} *shell-1* @key{RET} | |
5471 M-x shell RET | |
5472 @end lisp | |
5473 | |
5474 This will then start a second shell. The key is that no buffer named | |
5475 @samp{*shell*} can exist. It might be preferable to use @kbd{M-x | |
5476 rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x | |
5477 rename-buffer}. | |
5478 | |
5479 Alternately, you can set the variable @code{shell-multiple-shells}. | |
5480 If the value of this variable is non-nil, each time shell mode is invoked, | |
5481 a new shell is made | |
5482 | |
5483 @node Q4.4.3, Q4.4.4, Q4.4.2, External Subsystems | |
5484 @unnumberedsubsec Q4.4.3: Telnet from shell filters too much | |
5485 | |
5486 I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke | |
5487 and use a telnet session within it. Everything works fine except that | |
5488 now all @samp{^M}'s are filtered out by Emacs. Fixes? | |
5489 | |
5490 Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather | |
5491 than doing rsh or telnet within the local shell buffer. You can also | |
5492 use @kbd{M-x ssh} to open secure remote session if you have @code{ssh} | |
5493 installed. | |
5494 | |
5495 @node Q4.4.4, Q4.4.5, Q4.4.3, External Subsystems | |
5496 @unnumberedsubsec Q4.4.4: Strange things are happening in Shell Mode. | |
5497 | |
5498 Sometimes (i.e. it's not repeatable, and I can't work out why it | |
5499 happens) when I'm typing into shell mode, I hit return and only a | |
5500 portion of the command is given to the shell, and a blank prompt is | |
5501 returned. If I hit return again, the rest of the previous command is | |
5502 given to the shell. | |
5503 | |
5504 @email{martin@@xemacs.org, Martin Buchholz} writes: | |
5505 | |
5506 @quotation | |
5507 There is a known problem with interaction between @code{csh} and the | |
5508 @code{filec} option and XEmacs. You should add the following to your | |
5509 @file{.cshrc}: | |
5510 | |
5511 @example | |
5512 if ( "$TERM" == emacs || "$TERM" == unknown ) unset filec | |
5513 @end example | |
5514 @end quotation | |
5515 | |
5516 @node Q4.4.5, Q4.5.1, Q4.4.4, External Subsystems | |
5517 @unnumberedsubsec Q4.4.5: XEmacs complains "No such file or directory, diff" | |
5518 | |
5519 or "ispell" or other commands that seem related to whatever you just | |
5520 tried to do (M-x ediff or M-$, for example). | |
5521 | |
5522 There are a large number of common (in the sense that "everyone has | |
5523 these, they really do") Unix utilities that are not provided with | |
5524 XEmacs. The GNU Project's implementations are available for Windows in | |
5525 the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also | |
5526 provides a complete Unix emulation environment (and thus makes ports of | |
5527 Unix utilities nearly trivial). Another implementation is that from | |
5528 MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others, | |
5529 please let us know! | |
5530 | |
5531 @unnumberedsec 4.5: Multiple Device Support | |
5532 | |
5533 @node Q4.5.1, Q4.5.2, Q4.4.5, External Subsystems | |
5534 @unnumberedsubsec Q4.5.1: How do I open a frame on another screen of my multi-headed display? | |
5535 | |
5536 Use the command @kbd{M-x make-frame-on-display}. This command is also | |
5537 on the File menu in the menubar. | |
5538 | |
5539 The command @code{make-frame-on-tty} also exists, which will establish a | |
5540 connection to any tty-like device. Opening the TTY devices should be | |
5541 left to @code{gnuclient}, though. | |
5542 | |
5543 @node Q4.5.2, Q4.5.3, Q4.5.1, External Subsystems | |
5544 @unnumberedsubsec Q4.5.2: Can I really connect to a running XEmacs after calling up over a modem? How? | |
5545 | |
5546 Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach} | |
5547 program supplied with XEmacs instead.) | |
5548 | |
5549 Also see @ref{Q4.5.3, How do I disable gnuserv from opening a new frame?}. | |
5550 | |
5551 @node Q4.5.3, Q4.5.4, Q4.5.2, External Subsystems | |
5552 @unnumberedsubsec Q4.5.3: How do I disable gnuserv from opening a new frame? | |
5553 | |
5554 If you set the @code{gnuserv-frame} variable to the frame that should be | |
5555 used to display buffers that are pulled up, a new frame will not be | |
5556 created. For example, you could put | |
5557 | |
5558 @lisp | |
5559 (setq gnuserv-frame (selected-frame)) | |
5560 @end lisp | |
5561 | |
5562 early on in your @file{init.el}, to ensure that the first frame created | |
5563 is the one used for your gnuserv buffers. | |
5564 | |
5565 There is an option to set the gnuserv target to the current frame. See | |
5566 @code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target} | |
5567 | |
5568 You can also change this with Customize. Select from the | |
5569 @code{Options} menu @code{Advanced | |
5570 (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type | |
5571 @kbd{M-x customize @key{RET} gnuserv @key{RET}}. | |
5572 | |
5573 | |
5574 @node Q4.5.4, Q4.5.5, Q4.5.3, External Subsystems | |
5575 @unnumberedsubsec Q4.5.4: How do I start gnuserv so that each subsequent XEmacs is a client? | |
5576 | |
5577 Put the following in your @file{init.el} file to start the server: | |
5578 | |
5579 @lisp | |
5580 (gnuserv-start) | |
5581 @end lisp | |
5582 | |
5583 Start your first XEmacs as usual. After that, you can do: | |
5584 | |
5585 @example | |
5586 gnuclient randomfilename | |
5587 @end example | |
5588 | |
5589 from the command line to get your existing XEmacs process to open a new | |
5590 frame and visit randomfilename in that window. When you're done editing | |
5591 randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the | |
5592 frame. | |
5593 | |
5594 See also man page of gnuclient. | |
5595 | |
5596 @node Q4.5.5, Q4.6.1, Q4.5.4, External Subsystems | |
5597 @unnumberedsubsec Q4.5.5: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? | |
5598 | |
5599 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: | |
5600 @quotation | |
5601 Here is one of the solutions, we have this in a script called | |
5602 @file{etc/editclient.sh}. | |
5603 @example | |
5604 #!/bin/sh | |
5605 if gnuclient -batch -eval t >/dev/null 2>&1 | |
5606 then | |
5607 exec gnuclient $@{1+"$@@"@} | |
5608 else | |
5609 xemacs -unmapped -f gnuserv-start & | |
5610 until gnuclient -batch -eval t >/dev/null 2>&1 | |
5611 do | |
5612 sleep 1 | |
5613 done | |
5614 exec gnuclient $@{1+"$@@"@} | |
5615 fi | |
5616 @end example | |
5617 | |
5618 Note that there is a known problem when running XEmacs and 'gnuclient | |
5619 -nw' on the same TTY. | |
5620 @end quotation | |
5621 | |
5622 @unnumberedsec 4.6: TeX | |
5623 | |
5624 @node Q4.6.1, Q4.6.2, Q4.5.5, External Subsystems | |
5625 @unnumberedsubsec Q4.6.1: Is there something better than LaTeX mode? | |
5626 | |
5627 @email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} writes: | |
5628 | |
5629 @quotation | |
5630 The standard TeX modes leave much to be desired, and are somewhat | |
5631 leniently maintained. Serious TeX users use AUCTeX (@pxref{Q4.6.2, | |
5632 What is AUCTeX? Where do you get it?}). | |
5633 @end quotation | |
5634 | |
5635 @node Q4.6.2, Q4.6.3, Q4.6.1, External Subsystems | |
5636 @unnumberedsubsec Q4.6.2: What is AUCTeX? Where do you get it? | |
5637 | |
5638 AUCTeX is a complex and sophisticated editing package dedicated to TeX | |
5639 and related text formatting languages, including LaTeX and Texinfo. | |
5640 It provides support for running TeX on a file or part of a file, | |
5641 include files, and of course shortcuts for entering common TeX macros, | |
5642 LaTeX environments, etc, and for fontlock. | |
5643 | |
5644 AUCTeX is a standard package provided by XEmacs. You can get it as | |
5645 usual through the @kbd{M-x list-packages} interface. It is also | |
5646 included in the (non-Mule) SUMO package. The AUCTeX XEmacs package is | |
5647 maintained by Uwe Brauer <GET MAIL ADDRESS>. | |
5648 | |
5649 AUCTeX is extremely complicated, and its developers primarily | |
5650 use GNU Emacs. Not all features of the bleeding edge version | |
5651 of AUCTeX are immediately ported to XEmacs; if you need | |
5652 these, you may be better off getting the most recent versions | |
5653 from the GNU AUCTeX project on @uref{http://savannah.gnu.org}. | |
5654 | |
5655 @node Q4.6.3, Q4.6.4, Q4.6.2, External Subsystems | |
5656 @unnumberedsubsec Q4.6.3: Problems installing AUCTeX. | |
5657 | |
5658 @email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: | |
5659 | |
5660 @quotation | |
5661 AUCTeX works fine on both stock Emacs and XEmacs has been doing so for | |
5662 a very very long time. This is mostly due to the work of | |
5663 @email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular his @file{easymenu} | |
5664 package. Which leads to what is probably the problem... | |
5665 @end quotation | |
5666 | |
5667 Most problems with AUCTeX are one of two things: | |
5668 | |
5669 @itemize @bullet | |
5670 @item | |
5671 The TeX-lisp-directory in @file{tex-site.el} and the makefile don't | |
5672 match. | |
5673 | |
5674 Fix: make sure you configure AUCTeX properly @strong{before} installing. | |
5675 | |
5676 @item | |
5677 You have an old version of easymenu.el in your path. | |
5678 | |
5679 Fix: use @code{locate-library} and remove old versions to make sure it | |
5680 @strong{only} finds the one that came with XEmacs. | |
5681 @end itemize | |
5682 | |
5683 @node Q4.6.4, Q4.7.1, Q4.6.3, External Subsystems | |
5684 @unnumberedsubsec Q4.6.4: How do I turn off current chapter from AUCTeX modeline? | |
5685 | |
5686 With AUCTeX, fast typing is hard because the current chapter, section | |
5687 etc. are given in the modeline. How can I turn this off? | |
5688 | |
5689 It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}. | |
5690 | |
5691 @c Add this code to your @file{init.el} to turn it off: | |
5692 @c | |
5693 @c @lisp | |
5694 @c (setq fume-display-in-modeline-p nil) | |
5695 @c @end lisp | |
5696 @c | |
5697 @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX | |
5698 @c mode: | |
5699 @c | |
5700 @c @lisp | |
5701 @c (add-hook 'TeX-mode-hook | |
5702 @c '(lambda () (setq fume-display-in-modeline-p nil))) | |
5703 @c @end lisp | |
5704 @c | |
5705 @email{dhughes@@origin-at.co.uk, David Hughes} writes: | |
5706 | |
5707 @quotation | |
5708 Try this; you'll still get the function name displayed in the modeline, | |
5709 but it won't attempt to keep track when you modify the file. To refresh | |
5710 when it gets out of synch, you simply need click on the @samp{Rescan | |
5711 Buffer} option in the function-menu. | |
5712 | |
5713 @lisp | |
5714 (setq-default fume-auto-rescan-buffer-p nil) | |
5715 @end lisp | |
5716 @end quotation | |
5717 | |
5718 @unnumberedsec 4.7: Other Unbundled Packages | |
5719 | |
5720 @node Q4.7.1, Q4.7.2, Q4.6.4, External Subsystems | |
5721 @unnumberedsubsec Q4.7.1: Is there a reason for an Emacs package not to be included in XEmacs? | |
5722 | |
5723 The reason for an Emacs package not to be included in XEmacs is | |
5724 usually one or more of the following: | |
5725 | |
5726 @enumerate | |
5727 @item | |
5728 The package has not been ported to XEmacs. This will typically happen | |
5729 when it uses GNU-Emacs-specific features, which make it fail under | |
5730 XEmacs. | |
5731 | |
5732 Porting a package to XEmacs can range from a trivial amount of change to | |
5733 a partial or full rewrite. Fortunately, the authors of modern packages | |
5734 usually choose to support both Emacsen themselves. | |
5735 | |
5736 @item | |
5737 The package has been decided not to be appropriate for XEmacs. It may | |
5738 have an equivalent or better replacement within XEmacs, in which case | |
5739 the developers may choose not to burden themselves with supporting an | |
5740 additional package. | |
5741 | |
5742 Each package bundled with XEmacs means more work for the maintainers, | |
5743 whether they want it or not. If you are ready to take over the | |
5744 maintenance responsibilities for the package you port, be sure to say | |
5745 so---we will more likely include it. | |
5746 | |
5747 @item | |
5748 The package simply hasn't been noted by the XEmacs development. If | |
5749 that's the case, the messages like yours are very useful for attracting | |
5750 our attention. | |
5751 | |
5752 @item | |
5753 The package was noted by the developers, but they simply haven't yet | |
5754 gotten around to including/porting it. Wait for the next release or, | |
5755 even better, offer your help. It will be gladly accepted and | |
5756 appreciated. | |
5757 @end enumerate | |
5758 | |
5759 @node Q4.7.2, Q4.7.3, Q4.7.1, External Subsystems | |
5760 @unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets? | |
5761 | |
5762 Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at | |
5763 @iftex | |
5764 @* | |
5765 @end iftex | |
5766 @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}. | |
5767 | |
5768 @node Q4.7.3, Q4.8.1, Q4.7.2, External Subsystems | |
5769 @unnumberedsubsec Q4.7.3: Is there a MatLab mode? | |
5770 | |
5771 Yes, a matlab mode and other items are available at the | |
5772 @uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons, | |
5773 MathWorks' emacs_add_ons ftp directory}. | |
5774 | |
5775 @unnumberedsec 4.8: Environments Built Around XEmacs | |
5776 | |
5777 @node Q4.8.1, Q4.8.2, Q4.7.3, External Subsystems | |
5778 @unnumberedsubsec Q4.8.1: What are SPARCworks, EOS, and WorkShop? | |
5779 | |
5780 SPARCworks was a development environment from Sun (circa 1993-1996) | |
5781 and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and | |
5782 Pascal), a debugger, and other tools such as TeamWare (for | |
5783 configuration management), MakeTool, etc. | |
5784 | |
5785 EOS is the integration of XEmacs with the SPARCworks debugger. It | |
5786 allows one to use an XEmacs frame to view code (complete with | |
5787 fontification, etc.), set breakpoints, print variables, etc., while | |
5788 using the SPARCworks debugger. | |
5789 | |
5790 EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten | |
5791 Again" and was the name used by Sun for its modified version of Lucid | |
5792 Emacs (later XEmacs) in the early-mid 90's. This is documented in | |
5793 more detail in the history section of the XEmacs About page. | |
5794 | |
5795 EOS was replaced around 1996 with a newer graphical development | |
5796 environment called Sun WorkShop. The current status of this is | |
5797 unknown. | |
5798 | |
5799 @node Q4.8.2, Q4.8.3, Q4.8.1, External Subsystems | |
5800 @unnumberedsubsec Q4.8.2: How do I start the Sun Workshop support in XEmacs 21? | |
5801 | |
5802 Add the switch ---with-workshop to the configure command when building | |
5803 XEmacs and put the following in one of your startup files | |
5804 (e.g. site-start.el or .emacs): | |
5805 | |
5806 @lisp | |
5807 (when (featurep 'tooltalk) | |
5808 (load "tooltalk-macros") | |
5809 (load "tooltalk-util") | |
5810 (load "tooltalk-init")) | |
5811 (when (featurep 'sparcworks) | |
5812 (load "sunpro-init") | |
5813 (load "ring") | |
5814 (load "comint") | |
5815 (load "annotations") | |
5816 (sunpro-startup)) | |
5817 @end lisp | |
5818 | |
5819 If you are not using the latest Workshop (5.0) you have to apply the | |
5820 following patch: | |
5821 | |
5822 @format | |
5823 --- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999 | |
5824 +++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999 | |
5825 @@@@ -42,7 +42,7 @@@@ | |
5826 (defvar running-xemacs nil "t if we're running XEmacs") | |
5827 (defvar running-emacs nil "t if we're running GNU Emacs 19") | |
5828 | |
5829 -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version) | |
5830 +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) | |
5831 (setq running-xemacs t) | |
5832 (setq running-emacs t)) | |
5833 @end format | |
5834 | |
5835 @node Q4.8.3, Q4.8.4, Q4.8.2, External Subsystems | |
5836 @unnumberedsubsec Q4.8.3: What is/was Energize? | |
5837 | |
5838 The "Energize Programming System" was a C and C++ development environment | |
5839 sold by Lucid, Inc. It was the reason why Lucid Emacs, now XEmacs, was | |
5840 created in the first place. Unfortunately, Lucid went out of business in | |
5841 1994. The rights to sell it in Japan were purchased by INS | |
5842 Engineering (which briefly employed Stig Hackvan aka Jonathan | |
5843 Stigelman to work on Japanese support for XEmacs, in late 1994 and | |
5844 early 1995) and Tartan bought the rights to sell it in the rest of the | |
5845 world. However, INS is not selling Energize at this point and may or | |
5846 may not have ever done so; Tartan certainly never did. | |
5847 | |
5848 @node Q4.8.4, , Q4.8.3, External Subsystems | |
5849 @unnumberedsubsec Q4.8.4: What is Infodock? | |
5850 | |
5851 @uref{http://sourceforge.net/projects/infodock/, InfoDock} is an | |
5852 integrated productivity toolset, mainly aimed at technical people, | |
5853 hosted at SourceForge. | |
5854 | |
5855 InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of | |
5856 the power of Emacs, but with an easier to use and more comprehensive | |
5857 menu-based user interface. The bottom portion of this text describes | |
5858 how it differs from XEmacs and GNU Emacs from the Free Software | |
5859 Foundation. | |
5860 | |
5861 InfoDock is aimed at people who want a free, turn-key productivity | |
5862 environment. Although InfoDock is customizable, it is not intended for | |
5863 people who like basic versions of Emacs which need to be customized | |
5864 extensively for local use; standard Emacs distributions are better for | |
5865 such uses. InfoDock is for those people who want a complete, | |
5866 pre-customized environment in one package, which they need not touch | |
5867 more than once or twice a year to update to new revisions. | |
5868 | |
5869 InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX, | |
5870 and Intel Linux systems. It is intended for use on a color display, | |
5871 although most features will work on monochrome monitors. Simply unpack | |
5872 InfoDock according to the instructions in the ID-INSTALL file and you | |
5873 are ready to run. | |
5874 | |
5875 The InfoDock Manual is concise, yet sufficient as a user guide for users | |
5876 who have never used an Emacs-type editor before. For users who are | |
5877 already familiar with Emacs, it supplements the information in the GNU | |
5878 Emacs Manual. | |
5879 | |
5880 InfoDock menus are much more extensive and more mature than standard | |
5881 Emacs menus. Each menu offers a @samp{Manual} item which displays | |
5882 documentation associated with the menu's functions. | |
5883 | |
5884 @noindent | |
5885 Four types of menubars are provided: | |
5886 @enumerate | |
5887 @item | |
5888 An extensive menubar providing access to global InfoDock commands. | |
5889 @item | |
5890 Mode-specific menubars tailored to the current major mode. | |
5891 @item | |
5892 A simple menubar for basic editing to help novices get started with InfoDock. | |
5893 @item | |
5894 The standard XEmacs menubar. | |
5895 @end enumerate | |
5896 | |
5897 Most modes also include mode-specific popup menus. Additionally, region and | |
5898 rectangle popup menus are included. | |
5899 | |
5900 @samp{Hyperbole}, the everyday information manager, is a core part of | |
5901 InfoDock. This provides context-sensitive mouse keys, a rolodex-type | |
5902 contact manager, programmable hypertext buttons, and an autonumbered | |
5903 outliner with embedded hyperlink anchors. | |
5904 | |
5905 The @samp{OO-Browser}, a multi-language object-oriented code browser, is a | |
5906 standard part of InfoDock. | |
5907 | |
5908 InfoDock saves a more extensive set of user options than other Emacs | |
5909 versions. | |
5910 | |
5911 InfoDock inserts a useful file header in many file types, showing the | |
5912 author, summary, and last modification time of each file. A summary | |
5913 program can then be used to summarize all of the files in a directory, | |
5914 for easy MANIFEST file creation. | |
5915 | |
5916 Your working set of buffers is automatically saved and restored (if you | |
5917 answer yes to a prompt) between InfoDock sessions. | |
5918 | |
5919 Refined color choices for code highlighting are provided for both dark and | |
5920 light background display frames. | |
5921 | |
5922 The @kbd{C-z} key prefix performs frame-based commands which parallel the | |
5923 @kbd{C-x} key prefix for window-based commands. | |
5924 | |
5925 The Smart Menu system is included for producing command menus on dumb | |
5926 terminals. | |
5927 | |
5928 Lisp libraries are better categorized according to function. | |
5929 | |
5930 Extensions and improvements to many areas of Emacs are included, such as: | |
5931 paragraph filling, mail reading with Rmail, shell handling, outlining, code | |
5932 highlighting and browsing, and man page browsing. | |
5933 | |
5934 InfoDock questions, answers and discussion should go to the mail list | |
5935 @iftex | |
5936 @* | |
5937 @end iftex | |
5938 @email{infodock@@infodock.com}. Use | |
5939 @email{infodock-request@@infodock.com} to be added or removed from the | |
5940 list. Always include your InfoDock version number when sending help | |
5941 requests. | |
5942 | |
5943 @node Internet, Advanced, External Subsystems, Top | |
5944 @unnumbered 5 Connecting to the Internet | |
5945 | |
5946 This is part 5 of the XEmacs Frequently Asked Questions list. This | |
5947 section is devoted connecting to the Internet. | |
5948 | |
5949 @menu | |
5950 5.0: General Mail and News | |
5951 * Q5.0.1:: What are the various packages for reading mail? | |
5952 * Q5.0.2:: How can I send mail? | |
5953 * Q5.0.3:: How do I get my outgoing mail archived? | |
5954 * Q5.0.4:: How can I read and/or compose MIME messages? | |
5955 * Q5.0.5:: How do I customize the From line? | |
5956 * Q5.0.6:: How do I get my MUA to filter mail for me? | |
5957 * Q5.0.7:: Remote mail reading with an MUA. | |
5958 * Q5.0.8:: An MUA gets an error incorporating new mail. | |
5959 * Q5.0.9:: Why isn't @file{movemail} working? | |
5960 * Q5.0.10:: How do I make my MUA display graphical smilies? | |
5961 * Q5.0.11:: How can I get those oh-so-neat X-Face lines? | |
5962 | |
5963 5.1: Reading Mail with VM | |
5964 * Q5.1.1:: How do I set up VM to retrieve mail from a remote site using POP? | |
5965 * Q5.1.2:: How can I get VM to automatically check for new mail? | |
5966 * Q5.1.3:: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? | |
5967 * Q5.1.4:: Is there a mailing list or FAQ for VM? | |
5968 * Q5.1.5:: How do I make VM stay in a single frame? | |
5969 * Q5.1.6:: Customization of VM not covered in the manual, or here. | |
5970 | |
5971 5.2: Reading Netnews and Mail with Gnus | |
5972 * Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! | |
5973 * Q5.2.2:: How do I make Gnus stay within a single frame? | |
5974 | |
5975 5.3: FTP Access | |
5976 * Q5.3.1:: Can I edit files on other hosts? | |
5977 * Q5.3.2:: What is EFS? | |
5978 | |
5979 5.4: Web Browsing with W3 | |
5980 * Q5.4.1:: What is W3? | |
5981 * Q5.4.2:: How do I run W3 from behind a firewall? | |
5982 * Q5.4.3:: Is it true that W3 supports style sheets and tables? | |
5983 @end menu | |
5984 | |
5985 @unnumberedsec 5.0: General Mail and News | |
5986 | |
5987 @node Q5.0.1, Q5.0.2, Internet, Internet | |
5988 @unnumberedsubsec Q5.0.1: What are the various packages for reading mail? | |
5989 | |
5990 #### Write me. | |
5991 | |
5992 @node Q5.0.2, Q5.0.3, Q5.0.1, Internet | |
5993 @unnumberedsubsec Q5.0.2: How can I send mail? | |
5994 | |
5995 Under Unix and Mac OS X, the @samp{sendmail} package is normally used | |
5996 for this. | |
5997 #### Write me. | |
5998 | |
5999 Under Windows, you need to use @samp{smtpmail}, which communicates | |
6000 directly with the mail server, as there is no @file{sendmail} program | |
6001 running. To get it working, use code like the following in your | |
6002 @file{init.el} file: | |
6003 | |
6004 @lisp | |
6005 ;; Get mail working under Windows. | |
6006 (setq message-send-mail-function 'smtpmail-send-it) ; for message/Gnus | |
6007 (setq send-mail-function 'smtpmail-send-it) ; for C-x m, etc. | |
6008 ;; the following ensures that mail problems can be debugged: it logs a trace | |
6009 ;; of the SMTP conversation to *trace of SMTP session to <somewhere>*. | |
6010 (setq smtpmail-debug-info t) | |
6011 ;; Substitute your info here. | |
6012 ;(setq user-mail-address "ben@@xemacs.org") | |
6013 ;(setq user-full-name "Ben Wing") | |
6014 ;(setq smtpmail-default-smtp-server "smtp.myserver.myisp.com") | |
6015 ;; The following two aren't completely necessary but may help. | |
6016 ;(setq smtpmail-local-domain "666.com") | |
6017 ;(setq smtpmail-sendto-domain "666.com") | |
6018 ;; If your SMTP server requires a username/password to authenticate, as | |
6019 ;; many do nowadays, set them like this: | |
6020 ;(setq smtpmail-auth-credentials ; or use ~/.authinfo | |
6021 ; '(("smtp.myserver.myisp.com" 25 "USER@@SOMEWHERE" "PASSWORD"))) | |
6022 | |
6023 ;; Other possibilities for getting smtpmail to work: | |
6024 ;; | |
6025 ;; If for some reason you need to authenticate using the STARTTLS protocol | |
6026 ;; (don't look into this unless you know what it is), use | |
6027 ;; (setq smtpmail-starttls-credentials | |
6028 ;; '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert"))) | |
6029 ;; Requires external program | |
6030 ;; ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz. | |
6031 ;; See http://www.ietf.org/rfc/rfc2246.txt, | |
6032 ;; http://www.ietf.org/rfc/rfc2487.txt | |
6033 @end lisp | |
6034 | |
6035 The lines you need to care about are those that set | |
6036 @code{user-mail-address}, @code{user-full-name}, | |
6037 @code{smtpmail-default-smtp-server}, and | |
6038 @code{smtpmail-auth-credentials}. You need to set these with, | |
6039 respectively, your email address, your full name, the SMTP server you | |
6040 use for outgoing mail, and the username and password you need to log | |
6041 in to your SMTP server. (If for some reason your SMTP server doesn't | |
6042 require logging in to send mail, don't uncomment this last line.) | |
6043 | |
6044 The other settings may be useful in specific cases, but you should know what | |
6045 you're doing before enabling them. | |
6046 | |
6047 @node Q5.0.3, Q5.0.4, Q5.0.2, Internet | |
6048 @unnumberedsubsec Q5.0.3: How do I get my outgoing mail archived? | |
6049 | |
6050 @lisp | |
6051 (setq mail-archive-file-name "~/outbox") | |
6052 @end lisp | |
6053 | |
6054 @node Q5.0.4, Q5.0.5, Q5.0.3, Internet | |
6055 @unnumberedsubsec Q5.0.4: How can I read and/or compose MIME messages? | |
6056 | |
6057 VM, MH-E and GNUS support MIME natively. Other MUAs may or may not | |
6058 have MIME support; refer to their documentation and other resources, | |
6059 such as web pages and mailing lists. Packages like SEMI/WEMI may be | |
6060 useful in connection with MUAs like mew and Wanderlust. | |
6061 | |
6062 @node Q5.0.5, Q5.0.6, Q5.0.4, Internet | |
6063 @unnumberedsubsec Q5.0.5: How do I customize the From line? | |
6064 | |
6065 How do I change the @samp{From:} line? I have set gnus-user-from-line | |
6066 to | |
6067 @example | |
6068 Gail Gurman <gail.gurman@@sybase.com> | |
6069 @end example | |
6070 @noindent , but XEmacs Gnus doesn't use | |
6071 it. [This should apply to all MUA's. --ed] Instead it uses | |
6072 @example | |
6073 Gail Mara Gurman @email{gailg@@deall} | |
6074 @end example | |
6075 @noindent and then complains | |
6076 that it's incorrect. Also, as you perhaps can see, my Message-ID is | |
6077 screwy. How can I change that? | |
6078 | |
6079 @email{larsi@@ifi.uio.no, Lars Magne Ingebrigtsen} writes: | |
6080 | |
6081 @quotation | |
6082 Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or | |
6083 @code{mail-host-address} to @samp{sybase.com}. | |
6084 @end quotation | |
6085 | |
6086 @node Q5.0.6, Q5.0.7, Q5.0.5, Internet | |
6087 @unnumberedsubsec Q5.0.6: How do I get my MUA to filter mail for me? | |
6088 | |
6089 One possibility is to use procmail to split your mail before it gets to | |
6090 the MUA. I prefer this personally, since there are many strange and | |
6091 wonderful things one can do with procmail. Procmail may be found at | |
6092 @uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}. | |
6093 | |
6094 Also see the Mail Filtering FAQ at: | |
6095 @iftex | |
6096 @* | |
6097 @end iftex | |
6098 @uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}. | |
6099 @c Link above, | |
6100 @c <URL:http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/filtering-faq/faq.html> | |
6101 @c was dead. | |
6102 | |
6103 @node Q5.0.7, Q5.0.8, Q5.0.6, Internet | |
6104 @unnumberedsubsec Q5.0.7: Remote mail reading with an MUA. | |
6105 | |
6106 My mailbox lives at the office on a big honkin server. My regular INBOX | |
6107 lives on my honkin desktop machine. I now can PPP to the office from | |
6108 home which is far from honking... I'd like to be able to read mail at | |
6109 home without storing it here and I'd like to use xemacs and the MUA at | |
6110 home... Is there a recommended setup? | |
6111 | |
6112 @email{nuspl@@nvwls.cc.purdue.edu, Joseph J. Nuspl Jr.} writes: | |
6113 | |
6114 @quotation | |
6115 There are several ways to do this. | |
6116 | |
6117 @enumerate | |
6118 @item | |
6119 Set your display to your home machine and run dxpc or one of the other X | |
6120 compressors. | |
6121 | |
6122 @item | |
6123 NFS mount your desktop machine on your home machine and modify your pop | |
6124 command on your home machine to rsh to your desktop machine and actually | |
6125 do the pop get's. | |
6126 | |
6127 @item | |
6128 Run a POP server on your desktop machine as well and do a sort of two | |
6129 tiered POP get. | |
6130 @end enumerate | |
6131 @end quotation | |
6132 | |
6133 @email{wmperry@@monolith.spry.com, William Perry} adds: | |
6134 | |
6135 @quotation | |
6136 Or you could run a pop script periodically on your desktop machine, and | |
6137 just use ange-ftp or NFS to get to your mailbox. I used to do this all | |
6138 the time back at IU. | |
6139 @end quotation | |
6140 | |
6141 @node Q5.0.8, Q5.0.9, Q5.0.7, Internet | |
6142 @unnumberedsubsec Q5.0.8: An MUA gets an error incorporating new mail. | |
6143 | |
6144 rmail and VM, and probably other MUA's as well, get new mail from | |
6145 your mailbox (called @file{/var/mail/$USER} or @file{/var/spool/mail/$USER} | |
6146 or something similar) using a program called @code{movemail}. | |
6147 This program interlocks with @code{/bin/mail} using the protocol | |
6148 defined by @code{/bin/mail}. | |
6149 | |
6150 There are various different protocols in general use, which you need to | |
6151 specify using the @samp{--mail-locking} option to @file{configure}: | |
6152 | |
6153 @table @samp | |
6154 @item lockf | |
6155 POSIX file locking with @code{lockf()} | |
6156 @item flock | |
6157 BSD file locking with @code{flock()} | |
6158 @item dot | |
6159 To manipulate mail file @file{foo}, first create file @file{foo.lock} | |
6160 @item locking | |
6161 Use @code{locking()}, Microsoft's renamed @code{flock()} | |
6162 @item mmdf | |
6163 Use @code{lk_open()} and @code{lk_close()} as defined by the Multi-channel | |
6164 Memo Distribution Facility | |
6165 @item pop | |
6166 Retrieve mail using POP (the Post Office Protocol). This is the | |
6167 default for Cygwin/MinGW. | |
6168 @end table | |
6169 | |
6170 @strong{IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR | |
6171 SYSTEM, YOU CAN LOSE MAIL!} | |
6172 | |
6173 Usually the value is correctly determined automatically: | |
6174 @file{configure} tries to detect the method in use, and defaults exist | |
6175 on systems for which this doesn't work. | |
6176 | |
6177 However, if you run into problems incorporating new mail, it may be | |
6178 because an incorrect method is being used. | |
6179 | |
6180 If your system uses the lock file protocol, and permissions are set | |
6181 so that ordinary users cannot write lock files in the mail spool | |
6182 directory, you may need to make @file{movemail} setgid to a | |
6183 suitable group such as @samp{mail}. You can use these commands (as | |
6184 root): | |
6185 | |
6186 @example | |
6187 chgrp mail movemail | |
6188 chmod 2755 movemail | |
6189 @end example | |
6190 | |
6191 If you are using the @samp{pop} locking method, @file{movemail} must | |
6192 be setuid root. | |
6193 | |
6194 Installation normally copies movemail from the build directory to an | |
6195 installation directory which is usually under @file{/usr/local/lib}. | |
6196 The installed copy of @file{movemail} is usually in the directory | |
6197 @file{/usr/local/lib/xemacs-VERSION/TARGET} (for example, | |
6198 @file{/usr/local/lib/xemacs-21.4.15/i686-pc-cygwin}). You must change | |
6199 the group and mode of the installed copy; changing the group and mode | |
6200 of the build directory copy is ineffective. | |
6201 | |
6202 @node Q5.0.9, Q5.0.10, Q5.0.8, Internet | |
6203 @unnumberedsubsec Q5.0.9: Why isn't @file{movemail} working? | |
6204 | |
6205 @xref{Q5.0.8}. | |
6206 | |
6207 Note also that older versions of Mozilla came with a @file{movemail} | |
6208 program that is @strong{not} compatible with XEmacs. Do not use it. | |
6209 Always use the @file{movemail} installed with your XEmacs. Failure to | |
6210 do so can result in lost mail. | |
6211 | |
6212 @node Q5.0.10, Q5.0.11, Q5.0.9, Internet | |
6213 @unnumberedsubsec Q5.0.10: How do I make my MUA display graphical smilies? | |
6214 For mh-e use the following: | |
6215 | |
6216 @lisp | |
6217 (add-hook 'mh-show-mode-hook '(lambda () | |
6218 (smiley-region (point-min) | |
6219 (point-max)))) | |
6220 @end lisp | |
6221 | |
6222 @email{bill@@carpenter.ORG, WJCarpenter} writes: | |
6223 For VM use the following: | |
6224 @lisp | |
6225 (autoload 'smiley-region "smiley" nil t) | |
6226 (add-hook 'vm-select-message-hook | |
6227 '(lambda () | |
6228 (smiley-region (point-min) | |
6229 (point-max)))) | |
6230 @end lisp | |
6231 | |
6232 For tm use the following: | |
6233 @lisp | |
6234 (autoload 'smiley-buffer "smiley" nil t) | |
6235 (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer) | |
6236 @end lisp | |
6237 | |
6238 @node Q5.0.11, Q5.1.1, Q5.0.10, Internet | |
6239 @unnumberedsubsec Q5.0.11: How can I get those oh-so-neat X-Face lines? | |
6057 | 6240 |
6058 Firstly there is an ftp site which describes X-faces and has the | 6241 Firstly there is an ftp site which describes X-faces and has the |
6059 associated tools mentioned below, at | 6242 associated tools mentioned below, at |
6060 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/}. | 6243 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/}. |
6061 | 6244 |
6137 Heinz Uphoff, | 6320 Heinz Uphoff, |
6138 Peter Arius, | 6321 Peter Arius, |
6139 Paul Harrison, and | 6322 Paul Harrison, and |
6140 Vegard Vesterheim | 6323 Vegard Vesterheim |
6141 | 6324 |
6142 @node Q5.3.11, Q5.3.12, Q5.3.10, Miscellaneous | 6325 @unnumberedsec 5.1: Reading Mail with VM |
6143 @unnumberedsubsec Q5.3.11: How do I add new Info directories? | 6326 |
6327 @node Q5.1.1, Q5.1.2, Q5.0.11, Internet | |
6328 @unnumberedsubsec Q5.1.1: How do I set up VM to retrieve mail from a remote site using POP? | |
6329 | |
6330 Use @code{vm-spool-files}, like this for example: | |
6331 | |
6332 @lisp | |
6333 (setq vm-spool-files '("/var/spool/mail/wing" | |
6334 "netcom23.netcom.com:110:pass:wing:MYPASS")) | |
6335 @end lisp | |
6336 | |
6337 Of course substitute your actual password for MYPASS. | |
6338 | |
6339 @node Q5.1.2, Q5.1.3, Q5.1.1, Internet | |
6340 @unnumberedsubsec Q5.1.2: How can I get VM to automatically check for new mail? | |
6341 | |
6342 @email{turner@@lanl.gov, John Turner} writes: | |
6343 | |
6344 @quotation | |
6345 Use the following: | |
6346 | |
6347 @lisp | |
6348 (setq vm-auto-get-new-mail 60) | |
6349 @end lisp | |
6350 @end quotation | |
6351 | |
6352 @node Q5.1.3, Q5.1.4, Q5.1.2, Internet | |
6353 @unnumberedsubsec Q5.1.3: I have various addresses at which I receive mail. How can I tell VM to ignore them when doing a "reply-all"? | |
6354 | |
6355 Set @code{vm-reply-ignored-addresses} to a list, like | |
6356 | |
6357 @lisp | |
6358 (setq vm-reply-ignored-addresses | |
6359 '("wing@@nuspl@@nvwls.cc.purdue.edu,netcom[0-9]*.netcom.com" | |
6360 "wing@@netcom.com" "wing@@xemacs.org")) | |
6361 @end lisp | |
6362 | |
6363 Note that each string is a regular expression. | |
6364 | |
6365 @node Q5.1.4, Q5.1.5, Q5.1.3, Internet | |
6366 @unnumberedsubsec Q5.1.4: Is there a mailing list or FAQ for VM? | |
6367 | |
6368 A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}. | |
6369 | |
6370 VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug. | |
6371 | |
6372 @node Q5.1.5, Q5.1.6, Q5.1.4, Internet | |
6373 @unnumberedsubsec Q5.1.5: How do I make VM stay in a single frame? | |
6374 | |
6375 John.@email{Cooper@@Eng.Sun.COM, John S Cooper} writes: | |
6376 | |
6377 @quotation | |
6378 @lisp | |
6379 ; Don't use multiple frames | |
6380 (setq vm-frame-per-composition nil) | |
6381 (setq vm-frame-per-folder nil) | |
6382 (setq vm-frame-per-edit nil) | |
6383 (setq vm-frame-per-summary nil) | |
6384 @end lisp | |
6385 @end quotation | |
6386 | |
6387 @node Q5.1.6, Q5.2.1, Q5.1.5, Internet | |
6388 @unnumberedsubsec Q5.1.6: Customization of VM not covered in the manual, or here. | |
6389 | |
6390 @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes: | |
6391 | |
6392 @quotation | |
6393 The meta-answer is to look into the file @file{vm-vars.el}, in the vm | |
6394 directory of the lisp library. | |
6395 | |
6396 @file{vm-vars.el} contains, initializes and carefully describes, with | |
6397 examples of usage, the plethora of user options that @emph{fully} | |
6398 control VM's behavior. | |
6399 | |
6400 Enter vm-vars, @code{forward-search} for toolbar, find the variables | |
6401 that control the toolbar placement, appearance, existence, copy to your | |
6402 @file{init.el} or @file{.vm} and modify according to the | |
6403 detailed instructions. | |
6404 | |
6405 The above also applies to all the various features of VM: search for | |
6406 some keywords, maybe the first you conjure isn't appropriate, find the | |
6407 appropriate variables, copy and experiment. | |
6408 @end quotation | |
6409 | |
6410 @unnumberedsec 5.2: Reading Netnews and Mail with Gnus | |
6411 | |
6412 @node Q5.2.1, Q5.2.2, Q5.1.6, Internet | |
6413 @unnumberedsubsec Q5.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quassia Gnus, argh! | |
6414 | |
6415 The Gnus numbering issues are not meant for mere mortals to know them. | |
6416 If you feel you @emph{must} enter the muddy waters of Gnus, visit the | |
6417 excellent FAQ, maintained by Justin Sheehy, at: | |
6418 | |
6419 @example | |
6420 @uref{http://www.ccs.neu.edu/software/contrib/gnus/} | |
6421 @end example | |
6422 | |
6423 See also Gnus home page | |
6424 @example | |
6425 @uref{http://www.gnus.org/} | |
6426 @end example | |
6427 | |
6428 @node Q5.2.2, Q5.3.1, Q5.2.1, Internet | |
6429 @unnumberedsubsec Q5.2.2: How do I make Gnus stay within a single frame? | |
6430 | |
6431 The toolbar code to start Gnus opens the new frame---and it's a feature | |
6432 rather than a bug. If you don't like it, but would still like to click | |
6433 on the seemly icon, use the following code: | |
6434 | |
6435 @lisp | |
6436 (defun toolbar-news () | |
6437 (gnus)) | |
6438 @end lisp | |
6439 | |
6440 It will redefine the callback function of the icon to just call | |
6441 @code{gnus}, without all the fancy frame stuff. | |
6442 | |
6443 @unnumberedsec 5.3: FTP Access | |
6444 | |
6445 @node Q5.3.1, Q5.3.2, Q5.2.2, Internet | |
6446 @unnumberedsubsec Q5.3.1: Can I edit files on other hosts? | |
6447 | |
6448 Yes. Of course XEmacs can use any network file system (such as NFS or | |
6449 Windows file sharing) you have available, and includes some | |
6450 optimizations and safety features appropriate to those environments. | |
6451 | |
6452 It is also possible to transparently edit files via FTP, ssh, or rsh. That | |
6453 is, XEmacs makes a local copy using the transport in the background, and | |
6454 automatically refreshes the remote original from that copy when you save | |
6455 it. XEmacs also is capable of doing file system manipulations like | |
6456 creating and removing directories and files. The FTP interface is | |
6457 provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The | |
6458 ssh/rsh interface is provided by the optional @samp{tramp} package | |
6459 @ref{Top, TRAMP, , tramp}. | |
6460 | |
6461 @node Q5.3.2, Q5.4.1, Q5.3.1, Internet | |
6462 @unnumberedsubsec Q5.3.2: What is EFS? | |
6463 | |
6464 #### Write me. | |
6465 | |
6466 @unnumberedsec 5.4: Web Browsing with W3 | |
6467 | |
6468 @node Q5.4.1, Q5.4.2, Q5.3.2, Internet | |
6469 @unnumberedsubsec Q5.4.1: What is W3? | |
6470 | |
6471 W3 is an advanced graphical browser written in Emacs lisp that runs on | |
6472 XEmacs. It has full support for cascaded style sheets, and more... | |
6473 | |
6474 It has a home web page at | |
6475 @uref{http://www.cs.indiana.edu/elisp/w3/docs.html}. | |
6476 | |
6477 @node Q5.4.2, Q5.4.3, Q5.4.1, Internet | |
6478 @unnumberedsubsec Q5.4.2: How do I run W3 from behind a firewall? | |
6479 | |
6480 There is a long, well-written, detailed section in the W3 manual that | |
6481 describes how to do this. Look in the section entitled "Firewalls". | |
6482 | |
6483 @node Q5.4.3, , Q5.4.2, Internet | |
6484 @unnumberedsubsec Q5.4.3: Is it true that W3 supports style sheets and tables? | |
6485 | |
6486 Yes, and much more. W3, as distributed with the latest XEmacs is a | |
6487 full-featured web browser. | |
6488 | |
6489 @node Advanced, Current Events, Internet, Top | |
6490 @unnumbered 6 Advanced Customization Using XEmacs Lisp | |
6491 | |
6492 This is part 6 of the XEmacs Frequently Asked Questions list. This | |
6493 section is devoted to advanced customization using XEmacs Lisp. | |
6494 | |
6495 @menu | |
6496 6.0: Online Help | |
6497 * Q6.0.1:: How can I get two instances of info? | |
6498 * Q6.0.2:: How do I add new Info directories? | |
6499 | |
6500 6.1: Emacs Lisp and @file{init.el} | |
6501 * Q6.1.1:: What version of Emacs am I running? | |
6502 * Q6.1.2:: How can I evaluate Emacs-Lisp expressions? | |
6503 * Q6.1.3:: @code{(setq tab-width 6)} behaves oddly. | |
6504 * Q6.1.4:: How can I add directories to the @code{load-path}? | |
6505 * Q6.1.5:: How to check if a lisp function is defined? | |
6506 * Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer? | |
6507 | |
6508 6.2: Emacs Lisp Programming Techniques | |
6509 * Q6.2.1:: What is the difference in key sequences between XEmacs and GNU Emacs? | |
6510 * Q6.2.2:: Can I generate "fake" keyboard events? | |
6511 * Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail? | |
6512 * Q6.2.4:: What is the performance hit of @code{let}? | |
6513 * Q6.2.5:: What is the recommended use of @code{setq}? | |
6514 * Q6.2.6:: What is the typical misuse of @code{setq}? | |
6515 * Q6.2.7:: I like the @code{do} form of cl, does it slow things down? | |
6516 * Q6.2.8:: I like recursion, does it slow things down? | |
6517 * Q6.2.9:: How do I put a glyph as annotation in a buffer? | |
6518 * Q6.2.10:: @code{map-extents} won't traverse all of my extents! | |
6519 * Q6.2.11:: My elisp program is horribly slow. Is there | |
6520 | |
6521 6.3: Mathematics | |
6522 * Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp? | |
6523 * Q6.3.2:: XEmacs segfaults when I use very big numbers! | |
6524 * Q6.3.3:: Bignums are really slow! | |
6525 * Q6.3.4:: Equal bignums don't compare as equal! What gives? | |
6526 @end menu | |
6527 | |
6528 @unnumberedsec 6.0: Online Help | |
6529 | |
6530 @node Q6.0.1, Q6.0.2, Advanced, Advanced | |
6531 @unnumberedsubsec Q6.0.1: How can I get two instances of info? | |
6532 | |
6533 Before 21.4, you can't. The @code{info} package does not provide for | |
6534 multiple info buffers. In 21.4, this should be fixed. #### how? | |
6535 | |
6536 @node Q6.0.2, Q6.1.1, Q6.0.1, Advanced | |
6537 @unnumberedsubsec Q6.0.2: How do I add new Info directories? | |
6144 | 6538 |
6145 You use something like: | 6539 You use something like: |
6146 | 6540 |
6147 @lisp | 6541 @lisp |
6148 (setq Info-directory-list (cons | 6542 (setq Info-directory-list (cons |
6181 | 6575 |
6182 Another alternative is to convert the documentation to HTML with | 6576 Another alternative is to convert the documentation to HTML with |
6183 texi2html and read it from a web browser like Lynx or W3. | 6577 texi2html and read it from a web browser like Lynx or W3. |
6184 @end quotation | 6578 @end quotation |
6185 | 6579 |
6186 @node Q5.3.12, Q5.4.1, Q5.3.11, Miscellaneous | 6580 @unnumberedsec 6.1: Emacs Lisp and @file{init.el} |
6187 @unnumberedsubsec Q5.3.12: What do I need to change to make printing work? | 6581 |
6188 | 6582 @node Q6.1.1, Q6.1.2, Q6.0.2, Advanced |
6189 For regular printing there are two variables that can be customized. | 6583 @unnumberedsubsec Q6.1.1: What version of Emacs am I running? |
6190 | 6584 |
6191 @table @code | 6585 How can @file{init.el} determine which of the family of |
6192 @item lpr-command | 6586 Emacsen I am using? |
6193 This should be set to a command that takes standard input and sends | 6587 |
6194 it to a printer. Something like: | 6588 To determine if you are currently running GNU Emacs 18, GNU Emacs 19, |
6195 | 6589 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the |
6196 @lisp | 6590 example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in |
6197 (setq lpr-command "lp") | 6591 XEmacs versions prior to 21.4). There are other nifty things in there |
6198 @end lisp | 6592 as well! |
6199 | 6593 |
6200 @item lpr-switches | 6594 For all new code, all you really need to do is: |
6201 This should be set to a list that contains whatever the print command | 6595 |
6202 requires to do its job. Something like: | 6596 @lisp |
6203 | 6597 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) |
6204 @lisp | 6598 @end lisp |
6205 (setq lpr-switches '("-depson")) | 6599 |
6206 @end lisp | 6600 @node Q6.1.2, Q6.1.3, Q6.1.1, Advanced |
6207 @end table | 6601 @unnumberedsubsec Q6.1.2: How can I evaluate Emacs-Lisp expressions? |
6208 | 6602 |
6209 For postscript printing there are three analogous variables to | 6603 I know I can evaluate Elisp expressions from @code{*scratch*} buffer |
6210 customize. | 6604 with @kbd{C-j} after the expression. How do I do it from another |
6211 | 6605 buffer? |
6212 @table @code | 6606 |
6213 @item ps-lpr-command | 6607 Press @kbd{M-:} (the default binding of @code{eval-expression}), and |
6214 This should be set to a command that takes postscript on standard input | 6608 enter the expression to the minibuffer. |
6215 and directs it to a postscript printer. | 6609 |
6216 | 6610 @node Q6.1.3, Q6.1.4, Q6.1.2, Advanced |
6217 @item ps-lpr-switches | 6611 @unnumberedsubsec Q6.1.3: @code{(setq tab-width 6)} behaves oddly. |
6218 This should be set to a list of switches required for | 6612 |
6219 @code{ps-lpr-command} to do its job. | 6613 If you put @code{(setq tab-width 6)} in your |
6220 | 6614 @file{init.el} file it does not work! Is there a reason |
6221 @item ps-print-color-p | 6615 for this? If you do it at the EVAL prompt it works fine!! How strange. |
6222 This boolean variable should be set @code{t} if printing will be done in | 6616 |
6223 color, otherwise it should be set to @code{nil}. | 6617 Use @code{setq-default} instead, since @code{tab-width} is |
6224 @end table | 6618 all-buffer-local. |
6225 | 6619 |
6226 NOTE: It is an undocumented limitation in XEmacs that postscript | 6620 @node Q6.1.4, Q6.1.5, Q6.1.3, Advanced |
6227 printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a | 6621 @unnumberedsubsec Q6.1.4: How can I add directories to the @code{load-path}? |
6228 window system environment. It cannot be used outside of X11. | 6622 |
6229 | 6623 Here are two ways to do that, one that puts your directories at the |
6230 | 6624 front of the load-path, the other at the end: |
6231 @node Q5.4.1, Q5.4.2, Q5.3.12, Miscellaneous | 6625 |
6232 @unnumberedsec 5.4: Mathematics | 6626 @lisp |
6233 @unnumberedsubsec Q5.4.1: What are bignums, ratios, and bigfloats in Lisp? | 6627 ;;; Add things at the beginning of the load-path, do not add |
6628 ;;; duplicate directories: | |
6629 (pushnew "bar" load-path :test 'equal) | |
6630 | |
6631 (pushnew "foo" load-path :test 'equal) | |
6632 | |
6633 ;;; Add things at the end, unconditionally | |
6634 (setq load-path (nconc load-path '("foo" "bar"))) | |
6635 @end lisp | |
6636 | |
6637 @email{keithh@@nortel.ca, keith (k.p.) hanlan} writes: | |
6638 | |
6639 @quotation | |
6640 To add directories using Unix shell metacharacters use | |
6641 @file{expand-file-name} like this: | |
6642 | |
6643 @lisp | |
6644 (push (expand-file-name "~keithh/.emacsdir") load-path) | |
6645 @end lisp | |
6646 @end quotation | |
6647 | |
6648 @node Q6.1.5, Q6.1.6, Q6.1.4, Advanced | |
6649 @unnumberedsubsec Q6.1.5: How to check if a lisp function is defined? | |
6650 | |
6651 Use the following elisp: | |
6652 | |
6653 @lisp | |
6654 (fboundp 'foo) | |
6655 @end lisp | |
6656 | |
6657 It's almost always a mistake to test @code{emacs-version} or any similar | |
6658 variables. | |
6659 | |
6660 Instead, use feature-tests, such as @code{featurep}, @code{boundp}, | |
6661 @code{fboundp}, or even simple behavioral tests, eg.: | |
6662 | |
6663 @lisp | |
6664 (defvar foo-old-losing-code-p | |
6665 (condition-case nil (progn (losing-code t) nil) | |
6666 (wrong-number-of-arguments t))) | |
6667 @end lisp | |
6668 | |
6669 There is an incredible amount of broken code out there which could work | |
6670 much better more often in more places if it did the above instead of | |
6671 trying to divine its environment from the value of one variable. | |
6672 | |
6673 @node Q6.1.6, Q6.2.1, Q6.1.5, Advanced | |
6674 @unnumberedsubsec Q6.1.6: Can I force the output of @code{(face-list)} to a buffer? | |
6675 | |
6676 It would be good having it in a buffer, as the output of | |
6677 @code{(face-list)} is too wide to fit to a minibuffer. | |
6678 | |
6679 Evaluate the expression in the @samp{*scratch*} buffer with point after | |
6680 the rightmost paren and typing @kbd{C-j}. | |
6681 | |
6682 If the minibuffer smallness is the only problem you encounter, you can | |
6683 simply press @kbd{C-h l} to get the former minibuffer contents in a | |
6684 buffer. | |
6685 | |
6686 @unnumberedsec 6.2: Emacs Lisp Programming Techniques | |
6687 | |
6688 @node Q6.2.1, Q6.2.2, Q6.1.6, Advanced | |
6689 @unnumberedsubsec Q6.2.1: What is the difference in key sequences between XEmacs and GNU Emacs? | |
6690 | |
6691 @email{clerik@@naggum.no, Erik Naggum} writes; | |
6692 | |
6693 @quotation | |
6694 Emacs has a legacy of keyboards that produced characters with modifier | |
6695 bits, and therefore map a variety of input systems into this scheme even | |
6696 today. XEmacs is instead optimized for X events. This causes an | |
6697 incompatibility in the way key sequences are specified, but both Emacs | |
6698 and XEmacs will accept a key sequence as a vector of lists of modifiers | |
6699 that ends with a key, e.g., to bind @kbd{M-C-a}, you would say | |
6700 @code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated | |
6701 form for a single key, just (meta control a). Emacs has an abbreviated | |
6702 form for the Control and the Meta modifiers to string-characters (the | |
6703 ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware | |
6704 that the abbreviated form works only for one-character key sequences, | |
6705 while Emacs users need to be aware that the string-character is rather | |
6706 limited. Specifically, the string-character can accommodate only 256 | |
6707 different values, 128 of which have the Meta modifier and 128 of which | |
6708 have not. In each of these blocks, only 32 characters have the Control | |
6709 modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta | |
6710 control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A} | |
6711 do not. Programmers are advised to use the full common form, both | |
6712 because it is more readable and less error-prone, and because it is | |
6713 supported by both Emacsen. | |
6714 @end quotation | |
6715 | |
6716 Another (even safer) way to be sure of the key-sequences is to use the | |
6717 @code{read-kbd-macro} function, which takes a string like @samp{C-c | |
6718 <up>}, and converts it to the internal key representation of the Emacs | |
6719 you use. The function is available both on XEmacs and GNU Emacs. | |
6720 | |
6721 @node Q6.2.2, Q6.2.3, Q6.2.1, Advanced | |
6722 @unnumberedsubsec Q6.2.2: Can I generate "fake" keyboard events? | |
6723 | |
6724 I wonder if there is an interactive function that can generate | |
6725 @dfn{fake} keyboard events. This way, I could simply map them inside | |
6726 XEmacs. | |
6727 | |
6728 This seems to work: | |
6729 | |
6730 @lisp | |
6731 (defun cg--generate-char-event (ch) | |
6732 "Generate an event, as if ch has been typed" | |
6733 (dispatch-event (character-to-event ch))) | |
6734 | |
6735 ;; Backspace and Delete stuff | |
6736 (global-set-key [backspace] | |
6737 (lambda () (interactive) (cg--generate-char-event 127))) | |
6738 (global-set-key [unknown_keysym_0x4] | |
6739 (lambda () (interactive) (cg--generate-char-event 4))) | |
6740 @end lisp | |
6741 | |
6742 @node Q6.2.3, Q6.2.4, Q6.2.2, Advanced | |
6743 @unnumberedsubsec Q6.2.3: Could you explain @code{read-kbd-macro} in more detail? | |
6744 | |
6745 The @code{read-kbd-macro} function returns the internal Emacs | |
6746 representation of a human-readable string (which is its argument). | |
6747 Thus: | |
6748 | |
6749 @lisp | |
6750 (read-kbd-macro "C-c C-a") | |
6751 @result{} [(control ?c) (control ?a)] | |
6752 | |
6753 (read-kbd-macro "C-c C-. <up>") | |
6754 @result{} [(control ?c) (control ?.) up] | |
6755 @end lisp | |
6756 | |
6757 In GNU Emacs the same forms will be evaluated to what GNU Emacs | |
6758 understands internally---the sequences @code{"\C-x\C-c"} and @code{[3 | |
6759 67108910 up]}, respectively. | |
6760 | |
6761 The exact @dfn{human-readable} syntax is defined in the docstring of | |
6762 @code{edmacro-mode}. I'll repeat it here, for completeness. | |
6763 | |
6764 @quotation | |
6765 Format of keyboard macros during editing: | |
6766 | |
6767 Text is divided into @dfn{words} separated by whitespace. Except for | |
6768 the words described below, the characters of each word go directly as | |
6769 characters of the macro. The whitespace that separates words is | |
6770 ignored. Whitespace in the macro must be written explicitly, as in | |
6771 @kbd{foo @key{SPC} bar @key{RET}}. | |
6772 | |
6773 @itemize @bullet | |
6774 @item | |
6775 The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD}, | |
6776 @kbd{ESC}, and @kbd{NUL} represent special control characters. The | |
6777 words must be written in uppercase. | |
6778 | |
6779 @item | |
6780 A word in angle brackets, e.g., @code{<return>}, @code{<down>}, or | |
6781 @code{<f1>}, represents a function key. (Note that in the standard | |
6782 configuration, the function key @code{<return>} and the control key | |
6783 @key{RET} are synonymous.) You can use angle brackets on the words | |
6784 @key{RET}, @key{SPC}, etc., but they are not required there. | |
6785 | |
6786 @item | |
6787 Keys can be written by their @sc{ascii} code, using a backslash followed | |
6788 by up to six octal digits. This is the only way to represent keys with | |
6789 codes above \377. | |
6790 | |
6791 @item | |
6792 One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-} | |
6793 (shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may | |
6794 precede a character or key notation. For function keys, the prefixes | |
6795 may go inside or outside of the brackets: @code{C-<down>} @equiv{} | |
6796 @code{<C-down>}. The prefixes may be written in any order: @kbd{M-C-x} | |
6797 @equiv{} @kbd{C-M-x}. | |
6798 | |
6799 Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except | |
6800 that the Meta prefix is allowed on a sequence of digits and optional | |
6801 minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}. | |
6802 | |
6803 @item | |
6804 The @code{^} notation for control characters also works: @kbd{^M} | |
6805 @equiv{} @kbd{C-m}. | |
6806 | |
6807 @item | |
6808 Double angle brackets enclose command names: @code{<<next-line>>} is | |
6809 shorthand for @kbd{M-x next-line @key{RET}}. | |
6810 | |
6811 @item | |
6812 Finally, @code{REM} or @code{;;} causes the rest of the line to be | |
6813 ignored as a comment. | |
6814 @end itemize | |
6815 | |
6816 Any word may be prefixed by a multiplier in the form of a decimal number | |
6817 and @code{*}: @code{3*<right>} @equiv{} @code{<right> <right> <right>}, | |
6818 and @code{10*foo} @equiv{} | |
6819 @iftex | |
6820 @* | |
6821 @end iftex | |
6822 @code{foofoofoofoofoofoofoofoofoofoo}. | |
6823 | |
6824 Multiple text keys can normally be strung together to form a word, but | |
6825 you may need to add whitespace if the word would look like one of the | |
6826 above notations: @code{; ; ;} is a keyboard macro with three semicolons, | |
6827 but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but | |
6828 @code{\123} is a single key written in octal, and @code{< right >} is | |
6829 seven keys but @code{<right>} is a single function key. When in doubt, | |
6830 use whitespace. | |
6831 @end quotation | |
6832 | |
6833 @node Q6.2.4, Q6.2.5, Q6.2.3, Advanced | |
6834 @unnumberedsubsec Q6.2.4: What is the performance hit of @code{let}? | |
6835 | |
6836 In most cases, not noticeable. Besides, there's no avoiding | |
6837 @code{let}---you have to bind your local variables, after all. Some | |
6838 pose a question whether to nest @code{let}s, or use one @code{let} per | |
6839 function. I think because of clarity and maintenance (and possible | |
6840 future implementation), @code{let}-s should be used (nested) in a way to | |
6841 provide the clearest code. | |
6842 | |
6843 @node Q6.2.5, Q6.2.6, Q6.2.4, Advanced | |
6844 @unnumberedsubsec Q6.2.5: What is the recommended use of @code{setq}? | |
6845 | |
6846 @itemize @bullet | |
6847 @item Global variables | |
6848 | |
6849 You will typically @code{defvar} your global variable to a default | |
6850 value, and use @code{setq} to set it later. | |
6851 | |
6852 It is never a good practice to @code{setq} user variables (like | |
6853 @code{case-fold-search}, etc.), as it ignores the user's choice | |
6854 unconditionally. Note that @code{defvar} doesn't change the value of a | |
6855 variable if it was bound previously. If you wish to change a | |
6856 user-variable temporarily, use @code{let}: | |
6857 | |
6858 @lisp | |
6859 (let ((case-fold-search nil)) | |
6860 ... ; code with searches that must be case-sensitive | |
6861 ...) | |
6862 @end lisp | |
6863 | |
6864 You will notice the user-variables by their docstrings beginning with an | |
6865 asterisk (a convention). | |
6866 | |
6867 @item Local variables | |
6868 | |
6869 Bind them with @code{let}, which will unbind them (or restore their | |
6870 previous value, if they were bound) after exiting from the @code{let} | |
6871 form. Change the value of local variables with @code{setq} or whatever | |
6872 you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form | |
6873 can even return one of its local variables. | |
6874 | |
6875 Typical usage: | |
6876 | |
6877 @lisp | |
6878 ;; iterate through the elements of the list returned by | |
6879 ;; `hairy-function-that-returns-list' | |
6880 (let ((l (hairy-function-that-returns-list))) | |
6881 (while l | |
6882 ... do something with (car l) ... | |
6883 (setq l (cdr l)))) | |
6884 @end lisp | |
6885 | |
6886 Another typical usage includes building a value simply to work with it. | |
6887 | |
6888 @lisp | |
6889 ;; Build the mode keymap out of the key-translation-alist | |
6890 (let ((inbox (file-truename (expand-file-name box))) | |
6891 (i 0)) | |
6892 ... code dealing with inbox ... | |
6893 inbox) | |
6894 @end lisp | |
6895 | |
6896 This piece of code uses the local variable @code{inbox}, which becomes | |
6897 unbound (or regains old value) after exiting the form. The form also | |
6898 returns the value of @code{inbox}, which can be reused, for instance: | |
6899 | |
6900 @lisp | |
6901 (setq foo-processed-inbox | |
6902 (let .....)) | |
6903 @end lisp | |
6904 @end itemize | |
6905 | |
6906 @node Q6.2.6, Q6.2.7, Q6.2.5, Advanced | |
6907 @unnumberedsubsec Q6.2.6: What is the typical misuse of @code{setq}? | |
6908 | |
6909 A typical misuse is probably @code{setq}ing a variable that was meant to | |
6910 be local. Such a variable will remain bound forever, never to be | |
6911 garbage-collected. For example, the code doing: | |
6912 | |
6913 @lisp | |
6914 (defun my-function (whatever) | |
6915 (setq a nil) | |
6916 ... build a large list ... | |
6917 ... and exit ...) | |
6918 @end lisp | |
6919 | |
6920 does a bad thing, as @code{a} will keep consuming memory, never to be | |
6921 unbound. The correct thing is to do it like this: | |
6922 | |
6923 @lisp | |
6924 (defun my-function (whatever) | |
6925 (let (a) ; default initialization is to nil | |
6926 ... build a large list ... | |
6927 ... and exit, unbinding `a' in the process ...) | |
6928 @end lisp | |
6929 | |
6930 Not only is this prettier syntactically, but it makes it possible for | |
6931 Emacs to garbage-collect the objects which @code{a} used to reference. | |
6932 | |
6933 Note that even global variables should not be @code{setq}ed without | |
6934 @code{defvar}ing them first, because the byte-compiler issues warnings. | |
6935 The reason for the warning is the following: | |
6936 | |
6937 @lisp | |
6938 (defun flurgoze nil) ; ok, global internal variable | |
6939 ... | |
6940 | |
6941 (setq flurghoze t) ; ops! a typo, but semantically correct. | |
6942 ; however, the byte-compiler warns. | |
6943 | |
6944 While compiling toplevel forms: | |
6945 ** assignment to free variable flurghoze | |
6946 @end lisp | |
6947 | |
6948 @node Q6.2.7, Q6.2.8, Q6.2.6, Advanced | |
6949 @unnumberedsubsec Q6.2.7: I like the @code{do} form of cl, does it slow things down? | |
6950 | |
6951 It shouldn't. Here is what Dave Gillespie has to say about cl.el | |
6952 performance: | |
6953 | |
6954 @quotation | |
6955 Many of the advanced features of this package, such as @code{defun*}, | |
6956 @code{loop}, and @code{setf}, are implemented as Lisp macros. In | |
6957 byte-compiled code, these complex notations will be expanded into | |
6958 equivalent Lisp code which is simple and efficient. For example, the | |
6959 forms | |
6960 | |
6961 @lisp | |
6962 (incf i n) | |
6963 (push x (car p)) | |
6964 @end lisp | |
6965 | |
6966 are expanded at compile-time to the Lisp forms | |
6967 | |
6968 @lisp | |
6969 (setq i (+ i n)) | |
6970 (setcar p (cons x (car p))) | |
6971 @end lisp | |
6972 | |
6973 which are the most efficient ways of doing these respective operations | |
6974 in Lisp. Thus, there is no performance penalty for using the more | |
6975 readable @code{incf} and @code{push} forms in your compiled code. | |
6976 | |
6977 @emph{Interpreted} code, on the other hand, must expand these macros | |
6978 every time they are executed. For this reason it is strongly | |
6979 recommended that code making heavy use of macros be compiled. (The | |
6980 features labelled @dfn{Special Form} instead of @dfn{Function} in this | |
6981 manual are macros.) A loop using @code{incf} a hundred times will | |
6982 execute considerably faster if compiled, and will also garbage-collect | |
6983 less because the macro expansion will not have to be generated, used, | |
6984 and thrown away a hundred times. | |
6985 | |
6986 You can find out how a macro expands by using the @code{cl-prettyexpand} | |
6987 function. | |
6988 @end quotation | |
6989 | |
6990 @node Q6.2.8, Q6.2.9, Q6.2.7, Advanced | |
6991 @unnumberedsubsec Q6.2.8: I like recursion, does it slow things down? | |
6992 | |
6993 Yes. The Emacs byte-compiler cannot do much to optimize recursion. But | |
6994 think well whether this is a real concern in Emacs. Much of the Emacs | |
6995 slowness comes from internal mechanisms such as redisplay, or from the | |
6996 fact that it is an interpreter. | |
6997 | |
6998 Please try not to make your code much uglier to gain a very small speed | |
6999 gain. It's not usually worth it. | |
7000 | |
7001 @node Q6.2.9, Q6.2.10, Q6.2.8, Advanced | |
7002 @unnumberedsubsec Q6.2.9: How do I put a glyph as annotation in a buffer? | |
7003 | |
7004 Here is a solution that will insert the glyph annotation at the | |
7005 beginning of buffer: | |
7006 | |
7007 @lisp | |
7008 (make-annotation (make-glyph '([FORMAT :file FILE] | |
7009 [string :data "fallback-text"])) | |
7010 (point-min) | |
7011 'text | |
7012 (current-buffer)) | |
7013 @end lisp | |
7014 | |
7015 Replace @samp{FORMAT} with an unquoted symbol representing the format of | |
7016 the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.) | |
7017 Instead of @samp{FILE}, use the image file name | |
7018 (e.g. | |
7019 @iftex | |
7020 @* | |
7021 @end iftex | |
7022 @file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}). | |
7023 | |
7024 You can turn this to a function (that optionally prompts you for a file | |
7025 name), and inserts the glyph at @code{(point)} instead of | |
7026 @code{(point-min)}. | |
7027 | |
7028 @node Q6.2.10, Q6.2.11, Q6.2.9, Advanced | |
7029 @unnumberedsubsec Q6.2.10: @code{map-extents} won't traverse all of my extents! | |
7030 | |
7031 I tried to use @code{map-extents} to do an operation on all the extents | |
7032 in a region. However, it seems to quit after processing a random number | |
7033 of extents. Is it buggy? | |
7034 | |
7035 No. The documentation of @code{map-extents} states that it will iterate | |
7036 across the extents as long as @var{function} returns @code{nil}. | |
7037 Unexperienced programmers often forget to return @code{nil} explicitly, | |
7038 which results in buggy code. For instance, the following code is | |
7039 supposed to delete all the extents in a buffer, and issue as many | |
7040 @samp{fubar!} messages. | |
7041 | |
7042 @lisp | |
7043 (map-extents (lambda (ext ignore) | |
7044 (delete-extent ext) | |
7045 (message "fubar!"))) | |
7046 @end lisp | |
7047 | |
7048 Instead, it will delete only the first extent, and stop right there -- | |
7049 because @code{message} will return a non-nil value. The correct code | |
7050 is: | |
7051 | |
7052 @lisp | |
7053 (map-extents (lambda (ext ignore) | |
7054 (delete-extent ext) | |
7055 (message "fubar!") | |
7056 nil)) | |
7057 @end lisp | |
7058 | |
7059 @node Q6.2.11, Q6.3.1, Q6.2.10, Advanced | |
7060 @unnumberedsubsec Q6.2.11: My elisp program is horribly slow. Is there | |
7061 an easy way to find out where it spends time? | |
7062 @c New | |
7063 | |
7064 @email{hniksic@@xemacs.org, Hrvoje Niksic} writes: | |
7065 @quotation | |
7066 Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, | |
7067 press a key (say @key{RET} in the Gnus Group buffer), and get the | |
7068 results using @kbd{M-x profile-results}. It should give you an idea of | |
7069 where the time is being spent. | |
7070 @end quotation | |
7071 | |
7072 @unnumberedsec 6.3: Mathematics | |
7073 | |
7074 @node Q6.3.1, Q6.3.2, Q6.2.11, Advanced | |
7075 @unnumberedsubsec Q6.3.1: What are bignums, ratios, and bigfloats in Lisp? | |
6234 | 7076 |
6235 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and | 7077 Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and |
6236 later can use the capabilities of multiple-precision libraries that may | 7078 later can use the capabilities of multiple-precision libraries that may |
6237 be available for your platform. The GNU Multiple Precision (GMP) and | 7079 be available for your platform. The GNU Multiple Precision (GMP) and |
6238 BSD Multiple Precision (MP) libraries are partially supported. GMP | 7080 BSD Multiple Precision (MP) libraries are partially supported. GMP |
6256 User-visible changes in behavior include (in probable order of annoyance) | 7098 User-visible changes in behavior include (in probable order of annoyance) |
6257 | 7099 |
6258 @itemize | 7100 @itemize |
6259 @item | 7101 @item |
6260 Arithmetic can cause a segfault, depending on your MP library | 7102 Arithmetic can cause a segfault, depending on your MP library |
6261 @ref{Q5.4.2}. | 7103 @ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}. |
6262 | 7104 |
6263 @item | 7105 @item |
6264 Terminology is not Common-Lisp-conforming. For example, ``integer'' for | 7106 Terminology is not Common-Lisp-conforming. For example, ``integer'' for |
6265 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being | 7107 Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being |
6266 investigated, but the use of ``integer'' for fixnum is pervasive and may | 7108 investigated, but the use of ``integer'' for fixnum is pervasive and may |
6282 disabled at runtime. New functions have been added which produce | 7124 disabled at runtime. New functions have been added which produce |
6283 ratios, so there should be few surprises with type conflicts, but they | 7125 ratios, so there should be few surprises with type conflicts, but they |
6284 can't be ruled out. ``Arbitrary'' precision means precisely what it | 7126 can't be ruled out. ``Arbitrary'' precision means precisely what it |
6285 says. If you work with extremely large numbers, your machine may | 7127 says. If you work with extremely large numbers, your machine may |
6286 arbitrarily decide to hand you an unpleasant surprise rather than a | 7128 arbitrarily decide to hand you an unpleasant surprise rather than a |
6287 bignum @ref{Q5.4.2}. | 7129 bignum @ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}. |
6288 | 7130 |
6289 To configure with GNU MP, add | 7131 To configure with GNU MP, add |
6290 @samp{--use-number-lib=gmp} | 7132 @samp{--use-number-lib=gmp} |
6291 to your invocation of @file{configure}. For BSD MP, use | 7133 to your invocation of @file{configure}. For BSD MP, use |
6292 @samp{--use-number-lib=mp}. | 7134 @samp{--use-number-lib=mp}. |
6297 @file{number-mp.h}. Jerry has promised to write internals documentation | 7139 @file{number-mp.h}. Jerry has promised to write internals documentation |
6298 eventually, but if your skills run more to analysis and documentation | 7140 eventually, but if your skills run more to analysis and documentation |
6299 than to writing new code, feel free to fill in the gap! | 7141 than to writing new code, feel free to fill in the gap! |
6300 | 7142 |
6301 | 7143 |
6302 @node Q5.4.2, Q5.4.3, Q5.4.1, Miscellaneous | 7144 @node Q6.3.2, Q6.3.3, Q6.3.1, Advanced |
6303 @unnumberedsubsec Q5.4.2: XEmacs segfaults when I use very big numbers! | 7145 @unnumberedsubsec Q6.3.2: XEmacs segfaults when I use very big numbers! |
6304 | 7146 |
6305 GMP by default allocates temporaries on the stack. If you run out of | 7147 GMP by default allocates temporaries on the stack. If you run out of |
6306 stack space, you're dead; there is no way that we know of to reliably | 7148 stack space, you're dead; there is no way that we know of to reliably |
6307 detect this condition, because @samp{alloca} is typically implemented to | 7149 detect this condition, because @samp{alloca} is typically implemented to |
6308 be @emph{fast} rather than robust. If you just need a little more | 7150 be @emph{fast} rather than robust. If you just need a little more |
6315 @key{RET}}), which will give us platform information. (We do know that | 7157 @key{RET}}), which will give us platform information. (We do know that |
6316 BSD MP implementations vary across vendors, but how much, we do not know | 7158 BSD MP implementations vary across vendors, but how much, we do not know |
6317 yet.) | 7159 yet.) |
6318 | 7160 |
6319 | 7161 |
6320 @node Q5.4.3, Q5.4.4, Q5.4.2, Miscellaneous | 7162 @node Q6.3.3, Q6.3.4, Q6.3.2, Advanced |
6321 @unnumberedsubsec Q5.4.3: Bignums are really slow! | 7163 @unnumberedsubsec Q6.3.3: Bignums are really slow! |
6322 | 7164 |
6323 Many Linux distributions compile all their packages for the i386, and | 7165 Many Linux distributions compile all their packages for the i386, and |
6324 this is costly. An optimized version can give you two or three orders | 7166 this is costly. An optimized version can give you two or three orders |
6325 of magnitude better performance for a Pentium III or IV. (Yes, really. | 7167 of magnitude better performance for a Pentium III or IV. (Yes, really. |
6326 See @uref{http://www.swox.com/gmp/gmp-speed.html}.) | 7168 See @uref{http://www.swox.com/gmp/gmp-speed.html}.) |
6327 | 7169 |
6328 | 7170 |
6329 @node Q5.4.4, , Q5.4.3, Miscellaneous | 7171 @node Q6.3.4, , Q6.3.3, Advanced |
6330 @unnumberedsubsec Q5.4.4: Equal bignums don't compare as equal! What gives? | 7172 @unnumberedsubsec Q6.3.4: Equal bignums don't compare as equal! What gives? |
6331 | 7173 |
6332 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva | 7174 Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva |
6333 CLTL2 warned of the illusion that equal numbers would be @samp{eq}! | 7175 CLTL2 warned of the illusion that equal numbers would be @samp{eq}! |
6334 Meditate on the deeper truths of @samp{eql}, in which numbers of the same | 7176 Meditate on the deeper truths of @samp{eql}, in which numbers of the same |
6335 type which have equal values compare equal, and @samp{=}, which does any | 7177 type which have equal values compare equal, and @samp{=}, which does any |
6339 characters have an immediate representation. Sorry about that; | 7181 characters have an immediate representation. Sorry about that; |
6340 arbitrary precision obviously requires consing new objects because the | 7182 arbitrary precision obviously requires consing new objects because the |
6341 objects are ``large'' and of variable size, and the definition of | 7183 objects are ``large'' and of variable size, and the definition of |
6342 @samp{eq} does not permit different objects to compare as equal. | 7184 @samp{eq} does not permit different objects to compare as equal. |
6343 | 7185 |
6344 | 7186 @node Current Events, Legacy Versions, Advanced, Top |
6345 @node MS Windows, Current Events, Miscellaneous, Top | |
6346 @unnumbered 6 XEmacs on MS Windows | |
6347 | |
6348 This is part 6 of the XEmacs Frequently Asked Questions list, written by | |
6349 Hrvoje Niksic and others. This section is devoted to the MS Windows | |
6350 port of XEmacs. | |
6351 | |
6352 @menu | |
6353 General Info | |
6354 * Q6.0.1:: What is the status of the XEmacs port to Windows? | |
6355 * Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only. | |
6356 * Q6.0.3:: Are binaries available? | |
6357 * Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to? | |
6358 * Q6.0.5:: I'd like to help out. What do I do? | |
6359 * Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs? | |
6360 * Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows? | |
6361 | |
6362 Building XEmacs on MS Windows: | |
6363 * Q6.1.1:: What compiler/libraries do I need to compile XEmacs? | |
6364 * Q6.1.2:: How do I compile the native port? | |
6365 * Q6.1.3:: What do I need for Cygwin? | |
6366 * Q6.1.4:: How do I compile under Cygwin? | |
6367 * Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? | |
6368 * Q6.1.6:: I decided to run with X. Where do I get an X server? | |
6369 * Q6.1.7:: How do I compile with X support? | |
6370 | |
6371 Customization and User Interface: | |
6372 * Q6.2.1:: How does the port cope with differences in the Windows user interface? | |
6373 * Q6.2.2:: How do I change fonts in XEmacs on MS Windows? | |
6374 * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file? | |
6375 * Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs? | |
6376 * Q6.2.5:: Is it possible to print from XEmacs? | |
6377 | |
6378 Miscellaneous: | |
6379 * Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? | |
6380 * Q6.3.2:: What are the differences between the various MS Windows emacsen? | |
6381 * Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? | |
6382 * Q6.3.4:: What is the porting team doing at the moment? | |
6383 | |
6384 Troubleshooting: | |
6385 * Q6.4.1:: XEmacs won't start on Windows. | |
6386 * Q6.4.2:: Why do I get a blank toolbar on Windows 95? | |
6387 * Q6.4.3:: XEmacs complains "No such file or directory, diff" | |
6388 @end menu | |
6389 | |
6390 @node Q6.0.1, Q6.0.2, MS Windows, MS Windows | |
6391 @unnumberedsec 6.0: General Info | |
6392 @unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows? | |
6393 | |
6394 Is XEmacs really ported to MS Windows? What is the status of the port? | |
6395 | |
6396 Beginning with release 21.0, XEmacs has worked under MS Windows. A | |
6397 group of dedicated developers actively maintains and improves the | |
6398 Windows-specific portions of the code. The mailing list at | |
6399 @email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use | |
6400 the -request address to subscribe). (Despite its name, XEmacs actually | |
6401 works on all versions of Windows.) | |
6402 | |
6403 As of May 2001, XEmacs on MS Windows is stable and full-featured, and | |
6404 has been so for a year or more -- in fact, some features, such as | |
6405 printing, actually work better on Windows than native Unix. However, | |
6406 the internationalization (Mule) support does not work -- although this | |
6407 is being actively worked on. | |
6408 | |
6409 | |
6410 @node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows | |
6411 @unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported? The list name implies NT only. | |
6412 | |
6413 The list name is misleading, as XEmacs supports and has been compiled on | |
6414 Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows | |
6415 XP, and all newer versions of Windows. The MS Windows-specific code is | |
6416 based on Microsoft Win32 API, and will not work on MS Windows 3.x or on | |
6417 MS-DOS. | |
6418 | |
6419 XEmacs also supports the Cygwin and MinGW development and runtime | |
6420 environments, where it also uses native Windows code for graphical | |
6421 features. | |
6422 | |
6423 | |
6424 @node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows | |
6425 @unnumberedsubsec Q6.0.3: Are binaries available? | |
6426 | |
6427 Binaries are available at @uref{http://www.xemacs.org/Download/win32/} | |
6428 for the native and Cygwin MS Windows versions of 21.4, and the native | |
6429 version of 21.1. | |
6430 | |
6431 The 21.4 binaries use a modified version of the Cygwin installer. Run | |
6432 the provided @file{setup.exe}, and follow the instructions. | |
6433 | |
6434 | |
6435 @node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows | |
6436 @unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support? Do I need to? | |
6437 | |
6438 Yes, you can, but no you do not need to. In fact, we recommend that you | |
6439 use a native-GUI version unless you have a specific need for an X | |
6440 version. | |
6441 | |
6442 @node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows | |
6443 @unnumberedsubsec Q6.0.5: I'd like to help out. What do I do? | |
6444 | |
6445 It depends on the knowledge and time you possess. If you are a | |
6446 programmer, try to build XEmacs and see if you can improve it. | |
6447 Windows-specific improvements like integration with established | |
6448 Windows environments are especially sought after. | |
6449 | |
6450 Otherwise, you can still help by downloading the binaries, using | |
6451 XEmacs as your everyday editor and reporting bugs you find to the | |
6452 mailing list. | |
6453 | |
6454 Another area where we need help is the documentation: We need good | |
6455 documentation for building XEmacs and for using it. This FAQ is a | |
6456 small step in that direction. | |
6457 | |
6458 @node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows | |
6459 @unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs? | |
6460 | |
6461 To answer the second part of the question: No, you, you don't need | |
6462 Cygwin or MinGW to build or to run XEmacs. But if you have them and | |
6463 want to use them, XEmacs supports these environments. | |
6464 | |
6465 (One important reason to support Cygwin is that it lets the MS Windows | |
6466 developers test out their code in a Unix environment without actually | |
6467 having to have a Unix machine around. For this reason alone, Cygwin | |
6468 support is likely to remain supported for a long time in XEmacs. Same | |
6469 goes for the X support under Cygwin, for the same reasons. MinGW | |
6470 support, on the other hand, depends on volunteers to keep it up to date; | |
6471 but this is generally not hard.) | |
6472 | |
6473 Cygwin is a set of tools providing Unix-like API on top of Win32. | |
6474 It makes it easy to port large Unix programs without significant | |
6475 changes to their source code. It is a development environment as well | |
6476 as a runtime environment. | |
6477 | |
6478 When built with Cygwin, XEmacs supports all display types -- TTY, X & | |
6479 Win32 GUI, and can be built with support for all three simultaneously. | |
6480 If you build with Win32 GUI support then the Cygwin version uses the | |
6481 majority of the Windows-specific code, which is mostly related to | |
6482 display. If you want to build with X support you need X libraries (and | |
6483 an X server to display XEmacs on); see @ref{Q6.1.4}. TTY and Win32 GUI | |
6484 require no additional libraries beyond what comes standard with Cygwin. | |
6485 | |
6486 The advantages of the Cygwin version are that it integrates well with | |
6487 the Cygwin environment for existing Cygwin users; uses configure so | |
6488 building with different features is very easy; and actively supports X & | |
6489 TTY. Furthermore, the entire Cygwin environment and compiler are free, | |
6490 whereas Visual C++ costs money. | |
6491 | |
6492 The disadvantage is that it requires the whole Cygwin environment, | |
6493 whereas the native port requires only a suitable MS Windows compiler. | |
6494 Also, it follows the Unix filesystem and process model very closely | |
6495 (some will undoubtedly view this as an advantage). | |
6496 | |
6497 See @uref{http://sources.redhat.com/cygwin/} for more information on | |
6498 Cygwin. | |
6499 | |
6500 MinGW is a collection of header files and import libraries that allow | |
6501 one to use GCC under the Cygwin environment to compile and produce | |
6502 exactly the same native Win32 programs that you can using Visual C++. | |
6503 Programs compiled with MinGW make use of the standard Microsoft runtime | |
6504 library @file{MSVCRT.DLL}, present on all Windows systems, and look, | |
6505 feel, and act like a standard Visual-C-produced application. (The only | |
6506 difference is the compiler.) This means that, unlike a | |
6507 standardly-compiled Cygwin application, no extra runtime support | |
6508 (e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the | |
6509 fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y | |
6510 environment, for those die-hard Unix hackers out there), is the main | |
6511 advantage of MinGW. It is also potentially faster than Cygwin because | |
6512 it has less overhead when calling Windows, but you lose the POSIX | |
6513 emulation layer, which makes Unix programs harder to port. (But this is | |
6514 irrelevant for XEmacs since it's already ported to Win32.) | |
6515 | |
6516 See @uref{http://www.mingw.org/} for more information on MinGW. | |
6517 | |
6518 @node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows | |
6519 @unnumberedsubsec Q6.0.7: What exactly are all the different ways to build XEmacs under Windows? | |
6520 | |
6521 XEmacs can be built in several ways in the MS Windows environment. | |
6522 | |
6523 The standard way is what we call the "native" port. It uses the Win32 | |
6524 API and has no connection with X whatsoever -- it does not require X | |
6525 libraries to build, nor does it require an X server to run. The native | |
6526 port is the most reliable version and provides the best graphical | |
6527 support. Almost all development is geared towards this version, and | |
6528 there is little reason not to use it. | |
6529 | |
6530 The second way to build is the Cygwin port. It takes advantage of | |
6531 Cygnus emulation library under Win32. @xref{Q6.0.6}, for more | |
6532 information. | |
6533 | |
6534 A third way is the MinGW port. It uses the Cygwin environment to build | |
6535 but does not require it at runtime. @xref{Q6.0.6}, for more | |
6536 information. | |
6537 | |
6538 Finally, you might also be able to build the non-Cygwin, non-MinGW "X" | |
6539 port. This was actually the first version of XEmacs that ran under MS | |
6540 Windows, and although the code is still in XEmacs, it's essentially | |
6541 orphaned and it's unlikely it will compile without a lot of work. If | |
6542 you want an MS Windows versin of XEmacs that supports X, use the Cygwin | |
6543 version. (The X support there is actively maintained, so that Windows | |
6544 developers can test the X support in XEmacs.) | |
6545 | |
6546 | |
6547 @node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows | |
6548 @unnumberedsec 6.1: Building XEmacs on MS Windows | |
6549 @unnumberedsubsec Q6.1.1: What compiler/libraries do I need to compile XEmacs? | |
6550 | |
6551 You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have | |
6552 some beta testers currently trying to compile with VC.NET, aka version | |
6553 7.0, but we can't yet report complete success.) For the Cygwin and MinGW | |
6554 versions, you need the Cygwin environment, which comes with GCC, the | |
6555 compiler used for those versions. @xref{Q6.0.6}, for more information | |
6556 on Cygwin and MinGW. | |
6557 | |
6558 @node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows | |
6559 @unnumberedsubsec Q6.1.2: How do I compile the native port? | |
6560 | |
6561 Please read the file @file{nt/README} in the XEmacs distribution, which | |
6562 contains the full description. | |
6563 | |
6564 @node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows | |
6565 @unnumberedsubsec Q6.1.3: What do I need for Cygwin? | |
6566 | |
6567 You can find the Cygwin tools and compiler at: | |
6568 | |
6569 @uref{http://sources.redhat.com/cygwin/} | |
6570 | |
6571 Click on the @samp{Install now!} link, which will download a file | |
6572 @file{setup.exe}, which you can use to download everything else. (You | |
6573 will need to pick a mirror site; @samp{mirrors.rcn.net} is probably the | |
6574 best.) You should go ahead and install everything -- you'll get various | |
6575 ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG, | |
6576 TIFF, etc. | |
6577 | |
6578 If you want to compile under X, you will also need the X libraries; see | |
6579 @ref{Q6.1.6}. | |
6580 | |
6581 If you want to compile without X, you will need the @file{xpm-nox} | |
6582 library, which must be specifically selected in the Cygwin netinstaller; | |
6583 it is not selected by default. The package has had various names. | |
6584 Currently it is called @file{cygXpm-noX4.dll}. | |
6585 | |
6586 | |
6587 @node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows | |
6588 @unnumberedsubsec Q6.1.4: How do I compile under Cygwin? | |
6589 | |
6590 Similar as on Unix; use the usual `configure' and `make' process. | |
6591 Some problems to watch out for: | |
6592 | |
6593 @itemize @bullet | |
6594 @item | |
6595 make sure HOME is set. This controls where you | |
6596 @file{init.el}/@file{.emacs} file comes from; | |
6597 | |
6598 @item | |
6599 CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty; | |
6600 | |
6601 @item | |
6602 picking up some other grep or other UNIX-like tools can kill configure; | |
6603 | |
6604 @item | |
6605 static heap too small, adjust @file{src/sheap-adjust.h} to a more positive | |
6606 number; | |
6607 | |
6608 @item | |
6609 (Unconfirmed) The Cygwin version doesn't understand | |
6610 @file{//machine/path} type paths so you will need to manually mount a | |
6611 directory of this form under a unix style directory for a build to work | |
6612 on the directory; | |
6613 | |
6614 @item | |
6615 If you're building @strong{WITHOUT} X11, don't forget to change symlinks | |
6616 @file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to | |
6617 the non-X versions of these libraries. By default they point to the X | |
6618 versions. So: | |
6619 | |
6620 @example | |
6621 /usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a | |
6622 /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a | |
6623 @end example | |
6624 | |
6625 (This advice may now be obsolete because of the availability of the | |
6626 cygXpm-noX4.dll package from Cygwin. Send confirmation to | |
6627 @email{faq@@xemacs.org}.) | |
6628 | |
6629 @item | |
6630 Other problems are listed in the @file{PROBLEMS} file, in the top-level | |
6631 directory of the XEmacs sources. | |
6632 | |
6633 @end itemize | |
6634 | |
6635 | |
6636 @node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows | |
6637 @unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? | |
6638 | |
6639 Similar to the method for Unix. Things to remember: | |
6640 | |
6641 @itemize @bullet | |
6642 @item | |
6643 Specify the target host on the command line for @file{./configure}, e.g. | |
6644 @samp{./configure i586-pc-mingw32}. | |
6645 | |
6646 @item | |
6647 Be sure that your build directory is mounted such that it has the | |
6648 same path either as a cygwin path (@file{/build/xemacs}) or as a Windows | |
6649 path (@file{c:\build\xemacs}). | |
6650 | |
6651 @item | |
6652 Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng}, | |
6653 @file{compface}, etc. | |
6654 | |
6655 @item | |
6656 Specify the target location of the extra libs on the command line | |
6657 to @file{configure}, e.g. | |
6658 @samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}. | |
6659 @end itemize | |
6660 | |
6661 | |
6662 @node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows | |
6663 @unnumberedsubsec Q6.1.6: I decided to run with X. Where do I get an X server? | |
6664 | |
6665 As of May 2001, we are recommending that you use the port of XFree86 to | |
6666 Cygwin. This has recently stabilized, and will undoubtedly soon make | |
6667 most other MS Windows X servers obsolete. It is what the Windows | |
6668 developers use to test the MS Windows X support. | |
6669 | |
6670 To install, go to @uref{http://xfree86.cygwin.com/}. There is a | |
6671 detailed description on that site of exactly how to install it. This | |
6672 installation also provides the libraries, include files, and other stuff | |
6673 needed for development; a large collection of internationalized fonts; | |
6674 the standard X utilities (xterm, twm, etc.) -- in a word, the works. | |
6675 | |
6676 NOTE: As of late May 2001, there is a bug in the file | |
6677 @file{startxwin.bat}, used to start X Windows. It passes the option | |
6678 @samp{-engine -4} to the X server, which is bogus -- you need to edit | |
6679 the file and change it to @samp{-engine 4}. | |
6680 | |
6681 | |
6682 @node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows | |
6683 @unnumberedsubsec Q6.1.7: How do I compile with X support? | |
6684 | |
6685 To compile under Cygwin, all you need to do is install XFree86 | |
6686 (@pxref{Q6.1.6}). Once installed, @file{configure} should automatically | |
6687 find the X libraries and compile with X support. | |
6688 | |
6689 As noted above, the non-Cygwin X support is basically orphaned, and | |
6690 probably won't work. But if it want to try, it's described in | |
6691 @file{nt/README} in some detail. Basically, you need to get X11 | |
6692 libraries from ftp.x.org, and compile them. If the precompiled versions | |
6693 are available somewhere, we don't know of it. | |
6694 | |
6695 | |
6696 @node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows | |
6697 @unnumberedsec 6.2: Customization and User Interface | |
6698 @unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface? | |
6699 | |
6700 The XEmacs (and Emacs in general) user interface is pretty different | |
6701 from what is expected of a typical MS Windows program. How does the MS | |
6702 Windows port cope with it? | |
6703 | |
6704 As a general rule, we follow native MS Windows conventions as much as | |
6705 possible. 21.4 is a fairly complete Windows application, supporting | |
6706 native printing, system file dialog boxes, tool tips, etc. In cases | |
6707 where there's a clear UI conflict, we currently use normal Unix XEmacs | |
6708 behavior by default, but make sure the MS Windows "look and feel" (mark | |
6709 via shift-arrow, self-inserting deletes region, Alt selects menu items, | |
6710 etc.) is easily configurable (respectively: using the variable | |
6711 @code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact | |
6712 the default in these versions], or the @file{pc-select} package; using | |
6713 the @file{pending-del} package; and setting the variable | |
6714 @code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above). | |
6715 In fact, if you use the sample @file{init.el} file as your init file, | |
6716 you will get all these behaviors automatically turned on. | |
6717 | |
6718 In future versions, some of these features might be turned on by | |
6719 default in the MS Windows environment. | |
6720 | |
6721 | |
6722 @node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows | |
6723 @unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows? | |
6724 | |
6725 In 21.4 and above, you can use the "Options" menu to change the font. | |
6726 You can also do it in your init file, e.g. like this: | |
6727 | |
6728 @display | |
6729 (set-face-font 'default "Lucida Console:Regular:10") | |
6730 (set-face-font 'modeline "MS Sans Serif:Regular:10") | |
6731 @end display | |
6732 | |
6733 | |
6734 @node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows | |
6735 @unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file? | |
6736 | |
6737 @file{init.el} is the name of the init file starting with 21.4, and is | |
6738 located in the subdirectory @file{.xemacs/} of your home directory. In | |
6739 prior versions, the init file is called @file{.emacs} and is located in | |
6740 your home directory. Your home directory under Windows is determined by | |
6741 the @samp{HOME} environment variable. If this is not set, it defaults to | |
6742 @samp{C:\}. | |
6743 | |
6744 To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or | |
6745 select @samp{Control Panel->System->Advanced->Environment Variables...} | |
6746 under Windows NT/2000. | |
6747 | |
6748 | |
6749 @node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows | |
6750 @unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs? | |
6751 | |
6752 @unnumberedsubsubsec Associating a new file type with XEmacs. | |
6753 | |
6754 In Explorer select @samp{View/Options/File Types}, press @samp{[New | |
6755 Type...]} and fill in the dialog box, e.g.: | |
6756 | |
6757 @example | |
6758 Description of type: Emacs Lisp source | |
6759 Associated extension: el | |
6760 Content Type (MIME): text/plain | |
6761 @end example | |
6762 | |
6763 then press @samp{[New...]} and fill in the @samp{Action} dialog box as | |
6764 follows: | |
6765 | |
6766 @example | |
6767 Action: | |
6768 Open | |
6769 | |
6770 Application used to perform action: | |
6771 D:\Full\path\for\xemacs.exe "%1" | |
6772 | |
6773 [x] Use DDE | |
6774 | |
6775 DDE Message: | |
6776 open("%1") | |
6777 | |
6778 Application: | |
6779 <leave blank> | |
6780 | |
6781 DDE Application Not Running: | |
6782 <leave blank> | |
6783 | |
6784 Topic: | |
6785 <leave blank> | |
6786 @end example | |
6787 | |
6788 @unnumberedsubsubsec Associating an existing file type with XEmacs. | |
6789 | |
6790 In Explorer select @samp{View/Options/File Types}. Click on the file | |
6791 type in the list and press @samp{[Edit...]}. If the file type already | |
6792 has an @samp{Open} action, double click on it and fill in the | |
6793 @samp{Action} dialog box as described above; otherwise create a new | |
6794 action. | |
6795 | |
6796 If the file type has more than one action listed, you probably want to | |
6797 make the @samp{Open} action that you just edited the default by clicking on | |
6798 it and pressing @samp{Set Default}. | |
6799 | |
6800 Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types} | |
6801 using @samp{Control Panel->Folder Options->File Types}. | |
6802 | |
6803 | |
6804 @node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows | |
6805 @unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs? | |
6806 | |
6807 As of 21.4, printing works on Windows, using simply @samp{File->Print}, | |
6808 and can be configured with @samp{File->Page Setup}. | |
6809 | |
6810 Prior to 21.4, there is no built-in support, but there are some clever | |
6811 hacks out there. If you know how, please let us know and we'll put it | |
6812 here. | |
6813 | |
6814 | |
6815 @node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows | |
6816 @unnumberedsec 6.3: Miscellaneous | |
6817 @unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? | |
6818 | |
6819 In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*} | |
6820 symbols to @samp{w32-*}. Does XEmacs do the same? | |
6821 | |
6822 We consider such a move counter-productive, thus we do not use the | |
6823 @samp{w32} prefix. (His rather questionable justification was that he | |
6824 did not consider Windows to be a "winning" platform.) However, the name | |
6825 @samp{Win32} is not particularly descriptive outside the Windows world, | |
6826 and using just @samp{windows-} would be too generic. So we chose a | |
6827 compromise, the prefix @samp{mswindows-} for Windows-related variables | |
6828 and functions. | |
6829 | |
6830 Thus all the XEmacs variables and functions directly related to either | |
6831 the Windows GUI or OS are prefixed @samp{mswindows-} (except for a | |
6832 couple of debugging variables, prefixed @samp{debug-mswindows-}). From | |
6833 an architectural perspective, however, we believe that this is mostly a | |
6834 non-issue because there should be a very small number of | |
6835 window-systems-specific variables anyway. Whenever possible, we try to | |
6836 provide generic interfaces that apply to all window systems. | |
6837 | |
6838 @c not true: | |
6839 @c The user variables | |
6840 @c that share functionality with existing NT Emacs variables are be named | |
6841 @c with our convention, but we provide the GNU Emacs names as | |
6842 @c compatibility aliases. | |
6843 | |
6844 | |
6845 @node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows | |
6846 @unnumberedsubsec Q6.3.2: What are the differences between the various MS Windows emacsen? | |
6847 | |
6848 XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing. | |
6849 Could you briefly explain the differences between them? | |
6850 | |
6851 Here is a recount of various Emacs versions running on MS Windows: | |
6852 | |
6853 @itemize @bullet | |
6854 | |
6855 @item | |
6856 XEmacs | |
6857 | |
6858 @itemize @minus | |
6859 | |
6860 @item | |
6861 Beginning with XEmacs 19.12, XEmacs' architecture was redesigned | |
6862 in such a way to allow clean support of multiple window systems. At | |
6863 this time the TTY support was added, making X and TTY the first two | |
6864 "window systems" supported by XEmacs. The 19.12 design is the basis for | |
6865 the current native MS Windows code. | |
6866 | |
6867 @item | |
6868 Some time during 1997, David Hobley (soon joined by Marc Paquette) | |
6869 imported some of the NT-specific portions of GNU Emacs, making XEmacs | |
6870 with X support compile under Windows NT, and creating the "X" port. | |
6871 | |
6872 @item | |
6873 Several months later, Jonathan Harris sent out initial patches to use | |
6874 the Win32 API, thus creating the native port. Since then, various | |
6875 people have contributed, including Kirill M. Katsnelson (contributed | |
6876 support for menubars, subprocesses and network, as well as loads of | |
6877 other code), Andy Piper (ported XEmacs to Cygwin environment, | |
6878 contributed Windows unexec, Windows-specific glyphs and toolbars code, | |
6879 and more), Ben Wing (loads of improvements; primary MS Windows developer | |
6880 since 2000), Jeff Sparkes (contributed scrollbars support) and many | |
6881 others. | |
6882 @end itemize | |
6883 | |
6884 @item | |
6885 NT Emacs | |
6886 | |
6887 @itemize @minus | |
6888 | |
6889 @item | |
6890 NT Emacs is a version of GNU Emacs modified to compile and run under MS | |
6891 Windows 95 and NT using the native Win32 API. As such, it is close in | |
6892 spirit to the XEmacs "native" port. | |
6893 | |
6894 @item | |
6895 NT Emacs has been written by Geoff Voelker, and more information can be | |
6896 found at | |
6897 @iftex | |
6898 @* | |
6899 @end iftex | |
6900 @uref{http://www.gnu.org/software/emacs/windows/ntemacs.html}. | |
6901 @end itemize | |
6902 | |
6903 @item | |
6904 Win-Emacs | |
6905 | |
6906 @itemize @minus | |
6907 | |
6908 @item | |
6909 Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X | |
6910 compatibility libraries. Win-Emacs was written by Ben Wing. The MS | |
6911 Windows code never made it back to Lucid Emacs, and its creator (Pearl | |
6912 Software) has long since gone out of business. | |
6913 @end itemize | |
6914 | |
6915 @item | |
6916 GNU Emacs for DOS | |
6917 | |
6918 @itemize @minus | |
6919 | |
6920 @item | |
6921 GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS | |
6922 port of GCC). Such an Emacs is heavily underfeatured, because it does | |
6923 not support long file names, lacks proper subprocesses support, and | |
6924 is far too big compared with typical DOS editors. | |
6925 @end itemize | |
6926 | |
6927 @item | |
6928 GNU Emacs compiled with Win32 | |
6929 | |
6930 @itemize @minus | |
6931 | |
6932 @item | |
6933 Starting with version 19.30, it has been possible to compile GNU Emacs | |
6934 under MS Windows using the DJGPP compiler and X libraries. The result | |
6935 is very similar to GNU Emacs compiled under MS DOS, only it works | |
6936 somewhat better because it runs in 32-bit mode, makes use of all the | |
6937 system memory, supports long file names, etc. | |
6938 @end itemize | |
6939 | |
6940 @end itemize | |
6941 | |
6942 | |
6943 @node Q6.3.3, Q6.3.4, Q6.3.2, MS Windows | |
6944 @unnumberedsubsec Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? | |
6945 | |
6946 Yes. | |
6947 | |
6948 The console was there because @file{temacs} (and in turn, @file{xemacs}) | |
6949 was a console application, and Windows typically creates a new | |
6950 console for a console process unless the creating process requests that | |
6951 one isn't created. This used to be fixed with @file{runemacs}, a small | |
6952 Windows application that existed merely to start @file{xemacs}, stating | |
6953 that it didn't want a console. | |
6954 | |
6955 XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI" | |
6956 application. The explanation of what that means is included for | |
6957 educational value. | |
6958 | |
6959 When building an application to be run in a Win32 environment, you must | |
6960 state which sub-system it is to run in. Valid subsystems include | |
6961 "console" and "gui". The subsystem you use affects the run time | |
6962 libraries linked into your application, the start up function that is | |
6963 run before control is handed over to your application, the entry point | |
6964 to your program, and how Windows normally invokes your program. (Console | |
6965 programs automatically get a console created for them at startup if | |
6966 their stdin/stdout don't point anywhere useful, which is the case when | |
6967 run from the GUI. This is a stupid design, of course -- instead, the | |
6968 console should get created only when the first I/O actually occurs! | |
6969 GUI programs have an equally stupid design: When called from | |
6970 @file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to | |
6971 point nowhere useful, even though the command shell has its own | |
6972 stdin/stdout. It's as if someone who had learned a bit about stdio but | |
6973 had no actual knowledge of interprocess communication designed the | |
6974 scheme; unfortunately, the whole process-communication aspect of the | |
6975 Win32 API is equally badly designed.) For example, the entry point for a | |
6976 console app is "main" (which is what you'd expect for a C/C++ program), | |
6977 but the entry point for a "gui" app is "WinMain". This confuses and | |
6978 annoys a lot of programmers who've grown up on Unix systems, where the | |
6979 kernel doesn't really care whether your application is a gui program or | |
6980 not. | |
6981 | |
6982 For reasons not altogether clear, and are lost in the mists of time and | |
6983 tradition, XEmacs on Win32 started out as a console application, and | |
6984 therefore a console was automatically created for it. (It may have been | |
6985 made a console application partly because a console is needed in some | |
6986 circumstances, especially under Win95, to interrupt, terminate, or send | |
6987 signals to a child process, and because of the bogosity mentioned above | |
6988 with GUI programs and the standard command shell. Currently, XEmacs | |
6989 just creates and immediately hides a console when necessary, and | |
6990 works around the "no useful stdio" problem by creating its own console | |
6991 window as necessary to display messages in.) | |
6992 | |
6993 | |
6994 @node Q6.3.4, Q6.4.1, Q6.3.3, MS Windows | |
6995 @unnumberedsubsec Q6.3.4: What is the porting team doing at the moment? | |
6996 | |
6997 (as of June 2001) | |
6998 | |
6999 The porting team is continuing work on the MS Windows-specific code. | |
7000 Major projects are the development of Mule (internationalization) | |
7001 support for Windows and the improvement of the widget support (better | |
7002 support for dialog boxes, buttons, edit fields, and similar UI | |
7003 elements). | |
7004 | |
7005 | |
7006 | |
7007 @node Q6.4.1, Q6.4.2, Q6.3.4, MS Windows | |
7008 @unnumberedsec 6.4: Troubleshooting | |
7009 @unnumberedsubsec Q6.4.1 XEmacs won't start on Windows. | |
7010 | |
7011 XEmacs relies on a process called "dumping" to generate a working | |
7012 executable. Under MS-Windows this process effectively fixes the memory | |
7013 addresses of information in the executable. When XEmacs starts up it tries | |
7014 to reserve these memory addresses so that the dumping process can be | |
7015 reversed -- putting the information back at the correct addresses. | |
7016 Unfortunately some .DLLs (for instance the soundblaster driver) occupy | |
7017 memory addresses that can conflict with those needed by the dumped XEmacs | |
7018 executable. In this instance XEmacs will fail to start without any | |
7019 explanation. Note that this is extremely machine specific. | |
7020 | |
7021 21.1.10 includes a fix for this that makes more intelligent guesses | |
7022 about which memory addresses will be free, and this should cure the | |
7023 problem for most people. 21.4 implements "portable dumping", which | |
7024 eliminates the problem altogether. We recommend you use the 21.4 | |
7025 binaries, but you can use the 21.1 binaries if you are very paranoid | |
7026 about stability. @xref{Q6.0.3}. | |
7027 | |
7028 @node Q6.4.2, Q6.4.3, Q6.4.1, MS Windows | |
7029 @unnumberedsubsec Q6.4.2 Why do I get a blank toolbar on Windows 95? | |
7030 | |
7031 You need at least version 4.71 of the system file @file{comctl32.dll}. | |
7032 The updated version is supplied with Internet Explorer 4 and later but if | |
7033 you are avoiding IE you can also download it from the Microsoft web | |
7034 site. Go into support and search for @file{comctl32.dll}. The download | |
7035 is a self-installing executable. | |
7036 | |
7037 @node Q6.4.3, , Q6.4.2, MS Windows | |
7038 @unnumberedsubsec Q6.4.3 XEmacs complains "No such file or directory, diff" | |
7039 | |
7040 or "ispell" or other commands that seem related to whatever you just | |
7041 tried to do (M-x ediff or M-$, for example). | |
7042 | |
7043 There are a large number of common (in the sense that "everyone has | |
7044 these, they really do") Unix utilities that are not provided with | |
7045 XEmacs. The GNU Project's implementations are available for Windows in | |
7046 the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also | |
7047 provides a complete Unix emulation environment (and thus makes ports of | |
7048 Unix utilities nearly trivial). Another implementation is that from | |
7049 MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others, | |
7050 please let us know! | |
7051 | |
7052 | |
7053 | |
7054 @node Current Events, Legacy Versions, MS Windows, Top | |
7055 @unnumbered 7 What the Future Holds | 7187 @unnumbered 7 What the Future Holds |
7056 | 7188 |
7057 This is part 7 of the XEmacs Frequently Asked Questions list. This | 7189 This is part 7 of the XEmacs Frequently Asked Questions list. This |
7058 section will change frequently, and (in theory) should contain any | 7190 section will change frequently, and (in theory) should contain any |
7059 interesting items that have transpired recently. (But in practice it's | 7191 interesting items that have transpired recently. (But in practice it's |
7069 Information on older versions of XEmacs can be find in @file{ONEWS} in | 7201 Information on older versions of XEmacs can be find in @file{ONEWS} in |
7070 the same directory, or @file{OONEWS} for really old versions. | 7202 the same directory, or @file{OONEWS} for really old versions. |
7071 | 7203 |
7072 | 7204 |
7073 @menu | 7205 @menu |
7074 * Q7.0.1:: What new features will be in XEmacs soon? | 7206 7.0: Changes |
7075 * Q7.0.2:: What's new in XEmacs 21.4? | 7207 * Q7.0.1:: What new features will be in XEmacs soon? |
7076 * Q7.0.3:: What's new in XEmacs 21.1? | 7208 * Q7.0.2:: What's new in XEmacs 21.4? |
7077 * Q7.0.4:: What's new in XEmacs 20.4? | 7209 * Q7.0.3:: What's new in XEmacs 21.1? |
7078 * Q7.0.5:: What's new in XEmacs 20.3? | 7210 * Q7.0.4:: What's new in XEmacs 20.4? |
7079 * Q7.0.6:: What's new in XEmacs 20.2? | 7211 * Q7.0.5:: What's new in XEmacs 20.3? |
7212 * Q7.0.6:: What's new in XEmacs 20.2? | |
7080 @end menu | 7213 @end menu |
7081 | 7214 |
7215 @unnumberedsec 7.0: Changes | |
7216 | |
7082 @node Q7.0.1, Q7.0.2, Current Events, Current Events | 7217 @node Q7.0.1, Q7.0.2, Current Events, Current Events |
7083 @unnumberedsec 7.0: Changes | |
7084 @unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon? | 7218 @unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon? |
7085 | 7219 |
7086 Not yet written. | 7220 #### Write me. |
7087 | 7221 |
7088 @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events | 7222 @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events |
7089 @unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4? | 7223 @unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4? |
7090 | 7224 |
7091 21.4 was the "stable" version of the 21.2 series, which was considered | 7225 21.4 was the "stable" version of the 21.2 series, which was considered |
7129 XEmacs support for menu accelerators has been much improved. | 7263 XEmacs support for menu accelerators has been much improved. |
7130 @item | 7264 @item |
7131 Default menubar improvements. (Default menubar has many new commands and | 7265 Default menubar improvements. (Default menubar has many new commands and |
7132 better organization. The font-menu is now available under MS Windows.) | 7266 better organization. The font-menu is now available under MS Windows.) |
7133 @item | 7267 @item |
7134 Dialog box improvements, including a real file dialog box. (XEmacs now has a proper file dialog box under MS Windows (and GTK)! The old clunky file dialog box is improved. Keyboard traversal now works correctly in MS Windows dialog boxes. There is a Search dialog box available from Edit->Find...) | 7268 Dialog box improvements, including a real file dialog box. (XEmacs now |
7269 has a proper file dialog box under MS Windows (and GTK)! The old | |
7270 clunky file dialog box is improved. Keyboard traversal now works | |
7271 correctly in MS Windows dialog boxes. There is a Search dialog box | |
7272 available from @samp{Edit->Find...}) | |
7135 @item | 7273 @item |
7136 New buffer tabs. | 7274 New buffer tabs. |
7137 @item | 7275 @item |
7138 There is a new MS Windows installer, netinstall, ported from Cygwin. | 7276 There is a new MS Windows installer, netinstall, ported from Cygwin. |
7139 @item | 7277 @item |
7205 | 7343 |
7206 @node Q7.0.3, Q7.0.4, Q7.0.2, Current Events | 7344 @node Q7.0.3, Q7.0.4, Q7.0.2, Current Events |
7207 @unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1? | 7345 @unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1? |
7208 | 7346 |
7209 21.1 was the "stable" version of "experimental" 21.0 series. | 7347 21.1 was the "stable" version of "experimental" 21.0 series. |
7210 @xref{Q7.0.2}. | 7348 @xref{Q7.0.2, What's new in XEmacs 21.4?}. |
7211 | 7349 |
7212 The following lists summarizes the essential changes made in this | 7350 The following lists summarizes the essential changes made in this |
7213 version. For a fuller list, see the @file{NEWS} in the @file{etc} | 7351 version. For a fuller list, see the @file{NEWS} in the @file{etc} |
7214 directory of the XEmacs distribution, or use @kbd{C-h n} or the | 7352 directory of the XEmacs distribution, or use @kbd{C-h n} or the |
7215 @samp{Help} menu to view this file inside of XEmacs. | 7353 @samp{Help} menu to view this file inside of XEmacs. |
7217 @unnumberedsubsubsec User-visible changes in XEmacs 21.1 | 7355 @unnumberedsubsubsec User-visible changes in XEmacs 21.1 |
7218 | 7356 |
7219 @itemize @bullet | 7357 @itemize @bullet |
7220 | 7358 |
7221 @item | 7359 @item |
7222 XEmacs is now supported under Microsoft Windows 95/98 and Windows NT | 7360 XEmacs is now supported under Microsoft Windows 95/98/ME and Windows |
7223 operating systems. To discuss Windows-specific issues, subscribe to the | 7361 NT/2000/XP operating systems. To discuss Windows-specific issues, |
7224 mailing list at @email{xemacs-nt-request@@xemacs.org}. | 7362 subscribe to the mailing list at |
7363 @email{xemacs-winnt-request@@xemacs.org}. | |
7225 | 7364 |
7226 @item | 7365 @item |
7227 XEmacs has been unbundled into constituent installable packages. | 7366 XEmacs has been unbundled into constituent installable packages. |
7228 | 7367 |
7229 @item | 7368 @item |
7365 the default) is definitely faster than XEmacs 19.16. | 7504 the default) is definitely faster than XEmacs 19.16. |
7366 | 7505 |
7367 XEmacs 20.3 is the first non-beta v20 release, and will be the | 7506 XEmacs 20.3 is the first non-beta v20 release, and will be the |
7368 basis for all further development. | 7507 basis for all further development. |
7369 | 7508 |
7370 @node Q7.0.6, , Q7.0.5, Current Events | 7509 @node Q7.0.6, , Q7.0.5, Current Events |
7371 @unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2? | 7510 @unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2? |
7372 | 7511 |
7373 The biggest changes in 20.2 include integration of EFS (the next | 7512 The biggest changes in 20.2 include integration of EFS (the next |
7374 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a | 7513 generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a |
7375 major mode for editing Tex and LaTeX, and a lot of other stuff). Many | 7514 major mode for editing Tex and LaTeX, and a lot of other stuff). Many |
7381 considered unstable. | 7520 considered unstable. |
7382 | 7521 |
7383 For older news, see the file @file{ONEWS} in the @file{etc} directory of | 7522 For older news, see the file @file{ONEWS} in the @file{etc} directory of |
7384 the XEmacs distribution. | 7523 the XEmacs distribution. |
7385 | 7524 |
7386 | 7525 @node Legacy Versions, , Current Events, Top |
7387 | |
7388 @node Legacy Versions, , Current Events, Top | |
7389 @unnumbered 8 New information about old XEmacsen | 7526 @unnumbered 8 New information about old XEmacsen |
7390 | 7527 |
7391 This is part 8 of the XEmacs Frequently Asked Questions list. It will | 7528 This is part 8 of the XEmacs Frequently Asked Questions list. It will |
7392 occasionally be updated to reflect new information about versions which | 7529 occasionally be updated to reflect new information about versions which |
7393 are no longer being revised by the XEmacs Project. The primary purpose | 7530 are no longer being revised by the XEmacs Project. The primary purpose |
7394 is advice on compatibility of older XEmacsen with new packages and | 7531 is advice on compatibility of older XEmacsen with new packages and |
7395 updated versions of packages, but bug fixes (which will not be applied | 7532 updated versions of packages, but bug fixes (which will not be applied |
7396 to released XEmacsen, but users can apply themselves) are also accepted. | 7533 to released XEmacsen, but users can apply themselves) are also accepted. |
7397 | 7534 |
7398 | |
7399 @menu | 7535 @menu |
7400 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. | 7536 * Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. |
7401 @end menu | 7537 @end menu |
7402 | 7538 |
7403 @node Q8.0.1, , , Legacy Versions | 7539 @unnumberedsec 8.0: XEmacs 21.1 |
7404 @unnumberedsec 8.0 XEmacs 21.1 | 7540 |
7541 @node Q8.0.1, , Legacy Versions, Legacy Versions | |
7405 @unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1. | 7542 @unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21.1. |
7406 | 7543 |
7407 @email{eeide@@cs.utah.edu, Eric Eide} wrote: | 7544 @email{eeide@@cs.utah.edu, Eric Eide} wrote: |
7408 | 7545 |
7409 @quotation | 7546 @quotation |
7437 | 7574 |
7438 The image-mode stuff is gone from format-alist in the 21.4 | 7575 The image-mode stuff is gone from format-alist in the 21.4 |
7439 branch, praise be. | 7576 branch, praise be. |
7440 @end quotation | 7577 @end quotation |
7441 | 7578 |
7442 | |
7443 @bye | 7579 @bye |