aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2005-05-02 20:58:54 +0000
committerRichard M. Stallman2005-05-02 20:58:54 +0000
commit30b0da81df830271b6e5ce3902d28917e396fe59 (patch)
tree40a98d344803da816f084b3deee164938582467e
parentbc4461134d6cade460ef4108675e286d67b2244a (diff)
downloademacs-30b0da81df830271b6e5ce3902d28917e396fe59.tar.gz
emacs-30b0da81df830271b6e5ce3902d28917e396fe59.zip
*** empty log message ***
-rw-r--r--etc/ChangeLog4
-rw-r--r--etc/NEWS5656
2 files changed, 2815 insertions, 2845 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 902dcfb64a2..07a3c4d8297 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
12005-05-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * NEWS: Items rearranged in logical order.
4
12005-05-01 Lars Hansen <larsh@math.ku.dk> 52005-05-01 Lars Hansen <larsh@math.ku.dk>
2 6
3 * NEWS: Correct key binding for dired-mark-omitted. 7 * NEWS: Correct key binding for dired-mark-omitted.
diff --git a/etc/NEWS b/etc/NEWS
index 045a6e53731..82b23e90f88 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -18,17 +18,12 @@ so we will look at it and add it to the manual.
18* Installation Changes in Emacs 22.1 18* Installation Changes in Emacs 22.1
19 19
20--- 20---
21** Emacs includes now support for loading image libraries on demand. 21** Emacs now supports new configure options `--program-prefix',
22(Currently this feature is only used on MS Windows.) You can configure 22`--program-suffix' and `--program-transform-name' that affect the names of
23the supported image types and their associated dynamic libraries by 23installed programs.
24setting the variable `image-library-alist'.
25 24
26--- 25---
27** New translations of the Emacs Tutorial are available in the following 26** Emacs can now be built without sound support.
28 languages: Brasilian, Bulgarian, Chinese (both with simplified and
29 traditional characters), French, and Italian. Type `C-u C-h t' to
30 choose one of them in case your language setup doesn't automatically
31 select the right one.
32 27
33--- 28---
34** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' 29** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
@@ -36,17 +31,9 @@ when you run configure. This requires Gtk+ 2.0 or newer. This port
36provides a way to display multilingual text in menus (with some caveats). 31provides a way to display multilingual text in menus (with some caveats).
37 32
38--- 33---
39** Emacs can now be built without sound support.
40
41---
42** The `emacsserver' program has been removed, replaced with elisp code. 34** The `emacsserver' program has been removed, replaced with elisp code.
43 35
44--- 36---
45** Emacs now supports new configure options `--program-prefix',
46`--program-suffix' and `--program-transform-name' that affect the names of
47installed programs.
48
49---
50** By default, Emacs now uses a setgid helper program to update game 37** By default, Emacs now uses a setgid helper program to update game
51scores. The directory ${localstatedir}/games/emacs is the normal 38scores. The directory ${localstatedir}/games/emacs is the normal
52place for game scores to be stored. This may be controlled by the 39place for game scores to be stored. This may be controlled by the
@@ -78,6 +65,22 @@ item was added to the menu bar that makes it easy accessible
78(Help->More Manuals->Introduction to Emacs Lisp). 65(Help->More Manuals->Introduction to Emacs Lisp).
79 66
80--- 67---
68** New translations of the Emacs Tutorial are available in the following
69 languages: Brasilian, Bulgarian, Chinese (both with simplified and
70 traditional characters), French, and Italian. Type `C-u C-h t' to
71 choose one of them in case your language setup doesn't automatically
72 select the right one.
73
74---
75** A French translation of the `Emacs Survival Guide' is available.
76
77---
78** Emacs now includes support for loading image libraries on demand.
79(Currently this feature is only used on MS Windows.) You can configure
80the supported image types and their associated dynamic libraries by
81setting the variable `image-library-alist'.
82
83---
81** Support for Cygwin was added. 84** Support for Cygwin was added.
82 85
83--- 86---
@@ -99,99 +102,79 @@ create non-Carbon build by specifying `NonCarbon' as a target. See
99the files mac/README and mac/INSTALL for build instructions. 102the files mac/README and mac/INSTALL for build instructions.
100 103
101--- 104---
102** A French translation of the `Emacs Survival Guide' is available.
103
104---
105** Building with -DENABLE_CHECKING does not automatically build with union 105** Building with -DENABLE_CHECKING does not automatically build with union
106types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. 106types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
107 107
108 108
109* Changes in Emacs 22.1 109* Changes in Emacs 22.1
110 110
111** Moving or scrolling through images (and other lines) taller that 111** New command line option -Q or --quick.
112the window now works sensible, by automatically adjusting the window's 112This is like using -q --no-site-file, but in addition it also disables
113vscroll property. 113the fancy startup screen.
114 114
115+++ 115+++
116** In graphical mode, with a C program, GUD Tooltips have been extended to 116** New command line option -D or --basic-display.
117display the #define directive associated with an identifier when program is 117Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
118not executing. 118the blinking cursor.
119 119
120+++ 120+++
121** `comint-use-prompt-regexp-instead-of-fields' has been renamed 121** New command line option -nbc or --no-blinking-cursor disables
122`comint-use-prompt-regexp'. The old name has been kept as an alias, 122the blinking cursor on graphical terminals.
123but declared obsolete.
124
125** Improved key bindings support when running in an xterm.
126When emacs is running in an xterm more key bindings are available. The
127following should work:
128{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
129These key bindings work on xterm from X.org 6.8, they might not work on
130some older versions of xterm, or on some proprietary versions.
131
132** Improved Thai support. A new minor mode `thai-word-mode' (which is
133automatically activated if you select Thai as a language
134environment) changes key bindings of most word-oriented commands to
135versions which recognize Thai words. Affected commands are
136 M-f (forward-word)
137 M-b (backward-word)
138 M-d (kill-word)
139 M-DEL (backward-kill-word)
140 M-t (transpose-words)
141 M-q (fill-paragraph)
142 123
143+++ 124+++
144** Auto Compression mode is now enabled by default. 125** The command line option --no-windows has been changed to
145 126--no-window-system. The old one still works, but is deprecated.
146** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
147 127
148Since the default input is the current directory, this has the effect 128+++
149of specifying the current directory. Normally that means to visit the 129** The -f option, used from the command line to call a function,
150directory with Dired. 130now reads arguments for the function interactively if it is
131an interactively callable function.
151 132
152--- 133+++
153** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. 134** Emacs can now be invoked in full-screen mode on a windowed display.
135When Emacs is invoked on a window system, the new command-line options
136`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
137whose width, height, or both width and height take up the entire
138screen size. (For now, this does not work with some window managers.)
154 139
155--- 140+++
156** The default settings for JIT stealth lock parameters are changed. 141** Emacs now displays a splash screen by default even if command-line
157The default value for the user option jit-lock-stealth-time is now 16 142arguments were given. The new command-line option --no-splash
158instead of 3, and the default value of jit-lock-stealth-nice is now 143disables the splash screen; see also the variable
1590.5 instead of 0.125. The new defaults should lower the CPU usage 144`inhibit-startup-message' (which is also aliased as
160when Emacs is fontifying in the background. 145`inhibit-splash-screen').
161 146
162--- 147+++
163** iso-acc.el is now obsolete. Use one of the latin input methods instead. 148** New user option `inhibit-startup-buffer-menu'.
149When loading many files, for instance with `emacs *', Emacs normally
150displays a buffer menu. This option turns the buffer menu off.
164 151
165--- 152+++
166** Language environment and various default coding systems are setup 153** Init file changes
167more correctly according to the current locale name. If the locale 154You can now put the init files .emacs and .emacs_SHELL under
168name doesn't specify a charset, the default is what glibc defines. 155~/.emacs.d or directly under ~. Emacs will find them in either place.
169This change may result in using the different coding systems as
170default in some locale (e.g. vi_VN).
171 156
172+++ 157+++
173** The commands copy-file, rename-file, make-symbolic-link and 158** Emacs now reads the standard abbrevs file ~/.abbrev_defs
174add-name-to-file, when given a directory as the "new name" argument, 159automatically at startup, if it exists. When Emacs offers to save
175convert it to a file name by merging in the within-directory part of 160modified buffers, it saves the abbrevs too if they have changed. It
176the existing file's name. (This is the same convention that shell 161can do this either silently or asking for confirmation first,
177commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET 162according to the value of `save-abbrevs'.
178/tmp RET copies ~/foo to /tmp/foo.
179 163
180+++ 164+++
181** M-o now is the prefix key for setting text properties; 165** The mode line position information now comes before the major mode.
182M-o M-o requests refontification. 166When the file is maintained under version control, that information
167appears between the position information and the major mode.
183 168
184+++ 169+++
185** M-g is now a prefix key. 170** M-g is now a prefix key.
186
187M-g g and M-g M-g run goto-line. 171M-g g and M-g M-g run goto-line.
188M-g n and M-g M-n run next-error (like C-x `). 172M-g n and M-g M-n run next-error (like C-x `).
189M-g p and M-g M-p run previous-error. 173M-g p and M-g M-p run previous-error.
190 174
191+++ 175+++
192** font-lock-lines-before specifies a number of lines before the 176** M-o now is the prefix key for setting text properties;
193current line that should be refontified when you change the buffer. 177M-o M-o requests refontification.
194The default value is 1.
195 178
196+++ 179+++
197** C-u M-x goto-line now switches to the most recent previous buffer, 180** C-u M-x goto-line now switches to the most recent previous buffer,
@@ -200,86 +183,46 @@ and goes to the specified line in that buffer.
200When goto-line starts to execute, if there's a number in the buffer at 183When goto-line starts to execute, if there's a number in the buffer at
201point then it acts as the default argument for the minibuffer. 184point then it acts as the default argument for the minibuffer.
202 185
203---
204** Emacs now responds to mouse-clicks on the mode-line, header-line and
205display margin, when run in an xterm.
206
207+++ 186+++
208** M-SPC (just-one-space) when given a numeric argument N 187** You can now switch buffers in a cyclic order with C-x C-left and
209converts whitespace around point to N spaces. 188(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right
189can be used as well.
210 190
211+++ 191+++
212** Control characters and escape glyphs are now shown in the new 192** New command `Buffer-menu-toggle-files-only' toggles display of file
213escape-glyph face. 193buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu
194mode.
214 195
215+++ 196+++
216** Non-breaking space and hyphens are now prefixed with an escape 197** `buffer-menu' and `list-buffers' now list buffers whose names begin
217character, unless the new user variable `show-nonbreak-escape' is set 198with a space, when those buffers are visiting files. Normally buffers
218to nil. 199whose names begin with space are omitted.
219
220---
221** The type-break package now allows `type-break-file-name' to be nil
222and if so, doesn't store any data across sessions. This is handy if
223you don't want the .type-break file in your home directory or are
224annoyed by the need for interaction when you kill Emacs.
225
226---
227** display-battery has been replaced by display-battery-mode.
228 200
229--- 201---
230** calculator.el now has radix grouping mode, which is available when 202** The new options `buffers-menu-show-directories' and
231`calculator-output-radix' is non-nil. In this mode a separator 203`buffers-menu-show-status' let you control how buffers are displayed
232character is used every few digits, making it easier to see byte 204in the menu dropped down when you click "Buffers" from the menu bar.
233boundries etc. For more info, see the documentation of the variable
234`calculator-radix-grouping-mode'.
235
236+++
237** You can now follow links by clicking Mouse-1 on the link.
238
239Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
240click to follow a link, whereas most other applications use a Mouse-1
241click for both purposes, depending on whether you click outside or
242inside a link. Now the behavior of a Mouse-1 click has been changed
243to match this context-sentitive dual behavior.
244
245Depending on the current mode, a Mouse-2 click in Emacs may do much
246more than just follow a link, so the new Mouse-1 behavior is only
247activated for modes which explicitly mark a clickable text as a "link"
248(see the new function `mouse-on-link-p' for details). The Lisp
249packages that are included in release 22.1 have been adapted to do
250this, but external packages may not yet support this. However, there
251is no risk in using such packages, as the worst thing that could
252happen is that you get the original Mouse-1 behavior when you click
253on a link, which typically means that you set point where you click.
254 205
255If you want to get the original Mouse-1 action also inside a link, you 206`buffers-menu-show-directories' controls whether the menu displays
256just need to press the Mouse-1 button a little longer than a normal 207leading directories as part of the file name visited by the buffer.
257click (i.e. press and hold the Mouse-1 button for half a second before 208If its value is `unless-uniquify', the default, directories are
258you release it). 209shown unless uniquify-buffer-name-style' is non-nil. The value of nil
210and t turn the display of directories off and on, respectively.
259 211
260Dragging the Mouse-1 inside a link still performs the original 212`buffers-menu-show-status' controls whether the Buffers menu includes
261drag-mouse-1 action, typically copy the text. 213the modified and read-only status of the buffers. By default it is
214t, and the status is shown.
262 215
263You can customize the new Mouse-1 behavior via the new user options 216Setting these variables directly does not take effect until next time
264`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. 217the Buffers menu is regenerated.
265 218
266+++ 219+++
267** require-final-newline now has two new possible values: 220** The old bindings C-M-delete and C-M-backspace have been deleted,
268 221since there are situations where one or the other will shut down
269`visit' means add a newline (as an undoable change) if it's needed 222the operating system or your X server.
270when visiting the file.
271
272`visit-save' means add a newline (as an undoable change) if it's
273needed when visiting the file, and also add a newline if it's needed
274when saving the file.
275 223
276+++ 224+++
277** The new option mode-require-final-newline controls how certain 225** `undo-only' does an undo which does not redo any previous undo.
278major modes enable require-final-newline. Any major mode that's
279designed for a kind of file that should normally end in a newline
280sets require-final-newline based on mode-require-final-newline.
281So you can customize mode-require-final-newline to control what these
282modes do.
283 226
284+++ 227+++
285** When the undo information of the current command gets really large 228** When the undo information of the current command gets really large
@@ -287,358 +230,322 @@ modes do.
287you about it. 230you about it.
288 231
289+++ 232+++
290** line-move-ignore-invisible now defaults to t. 233** M-SPC (just-one-space) when given a numeric argument N
291 234converts whitespace around point to N spaces.
292+++
293** In Outline mode, hide-body no longer hides lines at the top
294of the file that precede the first header line.
295 235
296+++ 236---
297** In Enriched mode, `set-left-margin' and `set-right-margin' are now 237** New command `kill-whole-line' kills an entire line at once.
298by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' 238By default, it is bound to C-S-<backspace>.
299and `C-c C-r'.
300 239
301+++ 240+++
302** In processing a local variables list, Emacs strips the prefix and 241** Yanking text now discards certain text properties that can
303suffix are from every line before processing all the lines. 242be inconvenient when you did not expect them. The variable
243`yank-excluded-properties' specifies which ones. Insertion
244of register contents and rectangles also discards these properties.
304 245
305+++ 246+++
306** `apply-macro-to-region-lines' now operates on all lines that begin 247** The default values of paragraph-start and indent-line-function have
307in the region, rather than on all complete lines in the region. 248been changed to reflect those used in Text mode rather than those used
308 249in Indented-Text mode.
309---
310** global-whitespace-mode is a new alias for whitespace-global-mode.
311 250
312+++ 251+++
313** There are now two new regular expression operators, \_< and \_>, 252** Movement commands `beginning-of-buffer', `end-of-buffer',
314for matching the beginning and end of a symbol. A symbol is a 253`beginning-of-defun', `end-of-defun' do not set the mark if the mark
315non-empty sequence of either word or symbol constituent characters, as 254is already active in Transient Mark mode.
316specified by the syntax table.
317---
318*** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
319 255
320+++ 256+++
321** Passing resources on the command line now works on MS Windows. 257** The parameters of automatic hscrolling can now be customized.
322You can use --xrm to pass resource settings to Emacs, overriding any 258The variable `hscroll-margin' determines how many columns away from
323existing values. For example: 259the window edge point is allowed to get before automatic hscrolling
324 260will horizontally scroll the window. The default value is 5.
325 emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
326
327will start up Emacs on an initial frame of 100x20 with red background,
328irrespective of geometry or background setting on the Windows registry.
329 261
330--- 262The variable `hscroll-step' determines how many columns automatic
331** The terminal emulation code in term.el has been improved, it can 263hscrolling scrolls the window when point gets too close to the
332run most curses applications now. 264window edge. If its value is zero, the default, Emacs scrolls the
265window so as to center point. If its value is an integer, it says how
266many columns to scroll. If the value is a floating-point number, it
267gives the fraction of the window's width to scroll the window.
333 268
334** New features in evaluation commands 269The variable `automatic-hscrolling' was renamed to
270`auto-hscroll-mode'. The old name is still available as an alias.
335 271
336+++ 272+++
337*** The function `eval-defun' (C-M-x) called on defface reinitializes 273** A prefix argument is no longer required to repeat a jump to a
338the face to the value specified in the defface expression. 274previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
275mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
339 276
340+++ 277+++
341*** Typing C-x C-e twice prints the value of the integer result 278** Marking commands extend the region when invoked multiple times. If
342in additional formats (octal, hexadecimal, character) specified 279you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
343by the new function `eval-expression-print-format'. The same 280C-M-h (mark-defun) repeatedly, the marked region extends each time, so
344function also defines the result format for `eval-expression' (M-:), 281you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
345`eval-print-last-sexp' (C-j) and some edebug evaluation functions. 282This feature also works for mark-end-of-sentence, if you bind that to
346 283a key. It also extends the region when the mark is active in Transient
347--- 284Mark mode, regardless of the last command. To start a new region with
348** New input method chinese-sisheng for inputting Chinese Pinyin 285one of marking commands in Transient Mark mode, you can deactivate the
349characters. 286active region with C-g, or set the new mark with C-SPC.
350 287
351+++ 288+++
352** New command quail-show-key shows what key (or key sequence) to type 289** M-h (mark-paragraph) now accepts a prefix arg.
353in the current input method to input a character at point. 290With positive arg, M-h marks the current and the following paragraphs;
291if the arg is negative, it marks the current and the preceding
292paragraphs.
354 293
355+++ 294+++
356** You can now switch buffers in a cyclic order with C-x C-left and 295** Some commands do something special in Transient Mark mode when the
357(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right 296mark is active--for instance, they limit their operation to the
358can be used as well. 297region. Even if you don't normally use Transient Mark mode, you might
359 298want to get this behavior from a particular command. There are two
360--- 299ways you can enable Transient Mark mode and activate the mark, for one
361** Commands winner-redo and winner-undo, from winner.el, are now bound to 300command only.
362C-c <left> and C-c <right>, respectively. This is an incompatible change.
363
364---
365** Help commands `describe-function' and `describe-key' now show function
366arguments in lowercase italics on displays that support it. To change the
367default, customize face `help-argument-name' or redefine the function
368`help-default-arg-highlight'.
369
370---
371** The comint prompt can now be made read-only, using the new user
372option `comint-prompt-read-only'. This is not enabled by default,
373except in IELM buffers. The read-only status of IELM prompts can be
374controlled with the new user option `ielm-prompt-read-only', which
375overrides `comint-prompt-read-only'.
376
377The new commands `comint-kill-whole-line' and `comint-kill-region'
378support editing comint buffers with read-only prompts.
379 301
380`comint-kill-whole-line' is like `kill-whole-line', but ignores both 302One method is to type C-SPC C-SPC; this enables Transient Mark mode
381read-only and field properties. Hence, it always kill entire 303and sets the mark at point. The other method is to type C-u C-x C-x.
382lines, including any prompts. 304This enables Transient Mark mode temporarily but does not alter the
305mark or the region.
383 306
384`comint-kill-region' is like `kill-region', except that it ignores 307After these commands, Transient Mark mode remains enabled until you
385read-only properties, if it is safe to do so. This means that if any 308deactivate the mark. That typically happens when you type a command
386part of a prompt is deleted, then the entire prompt must be deleted 309that alters the buffer, but you can also deactivate the mark by typing
387and that all prompts must stay at the beginning of a line. If this is 310C-g.
388not the case, then `comint-kill-region' behaves just like
389`kill-region' if read-only are involved: it copies the text to the
390kill-ring, but does not delete it.
391 311
392+++ 312+++
393** You can now use next-error (C-x `) and previous-error to advance to 313** find-file-read-only visits multiple files in read-only mode,
394the next/previous matching line found by M-x occur. 314when the file name contains wildcard characters.
395 315
396+++ 316+++
397** Telnet now prompts you for a port number with C-u M-x telnet. 317** find-alternate-file replaces the current file with multiple files,
318when the file name contains wildcard characters.
398 319
399+++ 320+++
400** New command line option -Q or --quick. 321** Auto Compression mode is now enabled by default.
401 322
402This is like using -q --no-site-file, but in addition it also disables 323---
403the fancy startup screen. 324** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
404 325
405+++ 326Since the default input is the current directory, this has the effect
406** New command line option -D or --basic-display. 327of specifying the current directory. Normally that means to visit the
328directory with Dired.
407 329
408Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and 330+++
409the blinking cursor. 331** When you are root, and you visit a file whose modes specify
332read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
333want to make the buffer writable. (As root, you can in fact alter the
334file.)
410 335
411+++ 336+++
412** New command line option -nbc or --no-blinking-cursor disables 337** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
413the blinking cursor on graphical terminals. 338against its file, so you can see what changes you would be saving.
414 339
415+++ 340+++
416** C-h v and C-h f commands now include a hyperlink to the C source for 341** The commands copy-file, rename-file, make-symbolic-link and
417variables and functions defined in C (if the C source is available). 342add-name-to-file, when given a directory as the "new name" argument,
343convert it to a file name by merging in the within-directory part of
344the existing file's name. (This is the same convention that shell
345commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
346/tmp RET copies ~/foo to /tmp/foo.
418 347
419--- 348---
420** When used interactively, `format-write-file' now asks for confirmation 349** When used interactively, `format-write-file' now asks for confirmation
421before overwriting an existing file, unless a prefix argument is 350before overwriting an existing file, unless a prefix argument is
422supplied. This behavior is analogous to `write-file'. 351supplied. This behavior is analogous to `write-file'.
423 352
424+++ 353---
425** You can now use Auto Revert mode to `tail' a file. 354** The variable `auto-save-file-name-transforms' now has a third element that
426If point is at the end of a file buffer before reverting, Auto Revert 355controls whether or not the function `make-auto-save-file-name' will
427mode keeps it at the end after reverting. Similarly if point is 356attempt to construct a unique auto-save name (e.g. for remote files).
428displayed at the end of a file buffer in any window, it stays at
429the end of the buffer in that window. This allows to tail a file:
430just put point at the end of the buffer and it stays there. This
431rule applies to file buffers. For non-file buffers, the behavior may
432be mode dependent.
433
434If you are sure that the file will only change by growing at the end,
435then you can tail the file more efficiently by using the new minor
436mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
437toggles this mode.
438 357
439+++ 358+++
440** Auto Revert mode is now more careful to avoid excessive reverts and 359** The max size of buffers and integers has been doubled.
441other potential problems when deciding which non-file buffers to 360On 32bit machines, it is now 256M (i.e. 268435455).
442revert. This matters especially if Global Auto Revert mode is enabled
443and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
444mode only reverts a non-file buffer if the buffer has a non-nil
445`revert-buffer-function' and a non-nil `buffer-stale-function', which
446decides whether the buffer should be reverted. Currently, this means
447that auto reverting works for Dired buffers (although this may not
448work properly on all operating systems) and for the Buffer Menu.
449 361
450+++ 362+++
451** If the new user option `auto-revert-check-vc-info' is non-nil, Auto 363** If the user visits a file larger than `large-file-warning-threshold',
452Revert mode reliably updates version control info (such as the version 364Emacs prompts her for confirmation.
453control number in the mode line), in all version controlled buffers in
454which it is active. If the option is nil, the default, then this info
455only gets updated whenever the buffer gets reverted.
456 365
457+++ 366+++
458** New command `Buffer-menu-toggle-files-only' toggles display of file 367** There's a new face `minibuffer-prompt'.
459buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu 368Emacs adds this face to the list of text properties stored in the
460mode. 369variable `minibuffer-prompt-properties', which is used to display the
370prompt string.
461 371
462--- 372---
463** M-x compile has become more robust and reliable 373** Enhanced visual feedback in *Completions* buffer.
464
465Quite a few more kinds of messages are recognized. Messages that are
466recognized as warnings or informational come in orange or green, instead of
467red. Informational messages are by default skipped with `next-error'
468(controlled by `compilation-skip-threshold').
469
470Location data is collected on the fly as the *compilation* buffer changes.
471This means you could modify messages to make them point to different files.
472This also means you can not go to locations of messages you may have deleted.
473
474The variable `compilation-error-regexp-alist' has now become customizable. If
475you had added your own regexps to this, you'll probably need to include a
476leading `^', otherwise they'll match anywhere on a line. There is now also a
477`compilation-mode-font-lock-keywords' and it nicely handles all the checks
478that configure outputs and -o options so you see at a glance where you are.
479 374
480The new file etc/compilation.txt gives examples of each type of message. 375Completions lists use faces to highlight what all completions
376have in common and where they begin to differ.
481 377
482** Compilation mode enhancements: 378The common prefix shared by all possible completions uses the face
379`completions-common-part', while the first character that isn't the
380same uses the face `completions-first-difference'. By default,
381`completions-common-part' inherits from `default', and
382`completions-first-difference' inherits from `bold'. The idea of
383`completions-common-part' is that you can use it to make the common
384parts less visible than normal, so that the rest of the differing
385parts is, by contrast, slightly highlighted.
483 386
484+++ 387+++
485*** New user option `compilation-environment'. 388** File-name completion can now ignore directories.
486This option allows you to specify environment variables for inferior 389If an element of the list in `completion-ignored-extensions' ends in a
487compilation processes without affecting the environment that all 390slash `/', it indicates a subdirectory that should be ignored when
488subprocesses inherit. 391completing file names. Elements of `completion-ignored-extensions'
392which do not end in a slash are never considered when a completion
393candidate is a directory.
489 394
490+++ 395+++
491** Grep has been decoupled from compilation mode setup. 396** The completion commands TAB, SPC and ? in the minibuffer apply only
492 397to the text before point. If there is text in the buffer after point,
493--- 398it remains unchanged.
494*** There's a new separate package grep.el.
495 399
496--- 400+++
497*** M-x grep has been adapted to new compile 401** New user option `history-delete-duplicates'.
402If set to t when adding a new history element, all previous identical
403elements are deleted.
498 404
499Hits are fontified in green, and hits in binary files in orange. Grep buffers 405+++
500can be saved and automatically revisited with the new Grep mode. 406** You can now customize fill-nobreak-predicate to control where
407filling can break lines. The value is now normally a list of
408functions, but it can also be a single function, for compatibility.
501 409
502--- 410We provide two sample predicates, fill-single-word-nobreak-p and
503*** Grep commands now have their own submenu and customization group. 411fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
504 412
505+++ 413+++
506*** `grep-find' is now also available under the name `find-grep' where 414** require-final-newline now has two new possible values:
507people knowing `find-grep-dired' would probably expect it.
508 415
509--- 416`visit' means add a newline (as an undoable change) if it's needed
510*** The new variables `grep-window-height', `grep-auto-highlight', and 417when visiting the file.
511`grep-scroll-output' can be used to override the corresponding
512compilation mode settings for grep commands.
513 418
514+++ 419`visit-save' means add a newline (as an undoable change) if it's
515*** New option `grep-highlight-matches' highlightes matches in *grep* 420needed when visiting the file, and also add a newline if it's needed
516buffer. It uses a special feature of some grep programs which accept 421when saving the file.
517--color option to output markers around matches. When going to the next
518match with `next-error' the exact match is highlighted in the source
519buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
520source line is highlighted.
521 422
522+++ 423+++
523*** New key bindings in grep output window: 424** The new option mode-require-final-newline controls how certain
524SPC and DEL scrolls window up and down. C-n and C-p moves to next and 425major modes enable require-final-newline. Any major mode that's
525previous match in the grep window. RET jumps to the source line of 426designed for a kind of file that should normally end in a newline
526the current match. `n' and `p' shows next and previous match in 427sets require-final-newline based on mode-require-final-newline.
527other window, but does not switch buffer. `{' and `}' jumps to the 428So you can customize mode-require-final-newline to control what these
528previous or next file in the grep output. TAB also jumps to the next 429modes do.
529file.
530 430
531+++ 431+++
532** New options `next-error-highlight' and `next-error-highlight-no-select' 432** Control characters and escape glyphs are now shown in the new
533specify the method of highlighting of the corresponding source line 433escape-glyph face.
534in new face `next-error'.
535 434
536+++ 435+++
537** A new minor mode `next-error-follow-minor-mode' can be used in 436** Non-breaking space and hyphens are now prefixed with an escape
538compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the 437character, unless the new user variable `show-nonbreak-escape' is set
539modes that can use `next-error'). In this mode, cursor motion in the 438to nil.
540buffer causes automatic display in another window of the corresponding
541matches, compilation errors, etc. This minor mode can be toggled with
542C-c C-f.
543 439
544+++ 440+++
545** M-x diff uses diff-mode instead of compilation-mode. 441** In graphical mode, with a C program, GUD Tooltips have been extended to
442display the #define directive associated with an identifier when program is
443not executing.
444
445** Moving or scrolling through images (and other lines) taller that
446the window now works sensible, by automatically adjusting the window's
447vscroll property.
546 448
547+++ 449+++
548** M-x compare-windows now can automatically skip non-matching text to 450** font-lock-lines-before specifies a number of lines before the
549resync points in both windows. 451current line that should be refontified when you change the buffer.
452The default value is 1.
550 453
551--- 454---
552** New command `strokes-global-set-stroke-string'. 455** JIT-lock changes
553This is like `strokes-global-set-stroke', but it allows you to bind
554the stroke directly to a string to insert. This is convenient for
555using strokes as an input method.
556 456
557** Gnus package 457*** The default settings for JIT stealth lock parameters are changed.
458The default value for the user option jit-lock-stealth-time is now 16
459instead of 3, and the default value of jit-lock-stealth-nice is now
4600.5 instead of 0.125. The new defaults should lower the CPU usage
461when Emacs is fontifying in the background.
558 462
559---
560*** Gnus now includes Sieve and PGG
561Sieve is a library for managing Sieve scripts. PGG is a library to handle
562PGP/MIME.
563 463
564--- 464*** jit-lock can now be delayed with `jit-lock-defer-time'.
565*** There are many news features, bug fixes and improvements.
566See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
567 465
568+++ 466If this variable is non-nil, its value should be the amount of Emacs
569** Desktop package 467idle time in seconds to wait before starting fontification. For
468example, if you set `jit-lock-defer-time' to 0.25, fontification will
469only happen after 0.25s of idle time.
470
471*** contextual refontification is now separate from stealth fontification.
472
473jit-lock-defer-contextually is renamed jit-lock-contextually and
474jit-lock-context-time determines the delay after which contextual
475refontification takes place.
570 476
571+++ 477+++
572*** Desktop saving is now a minor mode, desktop-save-mode. Variable 478** line-move-ignore-invisible now defaults to t.
573desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
574saving.
575 479
576--- 480---
577*** Buffers are saved in the desktop file in the same order as that in the 481** A menu item "Show/Hide" was added to the top-level menu "Options".
578buffer list. 482This menu allows you to turn various display features on and off (such
483as the fringes, the tool bar, the speedbar, and the menu bar itself).
484You can also move the vertical scroll bar to either side here or turn
485it off completely. There is also a menu-item to toggle displaying of
486current date and time, current line and column number in the
487mode-line.
488
489---
490** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
579 491
580+++ 492+++
581*** The desktop package can be customized to restore only some buffers immediately, 493** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
582remaining buffers are restored lazily (when Emacs is idle). 494now controlled by the variable `blink-cursor-alist'.
583 495
584+++ 496+++
585*** New commands: 497** The X resource cursorBlink can be used to turn off cursor blinking.
586 - desktop-revert reverts to the last loaded desktop.
587 - desktop-change-dir kills current desktop and loads a new.
588 - desktop-save-in-desktop-dir saves desktop in the directory from which
589 it was loaded.
590 - desktop-lazy-complete runs the desktop load to completion.
591 - desktop-lazy-abort aborts lazy loading of the desktop.
592 498
593--- 499+++
594*** New customizable variables: 500** Emacs can produce an underscore-like (horizontal bar) cursor.
595 - desktop-save. Determins whether the desktop should be saved when it is 501The underscore cursor is set by putting `(cursor-type . hbar)' in
596 killed. 502default-frame-alist. It supports variable heights, like the `bar'
597 - desktop-file-name-format. Format in which desktop file names should be saved. 503cursor does.
598 - desktop-path. List of directories in which to lookup the desktop file.
599 - desktop-locals-to-save. List of local variables to save.
600 - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
601 - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
602 should not delete.
603 - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
604 restored lazily (when Emacs is idle).
605 - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
606 - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
607 504
608+++ 505+++
609*** New command line option --no-desktop 506** Display of hollow cursors now obeys the buffer-local value (if any)
507of `cursor-in-non-selected-windows' in the buffer that the cursor
508appears in.
610 509
611--- 510+++
612*** New hooks: 511** The variable `cursor-in-non-selected-windows' can now be set to any
613 - desktop-after-read-hook run after a desktop is loaded. 512of the recognized cursor types.
614 - desktop-no-desktop-file-hook run when no desktop file is found.
615 513
616--- 514+++
617** The saveplace.el package now filters out unreadable files. 515** The new face `mode-line-inactive' is used to display the mode line
618When you exit Emacs, the saved positions in visited files no longer 516of non-selected windows. The `mode-line' face is now used to display
619include files that aren't readable, e.g. files that don't exist. 517the mode line of the currently selected window.
620Customize the new option `save-place-forget-unreadable-files' to nil 518
621to get the old behavior. The new options `save-place-save-skipped' 519The new variable `mode-line-in-non-selected-windows' controls whether
622and `save-place-skip-check-regexp' allow further fine-tuning of this 520the `mode-line-inactive' face is used.
623feature.
624 521
625+++ 522+++
626** You can have several Emacs servers on the same machine. 523** New display feature: focus follows the mouse from one Emacs window
524to another, even within a frame. If you set the variable
525mouse-autoselect-window to non-nil value, moving the mouse to a
526different Emacs window will select that window (minibuffer window can
527be selected only when it is active). The default is nil, so that this
528feature is not enabled.
627 529
628 % emacs --eval '(setq server-name "foo")' -f server-start & 530+++
629 % emacs --eval '(setq server-name "bar")' -f server-start & 531** On X, when the window manager requires that you click on a frame to
630 % emacsclient -s foo file1 532select it (give it focus), the selected window and cursor position
631 % emacsclient -s bar file2 533normally changes according to the mouse click position. If you set
534the variable x-mouse-click-focus-ignore-position to t, the selected
535window and cursor position do not change when you click on a frame
536to give it focus.
632 537
633+++ 538+++
634** On window systems, lines which are exactly as wide as the window 539** When you specify a frame size with --geometry, the size applies to
635(not counting the final newline character) are no longer broken into 540all frames you create. A position specified with --geometry only
636two lines on the display (with just the newline on the second line). 541affects the initial frame.
637Instead, the newline now "overflows" into the right fringe, and the
638cursor will be displayed in the fringe when positioned on that newline.
639 542
640The new user option 'overflow-newline-into-fringe' may be set to nil to 543+++
641revert to the old behavior of continuing such lines. 544** You can now customize the use of window fringes. To control this
545for all frames, use M-x fringe-mode or the Show/Hide submenu of the
546top-level Options menu, or customize the `fringe-mode' variable. To
547control this for a specific frame, use the command M-x
548set-fringe-style.
642 549
643+++ 550+++
644** The buffer boundaries (i.e. first and last line in the buffer) may 551** The buffer boundaries (i.e. first and last line in the buffer) may
@@ -662,561 +569,238 @@ arrow bitmaps in right fringe. To show just the angle bitmaps in the
662left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). 569left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
663 570
664+++ 571+++
665** New command `display-local-help' displays any local help at point 572** On window systems, lines which are exactly as wide as the window
666in the echo area. It is bound to `C-h .'. It normally displays the 573(not counting the final newline character) are no longer broken into
667same string that would be displayed on mouse-over using the 574two lines on the display (with just the newline on the second line).
668`help-echo' property, but, in certain cases, it can display a more 575Instead, the newline now "overflows" into the right fringe, and the
669keyboard oriented alternative. 576cursor will be displayed in the fringe when positioned on that newline.
670
671+++
672** New user option `help-at-pt-display-when-idle' allows to
673automatically show the help provided by `display-local-help' on
674point-over, after suitable idle time. The amount of idle time is
675determined by the user option `help-at-pt-timer-delay' and defaults
676to one second. This feature is turned off by default.
677
678---
679** New commands `scan-buf-next-region' and `scan-buf-previous-region'
680move to the start of the next (previous, respectively) region with
681non-nil help-echo property and display any help found there in the
682echo area, using `display-local-help'.
683 577
684+++ 578The new user option 'overflow-newline-into-fringe' may be set to nil to
685** Help mode now only makes hyperlinks for faces when the face name is 579revert to the old behavior of continuing such lines.
686preceded or followed by the word `face'. It no longer makes
687hyperlinks for variables without variable documentation, unless
688preceded by one of the words `variable' or `option'. It now makes
689hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
690enclosed in single quotes and preceded by `info anchor' or `Info
691anchor' (in addition to earlier `info node' and `Info node').
692 580
693+++ 581+++
694** The max size of buffers and integers has been doubled. 582** When display margins are present in a window, the fringes are now
695On 32bit machines, it is now 256M (i.e. 268435455). 583displayed between the margins and the buffer's text area, rather than
584at the edges of the window.
696 585
697+++ 586+++
698** The -f option, used from the command line to call a function, 587** A window may now have individual fringe and scroll-bar settings,
699now reads arguments for the function interactively if it is 588in addition to the individual display margin settings.
700an interactively callable function.
701
702---
703** sql changes.
704
705*** The variable `sql-product' controls the highlightng of different
706SQL dialects. This variable can be set globally via Customize, on a
707buffer-specific basis via local variable settings, or for the current
708session using the new SQL->Product submenu. (This menu replaces the
709SQL->Highlighting submenu.)
710 589
711The following values are supported: 590Such individual settings are now preserved when windows are split
591horizontally or vertically, a saved window configuration is restored,
592or when the frame is resized.
712 593
713 ansi ANSI Standard (default) 594+++
714 db2 DB2 595** `special-display-buffer-names' and `special-display-regexps' now
715 informix Informix 596understand two new boolean pseudo-frame-parameters `same-frame' and
716 ingres Ingres 597`same-window'.
717 interbase Interbase
718 linter Linter
719 ms Microsoft
720 mysql MySQL
721 oracle Oracle
722 postgres Postgres
723 solid Solid
724 sqlite SQLite
725 sybase Sybase
726 598
727The current product name will be shown on the mode line following the 599+++
728SQL mode indicator. 600** Changes in C-h bindings:
729 601
730The technique of setting `sql-mode-font-lock-defaults' directly in 602C-h e displays the *Messages* buffer.
731your .emacs will no longer establish the default highlighting -- Use
732`sql-product' to accomplish this.
733 603
734ANSI keywords are always highlighted. 604C-h followed by a control character is used for displaying files
605 that do not change:
735 606
736*** The function `sql-add-product-keywords' can be used to add 607C-h C-f displays the FAQ.
737font-lock rules to the product specific rules. For example, to have 608C-h C-e displays the PROBLEMS file.
738all identifiers ending in "_t" under MS SQLServer treated as a type,
739you would use the following line in your .emacs file:
740 609
741 (sql-add-product-keywords 'ms 610The info-search bindings on C-h C-f, C-h C-k and C-h C-i
742 '(("\\<\\w+_t\\>" . font-lock-type-face))) 611have been moved to C-h F, C-h K and C-h S.
743 612
744*** Oracle support includes keyword highlighting for Oracle 9i. Most 613C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
745SQL and PL/SQL keywords are implemented. SQL*Plus commands are
746highlighted in `font-lock-doc-face'.
747 614
748*** Microsoft SQLServer support has been significantly improved. 615- C-h c and C-h k report the actual command (after possible remapping)
749Keyword highlighting for SqlServer 2000 is implemented. 616 run by the key sequence.
750sql-interactive-mode defaults to use osql, rather than isql, because
751osql flushes its error stream more frequently. Thus error messages
752are displayed when they occur rather than when the session is
753terminated.
754 617
755If the username and password are not provided to `sql-ms', osql is 618- C-h w and C-h f on a command which has been remapped now report the
756called with the -E command line argument to use the operating system 619 command it is remapped to, and the keys which can be used to run
757credentials to authenticate the user. 620 that command.
758 621
759*** Postgres support is enhanced. 622For example, if C-k is bound to kill-line, and kill-line is remapped
760Keyword highlighting of Postgres 7.3 is implemented. Prompting for 623to new-kill-line, these commands now report:
761the username and the pgsql `-U' option is added.
762 624
763*** MySQL support is enhanced. 625- C-h c and C-h k C-k reports:
764Keyword higlighting of MySql 4.0 is implemented. 626 C-k runs the command new-kill-line
765 627
766*** Imenu support has been enhanced to locate tables, views, indexes, 628- C-h w and C-h f kill-line reports:
767packages, procedures, functions, triggers, sequences, rules, and 629 kill-line is remapped to new-kill-line which is on C-k, <deleteline>
768defaults.
769 630
770*** Added SQL->Start SQLi Session menu entry which calls the 631- C-h w and C-h f new-kill-line reports:
771appropriate sql-interactive-mode wrapper for the current setting of 632 new-kill-line is on C-k
772`sql-product'.
773 633
774--- 634---
775** M-x view-file and commands that use it now avoid interfering 635** Help commands `describe-function' and `describe-key' now show function
776with special modes such as Tar mode. 636arguments in lowercase italics on displays that support it. To change the
637default, customize face `help-argument-name' or redefine the function
638`help-default-arg-highlight'.
777 639
778** Enhancements to apropos commands: 640+++
641** C-h v and C-h f commands now include a hyperlink to the C source for
642variables and functions defined in C (if the C source is available).
779 643
780+++ 644+++
781*** The apropos commands now accept a list of words to match. 645** Help mode now only makes hyperlinks for faces when the face name is
782When more than one word is specified, at least two of those words must 646preceded or followed by the word `face'. It no longer makes
783be present for an item to match. Regular expression matching is still 647hyperlinks for variables without variable documentation, unless
784available. 648preceded by one of the words `variable' or `option'. It now makes
649hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
650enclosed in single quotes and preceded by `info anchor' or `Info
651anchor' (in addition to earlier `info node' and `Info node').
785 652
786+++ 653+++
787*** The new option `apropos-sort-by-scores' causes the matching items 654** The new command `describe-char' (C-u C-x =) pops up a buffer with
788to be sorted according to their score. The score for an item is a 655description various information about a character, including its
789number calculated to indicate how well the item matches the words or 656encodings and syntax, its text properties, how to input, overlays, and
790regular expression that you entered to the apropos command. The best 657widgets at point. You can get more information about some of them, by
791match is listed first, and the calculated score is shown for each 658clicking on mouse-sensitive areas or moving there and pressing RET.
792matching item.
793 659
794+++ 660+++
795** The old bindings C-M-delete and C-M-backspace have been deleted, 661** New command `display-local-help' displays any local help at point
796since there are situations where one or the other will shut down 662in the echo area. It is bound to `C-h .'. It normally displays the
797the operating system or your X server. 663same string that would be displayed on mouse-over using the
664`help-echo' property, but, in certain cases, it can display a more
665keyboard oriented alternative.
798 666
799--- 667---
800** New minor mode, Visible mode, toggles invisibility in the current buffer. 668** New commands `scan-buf-next-region' and `scan-buf-previous-region'
801When enabled, it makes all invisible text visible. When disabled, it 669move to the start of the next (previous, respectively) region with
802restores the previous value of `buffer-invisibility-spec'. 670non-nil help-echo property and display any help found there in the
671echo area, using `display-local-help'.
803 672
804--- 673+++
805** New command `kill-whole-line' kills an entire line at once. 674** New user option `help-at-pt-display-when-idle' allows to
806By default, it is bound to C-S-<backspace>. 675automatically show the help provided by `display-local-help' on
676point-over, after suitable idle time. The amount of idle time is
677determined by the user option `help-at-pt-timer-delay' and defaults
678to one second. This feature is turned off by default.
807 679
808--- 680---
809** New commands to operate on pairs of open and close characters: 681** New commands to operate on pairs of open and close characters:
810`insert-pair', `delete-pair', `raise-sexp'. 682`insert-pair', `delete-pair', `raise-sexp'.
811 683
812+++ 684+++
813** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the 685** In processing a local variables list, Emacs strips the prefix and
814list starting after point. 686suffix are from every line before processing all the lines.
815
816** Dired mode:
817
818---
819*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
820dired-ignored, dired-directory, dired-symlink, dired-warning
821introduced for Dired mode instead of font-lock faces.
822
823+++
824*** New Dired command `dired-compare-directories' marks files
825with different file attributes in two dired buffers.
826
827+++
828*** New Dired command `dired-do-touch' (bound to T) changes timestamps
829of marked files with the value entered in the minibuffer.
830
831+++
832*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
833control substitution of the file names only when they are surrounded
834by whitespace. This means you can now use them as shell wildcards
835too. If you want to use just plain `*' as a wildcard, type `*""'; the
836doublequotes make no difference in the shell, but they prevent
837special treatment in `dired-do-shell-command'.
838
839+++
840*** In Dired, the w command now copies the current line's file name
841into the kill ring. With a zero prefix arg, copies absolute file names.
842
843+++
844** Dired-x:
845
846+++
847*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling
848command is bound to M-o. A new command dired-mark-omitted, bound to * O,
849marks omitted files. The variable dired-omit-files-p is obsoleted, use the
850mode toggling function instead.
851
852+++
853** find-file-read-only visits multiple files in read-only mode,
854when the file name contains wildcard characters.
855
856+++
857** find-alternate-file replaces the current file with multiple files,
858when the file name contains wildcard characters.
859
860** FFAP
861 687
862+++ 688+++
863*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'), 689** `apply-macro-to-region-lines' now operates on all lines that begin
864C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), 690in the region, rather than on all complete lines in the region.
865C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
866C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
867
868---
869*** FFAP accepts wildcards in a file name by default. C-x C-f passes
870it to `find-file' with non-nil WILDCARDS argument, which visits
871multiple files, and C-x d passes it to `dired'.
872
873** Info mode:
874 691
875+++ 692+++
876*** A numeric prefix argument of `info' selects an Info buffer 693** You can now follow links by clicking Mouse-1 on the link.
877with the number appended to the *info* buffer name (e.g. "*info*<2>").
878
879---
880*** isearch in Info uses Info-search and searches through multiple nodes.
881Before leaving the initial Info node isearch fails once with the error
882message [initial node], and with subsequent C-s/C-r continues through
883other nodes. When isearch fails for the rest of the manual, it wraps
884aroung the whole manual to the top/final node. The user option
885`Info-isearch-search' controls whether to use Info-search for isearch,
886or the default isearch search function that wraps around the current
887Info node.
888
889*** New search commands: `Info-search-case-sensitively' (bound to S),
890`Info-search-backward', and `Info-search-next' which repeats the last
891search without prompting for a new search string.
892
893*** New command `Info-history-forward' (bound to r and new toolbar icon)
894moves forward in history to the node you returned from after using
895`Info-history-back' (renamed from `Info-last').
896
897*** New command `Info-history' (bound to L) displays a menu of visited nodes.
898 694
899*** New command `Info-toc' (bound to T) creates a node with table of contents 695Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
900from the tree structure of menus of the current Info file. 696click to follow a link, whereas most other applications use a Mouse-1
697click for both purposes, depending on whether you click outside or
698inside a link. Now the behavior of a Mouse-1 click has been changed
699to match this context-sentitive dual behavior.
901 700
902*** New command `info-apropos' searches the indices of the known 701Depending on the current mode, a Mouse-2 click in Emacs may do much
903Info files on your system for a string, and builds a menu of the 702more than just follow a link, so the new Mouse-1 behavior is only
904possible matches. 703activated for modes which explicitly mark a clickable text as a "link"
704(see the new function `mouse-on-link-p' for details). The Lisp
705packages that are included in release 22.1 have been adapted to do
706this, but external packages may not yet support this. However, there
707is no risk in using such packages, as the worst thing that could
708happen is that you get the original Mouse-1 behavior when you click
709on a link, which typically means that you set point where you click.
905 710
906*** New command `Info-copy-current-node-name' (bound to w) copies 711If you want to get the original Mouse-1 action also inside a link, you
907the current Info node name into the kill ring. With a zero prefix 712just need to press the Mouse-1 button a little longer than a normal
908arg, puts the node name inside the `info' function call. 713click (i.e. press and hold the Mouse-1 button for half a second before
714you release it).
909 715
910--- 716Dragging the Mouse-1 inside a link still performs the original
911*** New face `info-xref-visited' distinguishes visited nodes from unvisited 717drag-mouse-1 action, typically copy the text.
912and a new option `Info-fontify-visited-nodes' to control this.
913 718
914*** http and ftp links in Info are now operational: they look like cross 719You can customize the new Mouse-1 behavior via the new user options
915references and following them calls `browse-url'. 720`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
916 721
917+++ 722+++
918*** Info now hides node names in menus and cross references by default. 723** Emacs normally highlights mouse sensitive text whenever the mouse
919If you prefer the old behavior, you can set the new user option 724is over the text. By setting the new variable `mouse-highlight', you
920`Info-hide-note-references' to nil. 725can optionally enable mouse highlighting only after you move the
921 726mouse, so that highlighting disappears when you press a key. You can
922--- 727also disable mouse highlighting.
923*** Images in Info pages are supported.
924Info pages show embedded images, in Emacs frames with image support.
925Info documentation that includes images, processed with makeinfo
926version 4.7 or newer, compiles to Info pages with embedded images.
927 728
928+++ 729+++
929*** The default value for `Info-scroll-prefer-subnodes' is now nil. 730** You can now customize if selecting a region by dragging the mouse
731shall not copy the selected text to the kill-ring by setting the new
732variable mouse-drag-copy-region to nil.
930 733
931--- 734---
932*** Info-index offers completion. 735** mouse-wheels can now scroll a specific fraction of the window
736(rather than a fixed number of lines) and the scrolling is `progressive'.
933 737
934--- 738---
935** Support for the SQLite interpreter has been added to sql.el by calling 739** Unexpected yanking of text due to accidental clicking on the mouse
936'sql-sqlite'. 740wheel button (typically mouse-2) during wheel scrolling is now avoided.
937 741This behavior can be customized via the mouse-wheel-click-event and
938** BibTeX mode: 742mouse-wheel-inhibit-click-time variables.
939*** The new command bibtex-url browses a URL for the BibTeX entry at
940point (bound to C-c C-l and mouse-2, RET on clickable fields).
941
942*** The new command bibtex-entry-update (bound to C-c C-u) updates
943an existing BibTeX entry.
944
945*** New `bibtex-entry-format' option `required-fields', enabled by default.
946
947*** bibtex-maintain-sorted-entries can take values `plain',
948`crossref', and `entry-class' which control the sorting scheme used
949for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
950scheme `entry-class'. TAB completion for reference keys and
951automatic detection of duplicates does not require anymore that
952bibtex-maintain-sorted-entries is non-nil.
953
954*** If the new variable bibtex-parse-keys-fast is non-nil,
955use fast but simplified algorithm for parsing BibTeX keys.
956
957*** If the new variable bibtex-autoadd-commas is non-nil,
958automatically add missing commas at end of BibTeX fields.
959
960*** The new variable bibtex-autofill-types contains a list of entry
961types for which fields are filled automatically (if possible).
962
963*** The new command bibtex-complete completes word fragment before
964point according to context (bound to M-tab).
965
966*** The new commands bibtex-find-entry and bibtex-find-crossref
967locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
968Crossref fields are clickable (bound to mouse-2, RET).
969
970*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
971individual fields of a BibTeX entry.
972
973*** The new variables bibtex-files and bibtex-file-path define a set
974of BibTeX files that are searched for entry keys.
975
976*** The new command bibtex-validate-globally checks for duplicate keys
977in multiple BibTeX files.
978
979*** The new command bibtex-copy-summary-as-kill pushes summary
980of BibTeX entry to kill ring (bound to C-c C-t).
981
982+++
983** When display margins are present in a window, the fringes are now
984displayed between the margins and the buffer's text area, rather than
985at the edges of the window.
986
987+++
988** A window may now have individual fringe and scroll-bar settings,
989in addition to the individual display margin settings.
990
991Such individual settings are now preserved when windows are split
992horizontally or vertically, a saved window configuration is restored,
993or when the frame is resized.
994
995+++
996** New functions frame-current-scroll-bars and window-current-scroll-bars.
997
998These functions return the current locations of the vertical and
999horizontal scroll bars in a frame or window.
1000
1001+++
1002** Emacs now supports drag and drop for X. Dropping a file on a window
1003 opens it, dropping text inserts the text. Dropping a file on a dired
1004 buffer copies or moves the file to that directory.
1005 743
1006+++ 744+++
1007** Under X, mouse-wheel-mode is turned on by default. 745** Under X, mouse-wheel-mode is turned on by default.
1008 746
1009+++ 747+++
1010** The X resource useXIM can be used to turn off use of XIM, which may 748** M-x setenv now expands environment variables of the form `$foo' and
1011speed up Emacs with slow networking to the X server. 749`${foo}' in the specified new value of the environment variable. To
1012 750include a `$' in the value, use `$$'.
1013If the configure option `--without-xim' was used to turn off use of
1014XIM by default, the X resource useXIM can be used to turn it on.
1015
1016+++
1017** The X resource cursorBlink can be used to turn off cursor blinking.
1018
1019+++
1020** `undo-only' does an undo which does not redo any previous undo.
1021
1022---
1023** `uniquify-strip-common-suffix' tells uniquify to prefer
1024`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
1025 751
1026+++ 752+++
1027** If the user visits a file larger than `large-file-warning-threshold', 753** Unquoted `$' in file names do not signal an error any more when
1028Emacs prompts her for confirmation. 754the corresponding environment variable does not exist.
1029 755Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
1030--- 756is only rarely needed.
1031** A UTF-7 coding system is available in the library `utf-7'.
1032
1033---
1034** GUD mode has its own tool bar for controlling execution of the inferior
1035and other common debugger commands.
1036 757
1037--- 758---
1038** recentf changes. 759** Language environment and various default coding systems are setup
1039 760more correctly according to the current locale name. If the locale
1040The recent file list is now automatically cleanup when recentf mode is 761name doesn't specify a charset, the default is what glibc defines.
1041enabled. The new option `recentf-auto-cleanup' controls when to do 762This change may result in using the different coding systems as
1042automatic cleanup. 763default in some locale (e.g. vi_VN).
1043
1044The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
1045and provides a more general mechanism to customize which file names to
1046keep in the recent list.
1047
1048With the more advanced option: `recentf-filename-handler', you can
1049specify a function that transforms filenames handled by recentf. For
1050example, if set to `file-truename', the same file will not be in the
1051recent list with different symbolic links.
1052
1053To follow naming convention, `recentf-menu-append-commands-flag'
1054replaces the misnamed option `recentf-menu-append-commands-p'. The
1055old name remains available as alias, but has been marked obsolete.
1056 764
1057+++ 765+++
1058** The default for the paper size (variable ps-paper-type) is taken 766** The default for the paper size (variable ps-paper-type) is taken
1059from the locale. 767from the locale.
1060 768
1061+++ 769+++
1062** Init file changes 770** The keyboard-coding-system is now automatically set based on your
1063 771current locale settings if you are not using a window system. This
1064You can now put the init files .emacs and .emacs_SHELL under 772may mean that the META key doesn't work but generates non-ASCII
1065~/.emacs.d or directly under ~. Emacs will find them in either place. 773characters instead, depending on how the terminal (or terminal
1066 774emulator) works. Use `set-keyboard-coding-system' (or customize
1067--- 775keyboard-coding-system) if you prefer META to work (the old default)
1068** partial-completion-mode now does partial completion on directory names. 776or if the locale doesn't describe the character set actually generated
1069 777by the keyboard. See Info node `Single-Byte Character Support'.
1070---
1071** skeleton.el now supports using - to mark the skeleton-point without
1072 interregion interaction. @ has reverted to only setting
1073 skeleton-positions and no longer sets skeleton-point. Skeletons
1074 which used @ to mark skeleton-point independent of _ should now use -
1075 instead. The updated skeleton-insert docstring explains these new
1076 features along with other details of skeleton construction.
1077
1078---
1079** MH-E changes.
1080
1081Upgraded to MH-E version 7.82. There have been major changes since
1082version 5.0.2; see MH-E-NEWS for details.
1083
1084+++
1085** The `emacsclient' command understands the options `--eval' and
1086`--display' which tell Emacs respectively to evaluate the given elisp
1087expression and to use the given display when visiting files.
1088
1089+++
1090** User option `server-mode' can be used to start a server process.
1091
1092+++
1093** The mode line position information now comes before the major mode.
1094When the file is maintained under version control, that information
1095appears between the position information and the major mode.
1096
1097+++
1098** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
1099against its file, so you can see what changes you would be saving.
1100
1101+++
1102** You can now customize the use of window fringes. To control this
1103for all frames, use M-x fringe-mode or the Show/Hide submenu of the
1104top-level Options menu, or customize the `fringe-mode' variable. To
1105control this for a specific frame, use the command M-x
1106set-fringe-style.
1107
1108+++
1109** There is a new user option `mail-default-directory' that allows you
1110to specify the value of `default-directory' for mail buffers. This
1111directory is used for auto-save files of mail buffers. It defaults to
1112"~/".
1113
1114+++
1115** When you are root, and you visit a file whose modes specify
1116read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
1117want to make the buffer writable. (As root, you can in fact alter the
1118file.)
1119 778
1120+++ 779+++
1121** The new command `revert-buffer-with-coding-system' (C-x RET r) 780** The new command `revert-buffer-with-coding-system' (C-x RET r)
1122revisits the current file using a coding system that you specify. 781revisits the current file using a coding system that you specify.
1123 782
1124+++ 783+++
784** New command `recode-region' decodes the region again by a specified
785coding system.
786
787+++
1125** The new command `recode-file-name' changes the encoding of the name 788** The new command `recode-file-name' changes the encoding of the name
1126of a file. 789of a file.
1127 790
1128--- 791---
1129** `ps-print' can now print characters from the mule-unicode charsets. 792** New command `ucs-insert' inserts a character specified by its
1130 793unicode.
1131Printing text with characters from the mule-unicode-* sets works with
1132ps-print, provided that you have installed the appropriate BDF fonts.
1133See the file INSTALL for URLs where you can find these fonts.
1134
1135---
1136** The new options `buffers-menu-show-directories' and
1137`buffers-menu-show-status' let you control how buffers are displayed
1138in the menu dropped down when you click "Buffers" from the menu bar.
1139
1140`buffers-menu-show-directories' controls whether the menu displays
1141leading directories as part of the file name visited by the buffer.
1142If its value is `unless-uniquify', the default, directories are
1143shown unless uniquify-buffer-name-style' is non-nil. The value of nil
1144and t turn the display of directories off and on, respectively.
1145
1146`buffers-menu-show-status' controls whether the Buffers menu includes
1147the modified and read-only status of the buffers. By default it is
1148t, and the status is shown.
1149
1150Setting these variables directly does not take effect until next time
1151the Buffers menu is regenerated.
1152 794
1153+++ 795+++
1154** The commands M-x customize-face and M-x customize-face-other-window 796** The new command `set-file-name-coding-system' (C-x RET F) sets
1155now look at the character after point. If a face or faces are 797coding system for encoding and decoding file names. A new menu item
1156specified for that character, the commands by default customize those 798(Options->Mule->Set Coding Systems->For File Name) invokes this
1157faces. 799command.
1158
1159---
1160** New language environments: French, Ukrainian, Tajik,
1161Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
1162Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
1163Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up
1164automatically according to the locale.)
1165
1166---
1167** Indian support has been updated.
1168The in-is13194 coding system is now Unicode-based. CDAC fonts are
1169assumed. There is a framework for supporting various
1170Indian scripts, but currently only Devanagari, Malayalam and Tamil are
1171supported.
1172
1173---
1174** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
1175ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
1176vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
1177latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
1178bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
1179tamil-inscript.
1180
1181---
1182** A new coding system `euc-tw' has been added for traditional Chinese
1183in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
1184Big 5 is then converted to CNS.
1185
1186---
1187** Many new coding systems are available by loading the `code-pages'
1188library. These include complete versions of most of those in
1189codepage.el, based on Unicode mappings. `codepage-setup' is now
1190obsolete and is used only in the MS-DOS port of Emacs. windows-1252
1191and windows-1251 are preloaded since the former is so common and the
1192latter is used by GNU locales.
1193
1194---
1195** The utf-8/16 coding systems have been enhanced.
1196By default, untranslatable utf-8 sequences are simply composed into
1197single quasi-characters. User option `utf-translate-cjk-mode' (it is
1198turned on by default) arranges to translate many utf-8 CJK character
1199sequences into real Emacs characters in a similar way to the Mule-UCS
1200system. As this loads a fairly big data on demand, people who are not
1201interested in CJK characters may want to customize it to nil.
1202You can augment/amend the CJK translation via hash tables
1203`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
1204coding system now also encodes characters from most of Emacs's
1205one-dimensional internal charsets, specifically the ISO-8859 ones.
1206The utf-16 coding system is affected similarly.
1207
1208---
1209** New variable `utf-translate-cjk-unicode-range' controls which
1210Unicode characters to translate in `utf-translate-cjk-mode'.
1211
1212---
1213** iso-10646-1 (`Unicode') fonts can be used to display any range of
1214characters encodable by the utf-8 coding system. Just specify the
1215fontset appropriately.
1216 800
1217--- 801+++
1218** New command `ucs-insert' inserts a character specified by its 802** New command quail-show-key shows what key (or key sequence) to type
1219unicode. 803in the current input method to input a character at point.
1220 804
1221+++ 805+++
1222** Limited support for character `unification' has been added. 806** Limited support for character `unification' has been added.
@@ -1244,151 +828,114 @@ either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
1244when possible. The latter are more space-efficient. This is 828when possible. The latter are more space-efficient. This is
1245controlled by user option utf-fragment-on-decoding. 829controlled by user option utf-fragment-on-decoding.
1246 830
1247+++
1248** The new command `set-file-name-coding-system' (C-x RET F) sets
1249coding system for encoding and decoding file names. A new menu item
1250(Options->Mule->Set Coding Systems->For File Name) invokes this
1251command.
1252
1253--- 831---
1254** The scrollbar under LessTif or Motif has a smoother drag-scrolling. 832** New language environments: French, Ukrainian, Tajik,
1255On the other hand, the size of the thumb does not represent the actual 833Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
1256amount of text shown any more (only a crude approximation of it). 834Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
835Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up
836automatically according to the locale.)
1257 837
1258--- 838---
1259** The pop up menus for Lucid now stay up if you do a fast click and can 839** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
1260be navigated with the arrow keys (like Gtk+, Mac and W32). 840ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
1261 841vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
1262+++ 842latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
1263** The Lucid menus can display multilingual text in your locale. You have 843bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
1264to explicitly specify a fontSet resource for this to work, for example 844tamil-inscript.
1265`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
1266 845
1267--- 846---
1268** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing 847** New input method chinese-sisheng for inputting Chinese Pinyin
1269ESC, like they do for Gtk+, Mac and W32. 848characters.
1270 849
1271--- 850---
1272** Dialogs and menus pop down when pressing C-g. 851** Improved Thai support. A new minor mode `thai-word-mode' (which is
852automatically activated if you select Thai as a language
853environment) changes key bindings of most word-oriented commands to
854versions which recognize Thai words. Affected commands are
855 M-f (forward-word)
856 M-b (backward-word)
857 M-d (kill-word)
858 M-DEL (backward-kill-word)
859 M-t (transpose-words)
860 M-q (fill-paragraph)
1273 861
1274--- 862---
1275** The menu item "Open File..." has been split into two items, "New File..." 863** Indian support has been updated.
1276and "Open File...". "Open File..." now opens only existing files. This is 864The in-is13194 coding system is now Unicode-based. CDAC fonts are
1277to support existing GUI file selection dialogs better. 865assumed. There is a framework for supporting various
1278 866Indian scripts, but currently only Devanagari, Malayalam and Tamil are
1279+++ 867supported.
1280** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
1281disabled by customizing the variable `use-file-dialog'.
1282
1283+++
1284** For Gtk+ version 2.4, you can make Emacs use the old file dialog
1285by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use
1286the new dialog.
1287
1288+++
1289** Emacs can produce an underscore-like (horizontal bar) cursor.
1290The underscore cursor is set by putting `(cursor-type . hbar)' in
1291default-frame-alist. It supports variable heights, like the `bar'
1292cursor does.
1293
1294+++
1295** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
1296now controlled by the variable `blink-cursor-alist'.
1297
1298+++
1299** Filesets are collections of files. You can define a fileset in
1300various ways, such as based on a directory tree or based on
1301program files that include other program files.
1302
1303Once you have defined a fileset, you can perform various operations on
1304all the files in it, such as visiting them or searching and replacing
1305in them.
1306 868
1307--- 869---
1308** PO translation files are decoded according to their MIME headers 870** A UTF-7 coding system is available in the library `utf-7'.
1309when Emacs visits them.
1310 871
1311--- 872---
1312** The game `mpuz' is enhanced. 873** The utf-8/16 coding systems have been enhanced.
1313 874By default, untranslatable utf-8 sequences are simply composed into
1314`mpuz' now allows the 2nd factor not to have two identical digits. By 875single quasi-characters. User option `utf-translate-cjk-mode' (it is
1315default, all trivial operations involving whole lines are performed 876turned on by default) arranges to translate many utf-8 CJK character
1316automatically. The game uses faces for better visual feedback. 877sequences into real Emacs characters in a similar way to the Mule-UCS
878system. As this loads a fairly big data on demand, people who are not
879interested in CJK characters may want to customize it to nil.
880You can augment/amend the CJK translation via hash tables
881`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
882coding system now also encodes characters from most of Emacs's
883one-dimensional internal charsets, specifically the ISO-8859 ones.
884The utf-16 coding system is affected similarly.
1317 885
1318--- 886---
1319** The new variable `x-select-request-type' controls how Emacs 887** A new coding system `euc-tw' has been added for traditional Chinese
1320requests X selection. The default value is nil, which means that 888in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
1321Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, 889Big 5 is then converted to CNS.
1322and use the more appropriately result.
1323
1324+++
1325** The parameters of automatic hscrolling can now be customized.
1326The variable `hscroll-margin' determines how many columns away from
1327the window edge point is allowed to get before automatic hscrolling
1328will horizontally scroll the window. The default value is 5.
1329
1330The variable `hscroll-step' determines how many columns automatic
1331hscrolling scrolls the window when point gets too close to the
1332window edge. If its value is zero, the default, Emacs scrolls the
1333window so as to center point. If its value is an integer, it says how
1334many columns to scroll. If the value is a floating-point number, it
1335gives the fraction of the window's width to scroll the window.
1336
1337The variable `automatic-hscrolling' was renamed to
1338`auto-hscroll-mode'. The old name is still available as an alias.
1339
1340** TeX modes:
1341 890
1342+++ 891---
1343*** C-c C-c prompts for a command to run, and tries to offer a good default. 892** Many new coding systems are available by loading the `code-pages'
893library. These include complete versions of most of those in
894codepage.el, based on Unicode mappings. `codepage-setup' is now
895obsolete and is used only in the MS-DOS port of Emacs. windows-1252
896and windows-1251 are preloaded since the former is so common and the
897latter is used by GNU locales.
1344 898
1345+++ 899---
1346*** The user option `tex-start-options-string' has been replaced 900** New variable `utf-translate-cjk-unicode-range' controls which
1347by two new user options: `tex-start-options', which should hold 901Unicode characters to translate in `utf-translate-cjk-mode'.
1348command-line options to feed to TeX, and `tex-start-commands' which should hold
1349TeX commands to use at startup.
1350 902
1351--- 903---
1352*** verbatim environments are now highlighted in courier by font-lock 904** iso-10646-1 (`Unicode') fonts can be used to display any range of
1353and super/sub-scripts are made into super/sub-scripts. 905characters encodable by the utf-8 coding system. Just specify the
906fontset appropriately.
1354 907
1355+++ 908+++
1356*** New major mode doctex-mode for *.dtx files. 909** Vertical scrolling is now possible within incremental search.
910To enable this feature, customize the new user option
911`isearch-allow-scroll'. User written commands which satisfy stringent
912constraints can be marked as "scrolling commands". See the Emacs manual
913for details.
1357 914
1358+++ 915+++
1359** New display feature: focus follows the mouse from one Emacs window 916** C-w in incremental search now grabs either a character or a word,
1360to another, even within a frame. If you set the variable 917making the decision in a heuristic way. This new job is done by the
1361mouse-autoselect-window to non-nil value, moving the mouse to a 918command `isearch-yank-word-or-char'. To restore the old behavior,
1362different Emacs window will select that window (minibuffer window can 919bind C-w to `isearch-yank-word' in `isearch-mode-map'.
1363be selected only when it is active). The default is nil, so that this
1364feature is not enabled.
1365 920
1366+++ 921+++
1367** On X, when the window manager requires that you click on a frame to 922** C-y in incremental search now grabs the next line if point is already
1368select it (give it focus), the selected window and cursor position 923at the end of a line.
1369normally changes according to the mouse click position. If you set
1370the variable x-mouse-click-focus-ignore-position to t, the selected
1371window and cursor position do not change when you click on a frame
1372to give it focus.
1373 924
1374+++ 925+++
1375** The new command `describe-char' (C-u C-x =) pops up a buffer with 926** C-M-w deletes and C-M-y grabs a character in isearch mode.
1376description various information about a character, including its 927Another method to grab a character is to enter the minibuffer by `M-e'
1377encodings and syntax, its text properties, how to input, overlays, and 928and to type `C-f' at the end of the search string in the minibuffer.
1378widgets at point. You can get more information about some of them, by
1379clicking on mouse-sensitive areas or moving there and pressing RET.
1380 929
1381+++ 930+++
1382** The new command `multi-occur' is just like `occur', except it can 931** M-% typed in isearch mode invokes `query-replace' or
1383search multiple buffers. There is also a new command 932`query-replace-regexp' (depending on search mode) with the current
1384`multi-occur-by-filename-regexp' which allows you to specify the 933search string used as the string to replace.
1385buffers to search by their filename. Internally, Occur mode has been
1386rewritten, and now uses font-lock, among other changes.
1387 934
1388+++ 935+++
1389** The default values of paragraph-start and indent-line-function have 936** Isearch no longer adds `isearch-resume' commands to the command
1390been changed to reflect those used in Text mode rather than those used 937history by default. To enable this feature, customize the new
1391in Indented-Text mode. 938user option `isearch-resume-in-command-history'.
1392 939
1393--- 940---
1394** New user option `query-replace-skip-read-only': when non-nil, 941** New user option `query-replace-skip-read-only': when non-nil,
@@ -1415,114 +962,107 @@ can be edited for each replacement.
1415`query-replace' which by default inherits from isearch face. 962`query-replace' which by default inherits from isearch face.
1416 963
1417+++ 964+++
1418** Emacs normally highlights mouse sensitive text whenever the mouse 965** M-x compare-windows now can automatically skip non-matching text to
1419is over the text. By setting the new variable `mouse-highlight', you 966resync points in both windows.
1420can optionally enable mouse highlighting only after you move the
1421mouse, so that highlighting disappears when you press a key. You can
1422also disable mouse highlighting.
1423
1424+++
1425** You can now customize if selecting a region by dragging the mouse
1426shall not copy the selected text to the kill-ring by setting the new
1427variable mouse-drag-copy-region to nil.
1428 967
1429+++ 968+++
1430** font-lock: in modes like C and Lisp where the fontification assumes that 969** The commands M-x customize-face and M-x customize-face-other-window
1431an open-paren in column 0 is always outside of any string or comment, 970now look at the character after point. If a face or faces are
1432font-lock now highlights any such open-paren-in-column-zero in bold-red 971specified for that character, the commands by default customize those
1433if it is inside a string or a comment, to indicate that it can cause 972faces.
1434trouble with fontification and/or indentation.
1435 973
1436+++ 974---
1437** There's a new face `minibuffer-prompt'. 975** The face-customization widget has been reworked to be less confusing.
1438Emacs adds this face to the list of text properties stored in the 976In particular, when you enable a face attribute using the corresponding
1439variable `minibuffer-prompt-properties', which is used to display the 977check-box, there's no longer a redundant `*' option in value selection
1440prompt string. 978for that attribute; the values you can choose are only those which make
979sense for the attribute. When an attribute is de-selected by unchecking
980its check-box, then the (now ignored, but still present temporarily in
981case you re-select the attribute) value is hidden.
1441 982
1442+++ 983+++
1443** The new face `mode-line-inactive' is used to display the mode line 984** When you set or reset a variable's value in a Customize buffer,
1444of non-selected windows. The `mode-line' face is now used to display 985the previous value becomes the "backup value" of the variable.
1445the mode line of the currently selected window. 986You can go back to that backup value by selecting "Use Backup Value"
1446 987under the "[State]" button.
1447The new variable `mode-line-in-non-selected-windows' controls whether
1448the `mode-line-inactive' face is used.
1449 988
1450--- 989** Dired mode:
1451** A menu item "Show/Hide" was added to the top-level menu "Options".
1452This menu allows you to turn various display features on and off (such
1453as the fringes, the tool bar, the speedbar, and the menu bar itself).
1454You can also move the vertical scroll bar to either side here or turn
1455it off completely. There is also a menu-item to toggle displaying of
1456current date and time, current line and column number in the
1457mode-line.
1458 990
1459--- 991---
1460** Speedbar has moved from the "Tools" top level menu to "Show/Hide". 992*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
993dired-ignored, dired-directory, dired-symlink, dired-warning
994introduced for Dired mode instead of font-lock faces.
1461 995
1462+++ 996+++
1463** Emacs can now indicate in the mode-line the presence of new e-mail 997*** New Dired command `dired-compare-directories' marks files
1464in a directory or in a file. See the documentation of the user option 998with different file attributes in two dired buffers.
1465`display-time-mail-directory'.
1466 999
1467--- 1000+++
1468** LDAP support now defaults to ldapsearch from OpenLDAP version 2. 1001*** New Dired command `dired-do-touch' (bound to T) changes timestamps
1002of marked files with the value entered in the minibuffer.
1469 1003
1470+++ 1004+++
1471** You can now disable pc-selection-mode after enabling it. 1005*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
1472M-x pc-selection-mode behaves like a proper minor mode, and with no 1006control substitution of the file names only when they are surrounded
1473argument it toggles the mode. 1007by whitespace. This means you can now use them as shell wildcards
1008too. If you want to use just plain `*' as a wildcard, type `*""'; the
1009doublequotes make no difference in the shell, but they prevent
1010special treatment in `dired-do-shell-command'.
1474 1011
1475Turning off PC-Selection mode restores the global key bindings 1012+++
1476that were replaced by turning on the mode. 1013*** In Dired, the w command now copies the current line's file name
1014into the kill ring. With a zero prefix arg, copies absolute file names.
1477 1015
1478+++ 1016+++
1479** Emacs now displays a splash screen by default even if command-line 1017** The variables dired-free-space-program and dired-free-space-args
1480arguments were given. The new command-line option --no-splash 1018have been renamed to directory-free-space-program and
1481disables the splash screen; see also the variable 1019directory-free-space-args, and they now apply whenever Emacs puts a
1482`inhibit-startup-message' (which is also aliased as 1020directory listing into a buffer.
1483`inhibit-splash-screen').
1484 1021
1485** Changes in support of colors on character terminals 1022+++
1023** Dired-x:
1486 1024
1487+++ 1025+++
1488*** The new command-line option --color=MODE lets you specify a standard 1026*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling
1489mode for a tty color support. It is meant to be used on character 1027command is bound to M-o. A new command dired-mark-omitted, bound to * O,
1490terminals whose capabilities are not set correctly in the terminal 1028marks omitted files. The variable dired-omit-files-p is obsoleted, use the
1491database, or with terminal emulators which support colors, but don't 1029mode toggling function instead.
1492set the TERM environment variable to a name of a color-capable
1493terminal. "emacs --color" uses the same color commands as GNU `ls'
1494when invoked with "ls --color", so if your terminal can support colors
1495in "ls --color", it will support "emacs --color" as well. See the
1496user manual for the possible values of the MODE parameter.
1497 1030
1498--- 1031+++
1499*** Emacs now supports several character terminals which provide more 1032** In Outline mode, hide-body no longer hides lines at the top
1500than 8 colors. For example, for `xterm', 16-color, 88-color, and 1033of the file that precede the first header line.
1501256-color modes are supported. Emacs automatically notes at startup
1502the extended number of colors, and defines the appropriate entries for
1503all of these colors.
1504 1034
1505+++ 1035+++
1506*** Emacs now uses the full range of available colors for the default 1036** Occur, Info, and comint-derived modes now support using
1507faces when running on a color terminal, including 16-, 88-, and 1037M-x font-lock-mode to toggle fontification. The variable
1508256-color xterms. This means that when you run "emacs -nw" on an 1038`Info-fontify' is no longer applicable; to disable fontification,
150988-color or 256-color xterm, you will see essentially the same face 1039remove `turn-on-font-lock' from `Info-mode-hook'.
1510colors as on X.
1511 1040
1512--- 1041---
1513*** There's a new support for colors on `rxvt' terminal emulator. 1042** The terminal emulation code in term.el has been improved, it can
1043run most curses applications now.
1514 1044
1515+++ 1045---
1516** Emacs can now be invoked in full-screen mode on a windowed display. 1046** The comint prompt can now be made read-only, using the new user
1047option `comint-prompt-read-only'. This is not enabled by default,
1048except in IELM buffers. The read-only status of IELM prompts can be
1049controlled with the new user option `ielm-prompt-read-only', which
1050overrides `comint-prompt-read-only'.
1517 1051
1518When Emacs is invoked on a window system, the new command-line options 1052The new commands `comint-kill-whole-line' and `comint-kill-region'
1519`--fullwidth', `--fullheight', and `--fullscreen' produce a frame 1053support editing comint buffers with read-only prompts.
1520whose width, height, or both width and height take up the entire
1521screen size. (For now, this does not work with some window managers.)
1522 1054
1523--- 1055`comint-kill-whole-line' is like `kill-whole-line', but ignores both
1524** Emacs now tries to set up buffer coding systems for HTML/XML files 1056read-only and field properties. Hence, it always kill entire
1525automatically. 1057lines, including any prompts.
1058
1059`comint-kill-region' is like `kill-region', except that it ignores
1060read-only properties, if it is safe to do so. This means that if any
1061part of a prompt is deleted, then the entire prompt must be deleted
1062and that all prompts must stay at the beginning of a line. If this is
1063not the case, then `comint-kill-region' behaves just like
1064`kill-region' if read-only are involved: it copies the text to the
1065kill-ring, but does not delete it.
1526 1066
1527+++ 1067+++
1528** The new command `comint-insert-previous-argument' in comint-derived 1068** The new command `comint-insert-previous-argument' in comint-derived
@@ -1530,89 +1070,81 @@ modes (shell-mode etc) inserts arguments from previous command lines,
1530like bash's `ESC .' binding. It is bound by default to `C-c .', but 1070like bash's `ESC .' binding. It is bound by default to `C-c .', but
1531otherwise behaves quite similarly to the bash version. 1071otherwise behaves quite similarly to the bash version.
1532 1072
1533+++ 1073** `comint-use-prompt-regexp-instead-of-fields' has been renamed
1534** Changes in C-h bindings: 1074`comint-use-prompt-regexp'. The old name has been kept as an alias,
1535 1075but declared obsolete.
1536C-h e displays the *Messages* buffer.
1537
1538C-h followed by a control character is used for displaying files
1539 that do not change:
1540
1541C-h C-f displays the FAQ.
1542C-h C-e displays the PROBLEMS file.
1543
1544The info-search bindings on C-h C-f, C-h C-k and C-h C-i
1545have been moved to C-h F, C-h K and C-h S.
1546 1076
1547C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. 1077+++
1078** Telnet now prompts you for a port number with C-u M-x telnet.
1548 1079
1549- C-h c and C-h k report the actual command (after possible remapping) 1080---
1550 run by the key sequence. 1081** M-x compile has become more robust and reliable
1551 1082
1552- C-h w and C-h f on a command which has been remapped now report the 1083Quite a few more kinds of messages are recognized. Messages that are
1553 command it is remapped to, and the keys which can be used to run 1084recognized as warnings or informational come in orange or green, instead of
1554 that command. 1085red. Informational messages are by default skipped with `next-error'
1086(controlled by `compilation-skip-threshold').
1555 1087
1556For example, if C-k is bound to kill-line, and kill-line is remapped 1088Location data is collected on the fly as the *compilation* buffer changes.
1557to new-kill-line, these commands now report: 1089This means you could modify messages to make them point to different files.
1090This also means you can not go to locations of messages you may have deleted.
1558 1091
1559- C-h c and C-h k C-k reports: 1092The variable `compilation-error-regexp-alist' has now become customizable. If
1560 C-k runs the command new-kill-line 1093you had added your own regexps to this, you'll probably need to include a
1094leading `^', otherwise they'll match anywhere on a line. There is now also a
1095`compilation-mode-font-lock-keywords' and it nicely handles all the checks
1096that configure outputs and -o options so you see at a glance where you are.
1561 1097
1562- C-h w and C-h f kill-line reports: 1098The new file etc/compilation.txt gives examples of each type of message.
1563 kill-line is remapped to new-kill-line which is on C-k, <deleteline>
1564 1099
1565- C-h w and C-h f new-kill-line reports: 1100** Compilation mode enhancements:
1566 new-kill-line is on C-k
1567 1101
1568+++ 1102+++
1569** Vertical scrolling is now possible within incremental search. 1103*** New user option `compilation-environment'.
1570To enable this feature, customize the new user option 1104This option allows you to specify environment variables for inferior
1571`isearch-allow-scroll'. User written commands which satisfy stringent 1105compilation processes without affecting the environment that all
1572constraints can be marked as "scrolling commands". See the Emacs manual 1106subprocesses inherit.
1573for details.
1574 1107
1575+++ 1108+++
1576** C-w in incremental search now grabs either a character or a word, 1109** Grep has been decoupled from compilation mode setup.
1577making the decision in a heuristic way. This new job is done by the
1578command `isearch-yank-word-or-char'. To restore the old behavior,
1579bind C-w to `isearch-yank-word' in `isearch-mode-map'.
1580 1110
1581+++ 1111---
1582** C-y in incremental search now grabs the next line if point is already 1112*** There's a new separate package grep.el.
1583at the end of a line.
1584 1113
1585+++ 1114---
1586** C-M-w deletes and C-M-y grabs a character in isearch mode. 1115*** M-x grep has been adapted to new compile
1587Another method to grab a character is to enter the minibuffer by `M-e'
1588and to type `C-f' at the end of the search string in the minibuffer.
1589 1116
1590+++ 1117Hits are fontified in green, and hits in binary files in orange. Grep buffers
1591** M-% typed in isearch mode invokes `query-replace' or 1118can be saved and automatically revisited with the new Grep mode.
1592`query-replace-regexp' (depending on search mode) with the current
1593search string used as the string to replace.
1594 1119
1595+++ 1120---
1596** Isearch no longer adds `isearch-resume' commands to the command 1121*** Grep commands now have their own submenu and customization group.
1597history by default. To enable this feature, customize the new
1598user option `isearch-resume-in-command-history'.
1599 1122
1600+++ 1123+++
1601** New user option `history-delete-duplicates'. 1124*** `grep-find' is now also available under the name `find-grep' where
1602If set to t when adding a new history element, all previous identical 1125people knowing `find-grep-dired' would probably expect it.
1603elements are deleted. 1126
1127---
1128*** The new variables `grep-window-height', `grep-auto-highlight', and
1129`grep-scroll-output' can be used to override the corresponding
1130compilation mode settings for grep commands.
1604 1131
1605+++ 1132+++
1606** Yanking text now discards certain text properties that can 1133*** New option `grep-highlight-matches' highlightes matches in *grep*
1607be inconvenient when you did not expect them. The variable 1134buffer. It uses a special feature of some grep programs which accept
1608`yank-excluded-properties' specifies which ones. Insertion 1135--color option to output markers around matches. When going to the next
1609of register contents and rectangles also discards these properties. 1136match with `next-error' the exact match is highlighted in the source
1137buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
1138source line is highlighted.
1610 1139
1611+++ 1140+++
1612** Occur, Info, and comint-derived modes now support using 1141*** New key bindings in grep output window:
1613M-x font-lock-mode to toggle fontification. The variable 1142SPC and DEL scrolls window up and down. C-n and C-p moves to next and
1614`Info-fontify' is no longer applicable; to disable fontification, 1143previous match in the grep window. RET jumps to the source line of
1615remove `turn-on-font-lock' from `Info-mode-hook'. 1144the current match. `n' and `p' shows next and previous match in
1145other window, but does not switch buffer. `{' and `}' jumps to the
1146previous or next file in the grep output. TAB also jumps to the next
1147file.
1616 1148
1617+++ 1149+++
1618** M-x grep now tries to avoid appending `/dev/null' to the command line 1150** M-x grep now tries to avoid appending `/dev/null' to the command line
@@ -1622,136 +1154,21 @@ When `-H' is used, the grep command line supplied by the user is passed
1622unchanged to the system to execute, which allows more complicated 1154unchanged to the system to execute, which allows more complicated
1623command lines to be used than was possible before. 1155command lines to be used than was possible before.
1624 1156
1625---
1626** The face-customization widget has been reworked to be less confusing.
1627In particular, when you enable a face attribute using the corresponding
1628check-box, there's no longer a redundant `*' option in value selection
1629for that attribute; the values you can choose are only those which make
1630sense for the attribute. When an attribute is de-selected by unchecking
1631its check-box, then the (now ignored, but still present temporarily in
1632case you re-select the attribute) value is hidden.
1633
1634+++
1635** When you set or reset a variable's value in a Customize buffer,
1636the previous value becomes the "backup value" of the variable.
1637You can go back to that backup value by selecting "Use Backup Value"
1638under the "[State]" button.
1639
1640---
1641** The new customization type `float' specifies numbers with floating
1642point (no integers are allowed).
1643
1644+++
1645** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
1646counter to the specified source line (the one where point is).
1647
1648---
1649** GUD mode improvements for jdb:
1650
1651*** Search for source files using jdb classpath and class
1652 information. Fast startup since there is no need to scan all
1653 source files up front. There is also no need to create and maintain
1654 lists of source directories to scan. Look at `gud-jdb-use-classpath'
1655 and `gud-jdb-classpath' customization variables documentation.
1656
1657*** Supports the standard breakpoint (gud-break, gud-clear)
1658 set/clear operations from java source files under the classpath, stack
1659 traversal (gud-up, gud-down), and run until current stack finish
1660 (gud-finish).
1661
1662*** Supports new jdb (Java 1.2 and later) in addition to oldjdb
1663 (Java 1.1 jdb).
1664
1665*** The previous method of searching for source files has been
1666 preserved in case someone still wants/needs to use it.
1667 Set gud-jdb-use-classpath to nil.
1668
1669 Added Customization Variables
1670
1671*** gud-jdb-command-name. What command line to use to invoke jdb.
1672
1673*** gud-jdb-use-classpath. Allows selection of java source file searching
1674 method: set to t for new method, nil to scan gud-jdb-directories for
1675 java sources (previous method).
1676
1677*** gud-jdb-directories. List of directories to scan and search for java
1678 classes using the original gud-jdb method (if gud-jdb-use-classpath
1679 is nil).
1680
1681 Minor Improvements
1682
1683*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS
1684instead of the OpenSSL based "starttls" tool. For backwards
1685compatibility, it prefers "starttls", but you can toggle
1686`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
1687"starttls" tool).
1688
1689*** Do not allow debugger output history variable to grow without bounds.
1690
1691+++
1692** hide-ifdef-mode now uses overlays rather than selective-display
1693to hide its text. This should be mostly transparent but slightly
1694changes the behavior of motion commands like C-e and C-p.
1695
1696+++
1697** Unquoted `$' in file names do not signal an error any more when
1698the corresponding environment variable does not exist.
1699Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
1700is only rarely needed.
1701
1702---
1703** JIT-lock changes
1704*** jit-lock can now be delayed with `jit-lock-defer-time'.
1705
1706If this variable is non-nil, its value should be the amount of Emacs
1707idle time in seconds to wait before starting fontification. For
1708example, if you set `jit-lock-defer-time' to 0.25, fontification will
1709only happen after 0.25s of idle time.
1710
1711*** contextual refontification is now separate from stealth fontification.
1712
1713jit-lock-defer-contextually is renamed jit-lock-contextually and
1714jit-lock-context-time determines the delay after which contextual
1715refontification takes place.
1716
1717+++
1718** Marking commands extend the region when invoked multiple times. If
1719you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
1720C-M-h (mark-defun) repeatedly, the marked region extends each time, so
1721you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
1722This feature also works for mark-end-of-sentence, if you bind that to
1723a key. It also extends the region when the mark is active in Transient
1724Mark mode, regardless of the last command. To start a new region with
1725one of marking commands in Transient Mark mode, you can deactivate the
1726active region with C-g, or set the new mark with C-SPC.
1727
1728+++ 1157+++
1729** Some commands do something special in Transient Mark mode when the 1158** New options `next-error-highlight' and `next-error-highlight-no-select'
1730mark is active--for instance, they limit their operation to the 1159specify the method of highlighting of the corresponding source line
1731region. Even if you don't normally use Transient Mark mode, you might 1160in new face `next-error'.
1732want to get this behavior from a particular command. There are two
1733ways you can enable Transient Mark mode and activate the mark, for one
1734command only.
1735
1736One method is to type C-SPC C-SPC; this enables Transient Mark mode
1737and sets the mark at point. The other method is to type C-u C-x C-x.
1738This enables Transient Mark mode temporarily but does not alter the
1739mark or the region.
1740
1741After these commands, Transient Mark mode remains enabled until you
1742deactivate the mark. That typically happens when you type a command
1743that alters the buffer, but you can also deactivate the mark by typing
1744C-g.
1745 1161
1746+++ 1162+++
1747** A prefix argument is no longer required to repeat a jump to a 1163** A new minor mode `next-error-follow-minor-mode' can be used in
1748previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the 1164compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
1749mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. 1165modes that can use `next-error'). In this mode, cursor motion in the
1166buffer causes automatic display in another window of the corresponding
1167matches, compilation errors, etc. This minor mode can be toggled with
1168C-c C-f.
1750 1169
1751+++ 1170+++
1752** Movement commands `beginning-of-buffer', `end-of-buffer', 1171** M-x diff uses diff-mode instead of compilation-mode.
1753`beginning-of-defun', `end-of-defun' do not set the mark if the mark
1754is already active in Transient Mark mode.
1755 1172
1756+++ 1173+++
1757** In the *Occur* buffer, `o' switches to it in another window, and 1174** In the *Occur* buffer, `o' switches to it in another window, and
@@ -1759,236 +1176,140 @@ C-o displays the current line's occurrence in another window without
1759switching to it. 1176switching to it.
1760 1177
1761+++ 1178+++
1762** When you specify a frame size with --geometry, the size applies to 1179** You can now use next-error (C-x `) and previous-error to advance to
1763all frames you create. A position specified with --geometry only 1180the next/previous matching line found by M-x occur.
1764affects the initial frame.
1765 1181
1766+++ 1182+++
1767** M-h (mark-paragraph) now accepts a prefix arg. 1183** The new command `multi-occur' is just like `occur', except it can
1768With positive arg, M-h marks the current and the following paragraphs; 1184search multiple buffers. There is also a new command
1769if the arg is negative, it marks the current and the preceding 1185`multi-occur-by-filename-regexp' which allows you to specify the
1770paragraphs. 1186buffers to search by their filename. Internally, Occur mode has been
1187rewritten, and now uses font-lock, among other changes.
1771 1188
1772+++ 1189+++
1773** The variables dired-free-space-program and dired-free-space-args 1190** font-lock: in modes like C and Lisp where the fontification assumes that
1774have been renamed to directory-free-space-program and 1191an open-paren in column 0 is always outside of any string or comment,
1775directory-free-space-args, and they now apply whenever Emacs puts a 1192font-lock now highlights any such open-paren-in-column-zero in bold-red
1776directory listing into a buffer. 1193if it is inside a string or a comment, to indicate that it can cause
1777 1194trouble with fontification and/or indentation.
1778---
1779** mouse-wheels can now scroll a specific fraction of the window
1780(rather than a fixed number of lines) and the scrolling is `progressive'.
1781
1782---
1783** Unexpected yanking of text due to accidental clicking on the mouse
1784wheel button (typically mouse-2) during wheel scrolling is now avoided.
1785This behavior can be customized via the mouse-wheel-click-event and
1786mouse-wheel-inhibit-click-time variables.
1787 1195
1788+++ 1196** Enhancements to apropos commands:
1789** The keyboard-coding-system is now automatically set based on your
1790current locale settings if you are not using a window system. This
1791may mean that the META key doesn't work but generates non-ASCII
1792characters instead, depending on how the terminal (or terminal
1793emulator) works. Use `set-keyboard-coding-system' (or customize
1794keyboard-coding-system) if you prefer META to work (the old default)
1795or if the locale doesn't describe the character set actually generated
1796by the keyboard. See Info node `Single-Byte Character Support'.
1797 1197
1798+++ 1198+++
1799** Emacs now reads the standard abbrevs file ~/.abbrev_defs 1199*** The apropos commands now accept a list of words to match.
1800automatically at startup, if it exists. When Emacs offers to save 1200When more than one word is specified, at least two of those words must
1801modified buffers, it saves the abbrevs too if they have changed. It 1201be present for an item to match. Regular expression matching is still
1802can do this either silently or asking for confirmation first, 1202available.
1803according to the value of `save-abbrevs'.
1804 1203
1805+++ 1204+++
1806** Display of hollow cursors now obeys the buffer-local value (if any) 1205*** The new option `apropos-sort-by-scores' causes the matching items
1807of `cursor-in-non-selected-windows' in the buffer that the cursor 1206to be sorted according to their score. The score for an item is a
1808appears in. 1207number calculated to indicate how well the item matches the words or
1208regular expression that you entered to the apropos command. The best
1209match is listed first, and the calculated score is shown for each
1210matching item.
1809 1211
1810+++ 1212+++
1811** The variable `cursor-in-non-selected-windows' can now be set to any 1213** You can have several Emacs servers on the same machine.
1812of the recognized cursor types.
1813
1814---
1815** The variable `auto-save-file-name-transforms' now has a third element that
1816controls whether or not the function `make-auto-save-file-name' will
1817attempt to construct a unique auto-save name (e.g. for remote files).
1818 1214
1819+++ 1215 % emacs --eval '(setq server-name "foo")' -f server-start &
1820** There is a new calendar package, icalendar.el, that can be used to 1216 % emacs --eval '(setq server-name "bar")' -f server-start &
1821convert Emacs diary entries to/from the iCalendar format. 1217 % emacsclient -s foo file1
1218 % emacsclient -s bar file2
1822 1219
1823+++ 1220+++
1824** Diary sexp entries can have custom marking in the calendar. 1221** The `emacsclient' command understands the options `--eval' and
1825Diary sexp functions which only apply to certain days (such as 1222`--display' which tell Emacs respectively to evaluate the given elisp
1826`diary-block' or `diary-cyclic') now take an optional parameter MARK, 1223expression and to use the given display when visiting files.
1827which is the name of a face or a single-character string indicating
1828how to highlight the day in the calendar display. Specifying a
1829single-character string as @var{mark} places the character next to the
1830day in the calendar. Specifying a face highlights the day with that
1831face. This lets you have different colors or markings for vacations,
1832appointments, paydays or anything else using a sexp.
1833 1224
1834+++ 1225+++
1835** The new function `calendar-goto-day-of-year' (g D) prompts for a 1226** User option `server-mode' can be used to start a server process.
1836year and day number, and moves to that date. Negative day numbers
1837count backward from the end of the year.
1838 1227
1839+++ 1228+++
1840** The new Calendar function `calendar-goto-iso-week' (g w) 1229** New user option `add-log-always-start-new-record'.
1841prompts for a year and a week number, and moves to the first 1230When this option is enabled, M-x add-change-log-entry always
1842day of that ISO week. 1231starts a new record regardless of when the last record is.
1843 1232
1844--- 1233** Info mode:
1845** The new variable `calendar-minimum-window-height' affects the
1846window generated by the function `generate-calendar-window'.
1847 1234
1848--- 1235+++
1849** The functions `holiday-easter-etc' and `holiday-advent' now take 1236*** A numeric prefix argument of `info' selects an Info buffer
1850optional arguments, in order to only report on the specified holiday 1237with the number appended to the *info* buffer name (e.g. "*info*<2>").
1851rather than all. This makes customization of variables such as
1852`christian-holidays' simpler.
1853 1238
1854--- 1239---
1855** The function `simple-diary-display' now by default sets a header line. 1240*** isearch in Info uses Info-search and searches through multiple nodes.
1856This can be controlled through the variables `diary-header-line-flag' 1241Before leaving the initial Info node isearch fails once with the error
1857and `diary-header-line-format'. 1242message [initial node], and with subsequent C-s/C-r continues through
1243other nodes. When isearch fails for the rest of the manual, it wraps
1244aroung the whole manual to the top/final node. The user option
1245`Info-isearch-search' controls whether to use Info-search for isearch,
1246or the default isearch search function that wraps around the current
1247Info node.
1858 1248
1859+++ 1249*** New search commands: `Info-search-case-sensitively' (bound to S),
1860** The procedure for activating appointment reminders has changed: use 1250`Info-search-backward', and `Info-search-next' which repeats the last
1861the new function `appt-activate'. The new variable 1251search without prompting for a new search string.
1862`appt-display-format' controls how reminders are displayed, replacing
1863appt-issue-message, appt-visible, and appt-msg-window.
1864 1252
1865+++ 1253*** New command `Info-history-forward' (bound to r and new toolbar icon)
1866** The new functions `diary-from-outlook', `diary-from-outlook-gnus', 1254moves forward in history to the node you returned from after using
1867and `diary-from-outlook-rmail' can be used to import diary entries 1255`Info-history-back' (renamed from `Info-last').
1868from Outlook-format appointments in mail messages. The variable
1869`diary-outlook-formats' can be customized to recognize additional
1870formats.
1871 1256
1257*** New command `Info-history' (bound to L) displays a menu of visited nodes.
1872 1258
1873** VC Changes 1259*** New command `Info-toc' (bound to T) creates a node with table of contents
1260from the tree structure of menus of the current Info file.
1874 1261
1875+++ 1262*** New command `info-apropos' searches the indices of the known
1876*** The key C-x C-q no longer checks files in or out, it only changes 1263Info files on your system for a string, and builds a menu of the
1877the read-only state of the buffer (toggle-read-only). We made this 1264possible matches.
1878change because we held a poll and found that many users were unhappy
1879with the previous behavior. If you do prefer this behavior, you
1880can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
1881 1265
1882 (global-set-key "\C-x\C-q" 'vc-toggle-read-only) 1266*** New command `Info-copy-current-node-name' (bound to w) copies
1267the current Info node name into the kill ring. With a zero prefix
1268arg, puts the node name inside the `info' function call.
1883 1269
1884The function `vc-toggle-read-only' will continue to exist. 1270---
1271*** New face `info-xref-visited' distinguishes visited nodes from unvisited
1272and a new option `Info-fontify-visited-nodes' to control this.
1885 1273
1886+++ 1274*** http and ftp links in Info are now operational: they look like cross
1887*** There is a new user option `vc-cvs-global-switches' that allows 1275references and following them calls `browse-url'.
1888you to specify switches that are passed to any CVS command invoked
1889by VC. These switches are used as "global options" for CVS, which
1890means they are inserted before the command name. For example, this
1891allows you to specify a compression level using the "-z#" option for
1892CVS.
1893 1276
1894+++ 1277+++
1895*** New backends for Subversion and Meta-CVS. 1278*** Info now hides node names in menus and cross references by default.
1279If you prefer the old behavior, you can set the new user option
1280`Info-hide-note-references' to nil.
1896 1281
1897** EDiff changes. 1282---
1283*** Images in Info pages are supported.
1284Info pages show embedded images, in Emacs frames with image support.
1285Info documentation that includes images, processed with makeinfo
1286version 4.7 or newer, compiles to Info pages with embedded images.
1898 1287
1899+++ 1288+++
1900*** When comparing directories. 1289*** The default value for `Info-scroll-prefer-subnodes' is now nil.
1901Typing D brings up a buffer that lists the differences between the contents of
1902directories. Now it is possible to use this buffer to copy the missing files
1903from one directory to another.
1904 1290
1905+++ 1291---
1906*** When comparing files or buffers. 1292*** Info-index offers completion.
1907Typing the = key now offers to perform the word-by-word comparison of the
1908currently highlighted regions in an inferior Ediff session. If you answer 'n'
1909then it reverts to the old behavior and asks the user to select regions for
1910comparison.
1911 1293
1912*** The new command `ediff-backup' compares a file with its most recent 1294---
1913backup using `ediff'. If you specify the name of a backup file, 1295** Lisp mode now uses font-lock-doc-face for the docstrings.
1914`ediff-backup' compares it with the file of which it is a backup.
1915 1296
1916+++ 1297+++
1917** Etags changes. 1298** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
1918 1299list starting after point.
1919*** New regular expressions features
1920
1921**** New syntax for regular expressions, multi-line regular expressions.
1922The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
1923only for backward compatibility. The new equivalent syntax is
1924--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
1925where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
1926more characters among `i' (ignore case), `m' (multi-line) and `s'
1927(single-line). The `m' and `s' modifiers behave as in Perl regular
1928expressions: `m' allows regexps to match more than one line, while `s'
1929(which implies `m') means that `.' matches newlines. The ability to
1930span newlines allows writing of much more powerful regular expressions
1931and rapid prototyping for tagging new languages.
1932
1933**** Regular expressions can use char escape sequences as in Gcc.
1934The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
1935respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
1936CR, TAB, VT,
1937
1938**** Regular expressions can be bound to a given language.
1939The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
1940only for files of language LANGUAGE, and ignored otherwise. This is
1941particularly useful when storing regexps in a file.
1942
1943**** Regular expressions can be read from a file.
1944The --regex=@regexfile option means read the regexps from a file, one
1945per line. Lines beginning with space or tab are ignored.
1946
1947*** New language parsing features
1948
1949**** The `::' qualifier triggers C++ parsing in C file.
1950Previously, only the `template' and `class' keywords had this effect.
1951
1952**** The gnucc __attribute__ keyword is now recognised and ignored.
1953
1954**** New language HTML.
1955Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
1956used inside an anchor and whenever id= is used.
1957
1958**** In Makefiles, constants are tagged.
1959If you want the old behavior instead, thus avoiding to increase the
1960size of the tags file, use the --no-globals option.
1961
1962**** New language Lua.
1963All functions are tagged.
1964
1965**** In Perl, packages are tags.
1966Subroutine tags are named from their package. You can jump to sub tags
1967as you did before, by the sub name, or additionally by looking for
1968package::sub.
1969
1970**** In Prolog, etags creates tags for rules in addition to predicates.
1971
1972**** New language PHP.
1973Tags are functions, classes and defines.
1974If the --members option is specified to etags, tags are variables also.
1975 1300
1976**** New default keywords for TeX. 1301** New features in evaluation commands
1977The new keywords are def, newcommand, renewcommand, newenvironment and
1978renewenvironment.
1979 1302
1980*** Honour #line directives. 1303+++
1981When Etags parses an input file that contains C preprocessor's #line 1304*** The function `eval-defun' (C-M-x) called on defface reinitializes
1982directives, it creates tags using the file name and line number 1305the face to the value specified in the defface expression.
1983specified in those directives. This is useful when dealing with code
1984created from Cweb source files. When Etags tags the generated file, it
1985writes tags pointing to the source file.
1986 1306
1987*** New option --parse-stdin=FILE. 1307+++
1988This option is mostly useful when calling etags from programs. It can 1308*** Typing C-x C-e twice prints the value of the integer result
1989be used (only once) in place of a file name on the command line. Etags 1309in additional formats (octal, hexadecimal, character) specified
1990reads from standard input and marks the produced tags as belonging to 1310by the new function `eval-expression-print-format'. The same
1991the file FILE. 1311function also defines the result format for `eval-expression' (M-:),
1312`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
1992 1313
1993+++ 1314+++
1994** CC Mode changes. 1315** CC Mode changes.
@@ -2279,31 +1600,40 @@ line is left untouched.
2279The function c-toggle-syntactic-indentation can be used to toggle 1600The function c-toggle-syntactic-indentation can be used to toggle
2280syntactic indentation. 1601syntactic indentation.
2281 1602
2282+++ 1603---
2283** The command line option --no-windows has been changed to 1604** Perl mode has a new variable `perl-indent-continued-arguments'.
2284--no-window-system. The old one still works, but is deprecated.
2285 1605
2286+++ 1606---
2287** The command `list-text-properties-at' has been deleted because 1607** Fortran mode does more font-locking by default. Use level 3
2288C-u C-x = gives the same information and more. 1608highlighting for the old default.
2289 1609
2290+++ 1610+++
2291** `buffer-menu' and `list-buffers' now list buffers whose names begin 1611** Fortran mode has a new variable `fortran-directive-re'.
2292with a space, when those buffers are visiting files. Normally buffers 1612Adapt this to match the format of any compiler directives you use.
2293whose names begin with space are omitted. 1613Lines that match are never indented, and are given distinctive font-locking.
2294 1614
2295+++ 1615+++
2296** You can now customize fill-nobreak-predicate to control where 1616** F90 mode and Fortran mode have new navigation commands
2297filling can break lines. The value is now normally a list of 1617`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
2298functions, but it can also be a single function, for compatibility. 1618`f90-previous-block', `fortran-end-of-block',
1619`fortran-beginning-of-block'.
2299 1620
2300We provide two sample predicates, fill-single-word-nobreak-p and 1621---
2301fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. 1622** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
1623It cannot deal with every code format, but ought to handle a sizeable
1624majority.
2302 1625
2303+++ 1626---
2304** New user option `add-log-always-start-new-record'. 1627** The new function `f90-backslash-not-special' can be used to change
2305When this option is enabled, M-x add-change-log-entry always 1628the syntax of backslashes in F90 buffers.
2306starts a new record regardless of when the last record is. 1629
1630---
1631** Prolog mode has a new variable `prolog-font-lock-keywords'
1632to support use of font-lock.
1633
1634---
1635** Emacs now tries to set up buffer coding systems for HTML/XML files
1636automatically.
2307 1637
2308+++ 1638+++
2309** SGML mode has indentation and supports XML syntax. 1639** SGML mode has indentation and supports XML syntax.
@@ -2316,82 +1646,405 @@ from the file name or buffer contents.
2316+++ 1646+++
2317** `xml-mode' is now an alias for `sgml-mode', which has XML support. 1647** `xml-mode' is now an alias for `sgml-mode', which has XML support.
2318 1648
1649** TeX modes:
1650
1651+++
1652*** C-c C-c prompts for a command to run, and tries to offer a good default.
1653
1654+++
1655*** The user option `tex-start-options-string' has been replaced
1656by two new user options: `tex-start-options', which should hold
1657command-line options to feed to TeX, and `tex-start-commands' which should hold
1658TeX commands to use at startup.
1659
2319--- 1660---
2320** Lisp mode now uses font-lock-doc-face for the docstrings. 1661*** verbatim environments are now highlighted in courier by font-lock
1662and super/sub-scripts are made into super/sub-scripts.
1663
1664+++
1665*** New major mode doctex-mode for *.dtx files.
1666
1667** BibTeX mode:
1668*** The new command bibtex-url browses a URL for the BibTeX entry at
1669point (bound to C-c C-l and mouse-2, RET on clickable fields).
1670
1671*** The new command bibtex-entry-update (bound to C-c C-u) updates
1672an existing BibTeX entry.
1673
1674*** New `bibtex-entry-format' option `required-fields', enabled by default.
1675
1676*** bibtex-maintain-sorted-entries can take values `plain',
1677`crossref', and `entry-class' which control the sorting scheme used
1678for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
1679scheme `entry-class'. TAB completion for reference keys and
1680automatic detection of duplicates does not require anymore that
1681bibtex-maintain-sorted-entries is non-nil.
1682
1683*** If the new variable bibtex-parse-keys-fast is non-nil,
1684use fast but simplified algorithm for parsing BibTeX keys.
1685
1686*** If the new variable bibtex-autoadd-commas is non-nil,
1687automatically add missing commas at end of BibTeX fields.
1688
1689*** The new variable bibtex-autofill-types contains a list of entry
1690types for which fields are filled automatically (if possible).
1691
1692*** The new command bibtex-complete completes word fragment before
1693point according to context (bound to M-tab).
1694
1695*** The new commands bibtex-find-entry and bibtex-find-crossref
1696locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
1697Crossref fields are clickable (bound to mouse-2, RET).
1698
1699*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
1700individual fields of a BibTeX entry.
1701
1702*** The new variables bibtex-files and bibtex-file-path define a set
1703of BibTeX files that are searched for entry keys.
1704
1705*** The new command bibtex-validate-globally checks for duplicate keys
1706in multiple BibTeX files.
1707
1708*** The new command bibtex-copy-summary-as-kill pushes summary
1709of BibTeX entry to kill ring (bound to C-c C-t).
1710
1711+++
1712** In Enriched mode, `set-left-margin' and `set-right-margin' are now
1713by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
1714and `C-c C-r'.
1715
1716+++
1717** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
1718counter to the specified source line (the one where point is).
2321 1719
2322--- 1720---
2323** Perl mode has a new variable `perl-indent-continued-arguments'. 1721** GUD mode has its own tool bar for controlling execution of the inferior
1722and other common debugger commands.
2324 1723
2325--- 1724---
2326** Fortran mode does more font-locking by default. Use level 3 1725** GUD mode improvements for jdb:
2327highlighting for the old default. 1726
1727*** Search for source files using jdb classpath and class
1728 information. Fast startup since there is no need to scan all
1729 source files up front. There is also no need to create and maintain
1730 lists of source directories to scan. Look at `gud-jdb-use-classpath'
1731 and `gud-jdb-classpath' customization variables documentation.
1732
1733*** Supports the standard breakpoint (gud-break, gud-clear)
1734 set/clear operations from java source files under the classpath, stack
1735 traversal (gud-up, gud-down), and run until current stack finish
1736 (gud-finish).
1737
1738*** Supports new jdb (Java 1.2 and later) in addition to oldjdb
1739 (Java 1.1 jdb).
1740
1741*** The previous method of searching for source files has been
1742 preserved in case someone still wants/needs to use it.
1743 Set gud-jdb-use-classpath to nil.
1744
1745 Added Customization Variables
1746
1747*** gud-jdb-command-name. What command line to use to invoke jdb.
1748
1749*** gud-jdb-use-classpath. Allows selection of java source file searching
1750 method: set to t for new method, nil to scan gud-jdb-directories for
1751 java sources (previous method).
1752
1753*** gud-jdb-directories. List of directories to scan and search for java
1754 classes using the original gud-jdb method (if gud-jdb-use-classpath
1755 is nil).
1756
1757 Minor Improvements
1758
1759*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS
1760instead of the OpenSSL based "starttls" tool. For backwards
1761compatibility, it prefers "starttls", but you can toggle
1762`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
1763"starttls" tool).
1764
1765*** Do not allow debugger output history variable to grow without bounds.
2328 1766
2329+++ 1767+++
2330** Fortran mode has a new variable `fortran-directive-re'. 1768** You can now use Auto Revert mode to `tail' a file.
2331Adapt this to match the format of any compiler directives you use. 1769If point is at the end of a file buffer before reverting, Auto Revert
2332Lines that match are never indented, and are given distinctive font-locking. 1770mode keeps it at the end after reverting. Similarly if point is
1771displayed at the end of a file buffer in any window, it stays at
1772the end of the buffer in that window. This allows to tail a file:
1773just put point at the end of the buffer and it stays there. This
1774rule applies to file buffers. For non-file buffers, the behavior may
1775be mode dependent.
1776
1777If you are sure that the file will only change by growing at the end,
1778then you can tail the file more efficiently by using the new minor
1779mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
1780toggles this mode.
2333 1781
2334+++ 1782+++
2335** F90 mode and Fortran mode have new navigation commands 1783** Auto Revert mode is now more careful to avoid excessive reverts and
2336`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', 1784other potential problems when deciding which non-file buffers to
2337`f90-previous-block', `fortran-end-of-block', 1785revert. This matters especially if Global Auto Revert mode is enabled
2338`fortran-beginning-of-block'. 1786and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
1787mode only reverts a non-file buffer if the buffer has a non-nil
1788`revert-buffer-function' and a non-nil `buffer-stale-function', which
1789decides whether the buffer should be reverted. Currently, this means
1790that auto reverting works for Dired buffers (although this may not
1791work properly on all operating systems) and for the Buffer Menu.
1792
1793+++
1794** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
1795Revert mode reliably updates version control info (such as the version
1796control number in the mode line), in all version controlled buffers in
1797which it is active. If the option is nil, the default, then this info
1798only gets updated whenever the buffer gets reverted.
2339 1799
2340--- 1800---
2341** F90 mode and Fortran mode have support for hs-minor-mode (hideshow). 1801** recentf changes.
2342It cannot deal with every code format, but ought to handle a sizeable 1802
2343majority. 1803The recent file list is now automatically cleanup when recentf mode is
1804enabled. The new option `recentf-auto-cleanup' controls when to do
1805automatic cleanup.
1806
1807The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
1808and provides a more general mechanism to customize which file names to
1809keep in the recent list.
1810
1811With the more advanced option: `recentf-filename-handler', you can
1812specify a function that transforms filenames handled by recentf. For
1813example, if set to `file-truename', the same file will not be in the
1814recent list with different symbolic links.
1815
1816To follow naming convention, `recentf-menu-append-commands-flag'
1817replaces the misnamed option `recentf-menu-append-commands-p'. The
1818old name remains available as alias, but has been marked obsolete.
1819
1820+++
1821** Desktop package
1822
1823+++
1824*** Desktop saving is now a minor mode, desktop-save-mode. Variable
1825desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
1826saving.
2344 1827
2345--- 1828---
2346** The new function `f90-backslash-not-special' can be used to change 1829*** Buffers are saved in the desktop file in the same order as that in the
2347the syntax of backslashes in F90 buffers. 1830buffer list.
1831
1832+++
1833*** The desktop package can be customized to restore only some buffers immediately,
1834remaining buffers are restored lazily (when Emacs is idle).
1835
1836+++
1837*** New commands:
1838 - desktop-revert reverts to the last loaded desktop.
1839 - desktop-change-dir kills current desktop and loads a new.
1840 - desktop-save-in-desktop-dir saves desktop in the directory from which
1841 it was loaded.
1842 - desktop-lazy-complete runs the desktop load to completion.
1843 - desktop-lazy-abort aborts lazy loading of the desktop.
2348 1844
2349--- 1845---
2350** Prolog mode has a new variable `prolog-font-lock-keywords' 1846*** New customizable variables:
2351to support use of font-lock. 1847 - desktop-save. Determins whether the desktop should be saved when it is
1848 killed.
1849 - desktop-file-name-format. Format in which desktop file names should be saved.
1850 - desktop-path. List of directories in which to lookup the desktop file.
1851 - desktop-locals-to-save. List of local variables to save.
1852 - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
1853 - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
1854 should not delete.
1855 - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
1856 restored lazily (when Emacs is idle).
1857 - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
1858 - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
2352 1859
2353+++ 1860+++
2354** `special-display-buffer-names' and `special-display-regexps' now 1861*** New command line option --no-desktop
2355understand two new boolean pseudo-frame-parameters `same-frame' and 1862
2356`same-window'. 1863---
1864*** New hooks:
1865 - desktop-after-read-hook run after a desktop is loaded.
1866 - desktop-no-desktop-file-hook run when no desktop file is found.
1867
1868---
1869** The saveplace.el package now filters out unreadable files.
1870When you exit Emacs, the saved positions in visited files no longer
1871include files that aren't readable, e.g. files that don't exist.
1872Customize the new option `save-place-forget-unreadable-files' to nil
1873to get the old behavior. The new options `save-place-save-skipped'
1874and `save-place-skip-check-regexp' allow further fine-tuning of this
1875feature.
1876
1877** EDiff changes.
2357 1878
2358+++ 1879+++
2359** M-x setenv now expands environment variables of the form `$foo' and 1880*** When comparing directories.
2360`${foo}' in the specified new value of the environment variable. To 1881Typing D brings up a buffer that lists the differences between the contents of
2361include a `$' in the value, use `$$'. 1882directories. Now it is possible to use this buffer to copy the missing files
1883from one directory to another.
2362 1884
2363+++ 1885+++
2364** File-name completion can now ignore directories. 1886*** When comparing files or buffers.
2365If an element of the list in `completion-ignored-extensions' ends in a 1887Typing the = key now offers to perform the word-by-word comparison of the
2366slash `/', it indicates a subdirectory that should be ignored when 1888currently highlighted regions in an inferior Ediff session. If you answer 'n'
2367completing file names. Elements of `completion-ignored-extensions' 1889then it reverts to the old behavior and asks the user to select regions for
2368which do not end in a slash are never considered when a completion 1890comparison.
2369candidate is a directory. 1891
1892*** The new command `ediff-backup' compares a file with its most recent
1893backup using `ediff'. If you specify the name of a backup file,
1894`ediff-backup' compares it with the file of which it is a backup.
2370 1895
2371+++ 1896+++
2372** The completion commands TAB, SPC and ? in the minibuffer apply only 1897** Etags changes.
2373to the text before point. If there is text in the buffer after point,
2374it remains unchanged.
2375 1898
2376--- 1899*** New regular expressions features
2377** Enhanced visual feedback in *Completions* buffer.
2378 1900
2379Completions lists use faces to highlight what all completions 1901**** New syntax for regular expressions, multi-line regular expressions.
2380have in common and where they begin to differ. 1902The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
1903only for backward compatibility. The new equivalent syntax is
1904--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
1905where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
1906more characters among `i' (ignore case), `m' (multi-line) and `s'
1907(single-line). The `m' and `s' modifiers behave as in Perl regular
1908expressions: `m' allows regexps to match more than one line, while `s'
1909(which implies `m') means that `.' matches newlines. The ability to
1910span newlines allows writing of much more powerful regular expressions
1911and rapid prototyping for tagging new languages.
2381 1912
2382The common prefix shared by all possible completions uses the face 1913**** Regular expressions can use char escape sequences as in Gcc.
2383`completions-common-part', while the first character that isn't the 1914The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
2384same uses the face `completions-first-difference'. By default, 1915respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
2385`completions-common-part' inherits from `default', and 1916CR, TAB, VT,
2386`completions-first-difference' inherits from `bold'. The idea of 1917
2387`completions-common-part' is that you can use it to make the common 1918**** Regular expressions can be bound to a given language.
2388parts less visible than normal, so that the rest of the differing 1919The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
2389parts is, by contrast, slightly highlighted. 1920only for files of language LANGUAGE, and ignored otherwise. This is
1921particularly useful when storing regexps in a file.
1922
1923**** Regular expressions can be read from a file.
1924The --regex=@regexfile option means read the regexps from a file, one
1925per line. Lines beginning with space or tab are ignored.
1926
1927*** New language parsing features
1928
1929**** The `::' qualifier triggers C++ parsing in C file.
1930Previously, only the `template' and `class' keywords had this effect.
1931
1932**** The gnucc __attribute__ keyword is now recognised and ignored.
1933
1934**** New language HTML.
1935Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
1936used inside an anchor and whenever id= is used.
1937
1938**** In Makefiles, constants are tagged.
1939If you want the old behavior instead, thus avoiding to increase the
1940size of the tags file, use the --no-globals option.
1941
1942**** New language Lua.
1943All functions are tagged.
1944
1945**** In Perl, packages are tags.
1946Subroutine tags are named from their package. You can jump to sub tags
1947as you did before, by the sub name, or additionally by looking for
1948package::sub.
1949
1950**** In Prolog, etags creates tags for rules in addition to predicates.
1951
1952**** New language PHP.
1953Tags are functions, classes and defines.
1954If the --members option is specified to etags, tags are variables also.
1955
1956**** New default keywords for TeX.
1957The new keywords are def, newcommand, renewcommand, newenvironment and
1958renewenvironment.
1959
1960*** Honour #line directives.
1961When Etags parses an input file that contains C preprocessor's #line
1962directives, it creates tags using the file name and line number
1963specified in those directives. This is useful when dealing with code
1964created from Cweb source files. When Etags tags the generated file, it
1965writes tags pointing to the source file.
1966
1967*** New option --parse-stdin=FILE.
1968This option is mostly useful when calling etags from programs. It can
1969be used (only once) in place of a file name on the command line. Etags
1970reads from standard input and marks the produced tags as belonging to
1971the file FILE.
1972
1973** VC Changes
2390 1974
2391+++ 1975+++
2392** New user option `inhibit-startup-buffer-menu'. 1976*** The key C-x C-q no longer checks files in or out, it only changes
2393When loading many files, for instance with `emacs *', Emacs normally 1977the read-only state of the buffer (toggle-read-only). We made this
2394displays a buffer menu. This option turns the buffer menu off. 1978change because we held a poll and found that many users were unhappy
1979with the previous behavior. If you do prefer this behavior, you
1980can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
1981
1982 (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
1983
1984The function `vc-toggle-read-only' will continue to exist.
1985
1986+++
1987*** There is a new user option `vc-cvs-global-switches' that allows
1988you to specify switches that are passed to any CVS command invoked
1989by VC. These switches are used as "global options" for CVS, which
1990means they are inserted before the command name. For example, this
1991allows you to specify a compression level using the "-z#" option for
1992CVS.
1993
1994+++
1995*** New backends for Subversion and Meta-CVS.
1996
1997+++
1998** vc-annotate-mode enhancements
1999
2000In vc-annotate mode, you can now use the following key bindings for
2001enhanced functionality to browse the annotations of past revisions, or
2002to view diffs or log entries directly from vc-annotate-mode:
2003
2004 P: annotates the previous revision
2005 N: annotates the next revision
2006 J: annotates the revision at line
2007 A: annotates the revision previous to line
2008 D: shows the diff of the revision at line with its previous revision
2009 L: shows the log of the revision at line
2010 W: annotates the workfile (most up to date) version
2011
2012+++
2013** In pcl-cvs mode, there is a new `d y' command to view the diffs
2014between the local version of the file and yesterday's head revision
2015in the repository.
2016
2017+++
2018** In pcl-cvs mode, there is a new `d r' command to view the changes
2019anyone has committed to the repository since you last executed
2020"checkout", "update" or "commit". That means using cvs diff options
2021-rBASE -rHEAD.
2022
2023+++
2024** There is a new user option `mail-default-directory' that allows you
2025to specify the value of `default-directory' for mail buffers. This
2026directory is used for auto-save files of mail buffers. It defaults to
2027"~/".
2028
2029+++
2030** Emacs can now indicate in the mode-line the presence of new e-mail
2031in a directory or in a file. See the documentation of the user option
2032`display-time-mail-directory'.
2033
2034---
2035** PO translation files are decoded according to their MIME headers
2036when Emacs visits them.
2037
2038** Gnus package
2039
2040---
2041*** Gnus now includes Sieve and PGG
2042Sieve is a library for managing Sieve scripts. PGG is a library to handle
2043PGP/MIME.
2044
2045---
2046*** There are many news features, bug fixes and improvements.
2047See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
2395 2048
2396--- 2049---
2397** Rmail now displays 5-digit message ids in its summary buffer. 2050** Rmail now displays 5-digit message ids in its summary buffer.
@@ -2405,6 +2058,178 @@ and its version of `movemail' can be found in exec-path, it will be
2405used instead of the native one. 2058used instead of the native one.
2406 2059
2407--- 2060---
2061** MH-E changes.
2062
2063Upgraded to MH-E version 7.82. There have been major changes since
2064version 5.0.2; see MH-E-NEWS for details.
2065
2066+++
2067** There is a new calendar package, icalendar.el, that can be used to
2068convert Emacs diary entries to/from the iCalendar format.
2069
2070+++
2071** Diary sexp entries can have custom marking in the calendar.
2072Diary sexp functions which only apply to certain days (such as
2073`diary-block' or `diary-cyclic') now take an optional parameter MARK,
2074which is the name of a face or a single-character string indicating
2075how to highlight the day in the calendar display. Specifying a
2076single-character string as @var{mark} places the character next to the
2077day in the calendar. Specifying a face highlights the day with that
2078face. This lets you have different colors or markings for vacations,
2079appointments, paydays or anything else using a sexp.
2080
2081+++
2082** The new function `calendar-goto-day-of-year' (g D) prompts for a
2083year and day number, and moves to that date. Negative day numbers
2084count backward from the end of the year.
2085
2086+++
2087** The new Calendar function `calendar-goto-iso-week' (g w)
2088prompts for a year and a week number, and moves to the first
2089day of that ISO week.
2090
2091---
2092** The new variable `calendar-minimum-window-height' affects the
2093window generated by the function `generate-calendar-window'.
2094
2095---
2096** The functions `holiday-easter-etc' and `holiday-advent' now take
2097optional arguments, in order to only report on the specified holiday
2098rather than all. This makes customization of variables such as
2099`christian-holidays' simpler.
2100
2101---
2102** The function `simple-diary-display' now by default sets a header line.
2103This can be controlled through the variables `diary-header-line-flag'
2104and `diary-header-line-format'.
2105
2106+++
2107** The procedure for activating appointment reminders has changed: use
2108the new function `appt-activate'. The new variable
2109`appt-display-format' controls how reminders are displayed, replacing
2110appt-issue-message, appt-visible, and appt-msg-window.
2111
2112+++
2113** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
2114and `diary-from-outlook-rmail' can be used to import diary entries
2115from Outlook-format appointments in mail messages. The variable
2116`diary-outlook-formats' can be customized to recognize additional
2117formats.
2118
2119+++
2120** Emacs now supports drag and drop for X. Dropping a file on a window
2121 opens it, dropping text inserts the text. Dropping a file on a dired
2122 buffer copies or moves the file to that directory.
2123
2124+++
2125** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
2126The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
2127and `x-super-keysym' can be used to choose which keysyms Emacs should
2128use for the modifiers. For example, the following two lines swap
2129Meta and Alt:
2130 (setq x-alt-keysym 'meta)
2131 (setq x-meta-keysym 'alt)
2132
2133+++
2134** The X resource useXIM can be used to turn off use of XIM, which may
2135speed up Emacs with slow networking to the X server.
2136
2137If the configure option `--without-xim' was used to turn off use of
2138XIM by default, the X resource useXIM can be used to turn it on.
2139
2140---
2141** The new variable `x-select-request-type' controls how Emacs
2142requests X selection. The default value is nil, which means that
2143Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
2144and use the more appropriately result.
2145
2146---
2147** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
2148On the other hand, the size of the thumb does not represent the actual
2149amount of text shown any more (only a crude approximation of it).
2150
2151---
2152** The pop up menus for Lucid now stay up if you do a fast click and can
2153be navigated with the arrow keys (like Gtk+, Mac and W32).
2154
2155+++
2156** The Lucid menus can display multilingual text in your locale. You have
2157to explicitly specify a fontSet resource for this to work, for example
2158`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
2159
2160---
2161** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
2162ESC, like they do for Gtk+, Mac and W32.
2163
2164---
2165** Dialogs and menus pop down if you type C-g.
2166
2167---
2168** The menu item "Open File..." has been split into two items, "New File..."
2169and "Open File...". "Open File..." now opens only existing files. This is
2170to support existing GUI file selection dialogs better.
2171
2172+++
2173** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
2174disabled by customizing the variable `use-file-dialog'.
2175
2176+++
2177** For Gtk+ version 2.4, you can make Emacs use the old file dialog
2178by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use
2179the new dialog.
2180
2181---
2182** Emacs now responds to mouse-clicks on the mode-line, header-line and
2183display margin, when run in an xterm.
2184
2185** Improved key bindings support when running in an xterm.
2186When emacs is running in an xterm more key bindings are available. The
2187following should work:
2188{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
2189These key bindings work on xterm from X.org 6.8, they might not work on
2190some older versions of xterm, or on some proprietary versions.
2191
2192** Changes in support of colors on character terminals
2193
2194+++
2195*** The new command-line option --color=MODE lets you specify a standard
2196mode for a tty color support. It is meant to be used on character
2197terminals whose capabilities are not set correctly in the terminal
2198database, or with terminal emulators which support colors, but don't
2199set the TERM environment variable to a name of a color-capable
2200terminal. "emacs --color" uses the same color commands as GNU `ls'
2201when invoked with "ls --color", so if your terminal can support colors
2202in "ls --color", it will support "emacs --color" as well. See the
2203user manual for the possible values of the MODE parameter.
2204
2205---
2206*** Emacs now supports several character terminals which provide more
2207than 8 colors. For example, for `xterm', 16-color, 88-color, and
2208256-color modes are supported. Emacs automatically notes at startup
2209the extended number of colors, and defines the appropriate entries for
2210all of these colors.
2211
2212+++
2213*** Emacs now uses the full range of available colors for the default
2214faces when running on a color terminal, including 16-, 88-, and
2215256-color xterms. This means that when you run "emacs -nw" on an
221688-color or 256-color xterm, you will see essentially the same face
2217colors as on X.
2218
2219---
2220*** There's a new support for colors on `rxvt' terminal emulator.
2221
2222+++
2223** Passing resources on the command line now works on MS Windows.
2224You can use --xrm to pass resource settings to Emacs, overriding any
2225existing values. For example:
2226
2227 emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
2228
2229will start up Emacs on an initial frame of 100x20 with red background,
2230irrespective of geometry or background setting on the Windows registry.
2231
2232---
2408** On MS Windows, the "system caret" now follows the cursor. 2233** On MS Windows, the "system caret" now follows the cursor.
2409This enables Emacs to work better with programs that need to track 2234This enables Emacs to work better with programs that need to track
2410the cursor, for example screen magnifiers and text to speech programs. 2235the cursor, for example screen magnifiers and text to speech programs.
@@ -2457,40 +2282,126 @@ MS Windows, Emacs now uses the appropriate locale coding-system, so
2457the clipboard should work correctly for your local language without 2282the clipboard should work correctly for your local language without
2458any customizations. 2283any customizations.
2459 2284
2460+++ 2285---
2461** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). 2286** On Mac OS, the value of the variable `keyboard-coding-system' is
2462The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', 2287now dynamically changed according to the current keyboard script. The
2463and `x-super-keysym' can be used to choose which keysyms Emacs should 2288variable `mac-keyboard-text-encoding' and the constants
2464use for the modifiers. For example, the following two lines swap 2289`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
2465Meta and Alt: 2290`kTextEncodingISOLatin2' are obsolete.
2466 (setq x-alt-keysym 'meta)
2467 (setq x-meta-keysym 'alt)
2468 2291
2469+++ 2292---
2470** vc-annotate-mode enhancements 2293** sql changes.
2471 2294
2472In vc-annotate mode, you can now use the following key bindings for 2295*** The variable `sql-product' controls the highlightng of different
2473enhanced functionality to browse the annotations of past revisions, or 2296SQL dialects. This variable can be set globally via Customize, on a
2474to view diffs or log entries directly from vc-annotate-mode: 2297buffer-specific basis via local variable settings, or for the current
2298session using the new SQL->Product submenu. (This menu replaces the
2299SQL->Highlighting submenu.)
2475 2300
2476 P: annotates the previous revision 2301The following values are supported:
2477 N: annotates the next revision 2302
2478 J: annotates the revision at line 2303 ansi ANSI Standard (default)
2479 A: annotates the revision previous to line 2304 db2 DB2
2480 D: shows the diff of the revision at line with its previous revision 2305 informix Informix
2481 L: shows the log of the revision at line 2306 ingres Ingres
2482 W: annotates the workfile (most up to date) version 2307 interbase Interbase
2308 linter Linter
2309 ms Microsoft
2310 mysql MySQL
2311 oracle Oracle
2312 postgres Postgres
2313 solid Solid
2314 sqlite SQLite
2315 sybase Sybase
2316
2317The current product name will be shown on the mode line following the
2318SQL mode indicator.
2319
2320The technique of setting `sql-mode-font-lock-defaults' directly in
2321your .emacs will no longer establish the default highlighting -- Use
2322`sql-product' to accomplish this.
2323
2324ANSI keywords are always highlighted.
2325
2326*** The function `sql-add-product-keywords' can be used to add
2327font-lock rules to the product specific rules. For example, to have
2328all identifiers ending in "_t" under MS SQLServer treated as a type,
2329you would use the following line in your .emacs file:
2330
2331 (sql-add-product-keywords 'ms
2332 '(("\\<\\w+_t\\>" . font-lock-type-face)))
2333
2334*** Oracle support includes keyword highlighting for Oracle 9i. Most
2335SQL and PL/SQL keywords are implemented. SQL*Plus commands are
2336highlighted in `font-lock-doc-face'.
2337
2338*** Microsoft SQLServer support has been significantly improved.
2339Keyword highlighting for SqlServer 2000 is implemented.
2340sql-interactive-mode defaults to use osql, rather than isql, because
2341osql flushes its error stream more frequently. Thus error messages
2342are displayed when they occur rather than when the session is
2343terminated.
2344
2345If the username and password are not provided to `sql-ms', osql is
2346called with the -E command line argument to use the operating system
2347credentials to authenticate the user.
2348
2349*** Postgres support is enhanced.
2350Keyword highlighting of Postgres 7.3 is implemented. Prompting for
2351the username and the pgsql `-U' option is added.
2352
2353*** MySQL support is enhanced.
2354Keyword higlighting of MySql 4.0 is implemented.
2355
2356*** Imenu support has been enhanced to locate tables, views, indexes,
2357packages, procedures, functions, triggers, sequences, rules, and
2358defaults.
2359
2360*** Added SQL->Start SQLi Session menu entry which calls the
2361appropriate sql-interactive-mode wrapper for the current setting of
2362`sql-product'.
2363
2364---
2365*** Support for the SQLite interpreter has been added to sql.el by calling
2366'sql-sqlite'.
2367
2368---
2369** M-x view-file and commands that use it now avoid interfering
2370with special modes such as Tar mode.
2483 2371
2484+++ 2372+++
2485** In pcl-cvs mode, there is a new `d y' command to view the diffs 2373** Filesets are collections of files. You can define a fileset in
2486between the local version of the file and yesterday's head revision 2374various ways, such as based on a directory tree or based on
2487in the repository. 2375program files that include other program files.
2376
2377Once you have defined a fileset, you can perform various operations on
2378all the files in it, such as visiting them or searching and replacing
2379in them.
2380
2381---
2382** Commands winner-redo and winner-undo, from winner.el, are now bound to
2383C-c <left> and C-c <right>, respectively. This is an incompatible change.
2384
2385** FFAP
2488 2386
2489+++ 2387+++
2490** In pcl-cvs mode, there is a new `d r' command to view the changes 2388*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
2491anyone has committed to the repository since you last executed 2389C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
2492"checkout", "update" or "commit". That means using cvs diff options 2390C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
2493-rBASE -rHEAD. 2391C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
2392
2393---
2394*** FFAP accepts wildcards in a file name by default. C-x C-f passes
2395it to `find-file' with non-nil WILDCARDS argument, which visits
2396multiple files, and C-x d passes it to `dired'.
2397
2398---
2399** skeleton.el now supports using - to mark the skeleton-point without
2400 interregion interaction. @ has reverted to only setting
2401 skeleton-positions and no longer sets skeleton-point. Skeletons
2402 which used @ to mark skeleton-point independent of _ should now use -
2403 instead. The updated skeleton-insert docstring explains these new
2404 features along with other details of skeleton construction.
2494 2405
2495--- 2406---
2496** New variable `hs-set-up-overlay' allows customization of the overlay 2407** New variable `hs-set-up-overlay' allows customization of the overlay
@@ -2499,83 +2410,115 @@ handles the overlay property `display' specially, preserving it during
2499temporary overlay showing in the course of an isearch operation. 2410temporary overlay showing in the course of an isearch operation.
2500 2411
2501+++ 2412+++
2502** New command `recode-region' decodes the region again by a specified 2413** hide-ifdef-mode now uses overlays rather than selective-display
2503coding system. 2414to hide its text. This should be mostly transparent but slightly
2415changes the behavior of motion commands like C-e and C-p.
2504 2416
2505--- 2417---
2506** On Mac OS, the value of the variable `keyboard-coding-system' is 2418** partial-completion-mode now does partial completion on directory names.
2507now dynamically changed according to the current keyboard script. The
2508variable `mac-keyboard-text-encoding' and the constants
2509`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
2510`kTextEncodingISOLatin2' are obsolete.
2511
2512* New modes and packages in Emacs 22.1
2513 2419
2514+++ 2420---
2515** The new package longlines.el provides a minor mode for editing text 2421** The type-break package now allows `type-break-file-name' to be nil
2516files composed of long lines, based on the `use-hard-newlines' 2422and if so, doesn't store any data across sessions. This is handy if
2517mechanism. The long lines are broken up by inserting soft newlines, 2423you don't want the .type-break file in your home directory or are
2518which are automatically removed when saving the file to disk or 2424annoyed by the need for interaction when you kill Emacs.
2519copying into the kill ring, clipboard, etc. By default, Longlines
2520mode inserts soft newlines automatically during editing, a behavior
2521referred to as "soft word wrap" in other text editors. This is
2522similar to Refill mode, but more reliable. To turn the word wrap
2523feature off, set `longlines-auto-wrap' to nil.
2524 2425
2525+++ 2426---
2526** The new package conf-mode.el handles thousands of configuration files, with 2427** `ps-print' can now print characters from the mule-unicode charsets.
2527varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
2528var : value, var value or keyword var value) and sections ([section] or
2529section { }). Many files under /etc/, or with suffixes like .cf through
2530.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
2531recognized.
2532 2428
2533+++ 2429Printing text with characters from the mule-unicode-* sets works with
2534** The new package dns-mode.el add syntax highlight of DNS master files. 2430ps-print, provided that you have installed the appropriate BDF fonts.
2535The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used 2431See the file INSTALL for URLs where you can find these fonts.
2536to increment the SOA serial.
2537 2432
2538+++ 2433---
2539** The new package flymake.el does on-the-fly syntax checking of program 2434** New command `strokes-global-set-stroke-string'.
2540source files. See the Flymake's Info manual for more details. 2435This is like `strokes-global-set-stroke', but it allows you to bind
2436the stroke directly to a string to insert. This is convenient for
2437using strokes as an input method.
2541 2438
2542--- 2439---
2543** The library tree-widget.el provides a new widget to display a set 2440** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
2544of hierarchical data as an outline. For example, the tree-widget is
2545well suited to display a hierarchy of directories and files.
2546 2441
2547+++ 2442+++
2548** The wdired.el package allows you to use normal editing commands on Dired 2443** You can now disable pc-selection-mode after enabling it.
2549buffers to change filenames, permissions, etc... 2444M-x pc-selection-mode behaves like a proper minor mode, and with no
2445argument it toggles the mode.
2550 2446
2551+++ 2447Turning off PC-Selection mode restores the global key bindings
2552** The thumbs.el package allows you to preview image files as thumbnails 2448that were replaced by turning on the mode.
2553and can be invoked from a Dired buffer.
2554 2449
2555+++ 2450---
2556** Image files are normally visited in Image mode, which lets you toggle 2451** `uniquify-strip-common-suffix' tells uniquify to prefer
2557between viewing the image and viewing the text using C-c C-c. 2452`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
2558 2453
2559+++ 2454---
2560** The new python.el package is used to edit Python and Jython programs. 2455** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
2561 2456
2562--- 2457---
2563** The URL package (which had been part of W3) is now part of Emacs. 2458** Support for `magic cookie' standout modes has been removed.
2459Emacs will still work on terminals that require magic cookies in order
2460to use standout mode, however they will not be able to display
2461mode-lines in inverse-video.
2462
2463---
2464** The game `mpuz' is enhanced.
2465
2466`mpuz' now allows the 2nd factor not to have two identical digits. By
2467default, all trivial operations involving whole lines are performed
2468automatically. The game uses faces for better visual feedback.
2469
2470---
2471** display-battery has been replaced by display-battery-mode.
2472
2473---
2474** calculator.el now has radix grouping mode, which is available when
2475`calculator-output-radix' is non-nil. In this mode a separator
2476character is used every few digits, making it easier to see byte
2477boundries etc. For more info, see the documentation of the variable
2478`calculator-radix-grouping-mode'.
2479
2480---
2481** global-whitespace-mode is a new alias for whitespace-global-mode.
2564 2482
2565+++ 2483+++
2566** The new global minor mode `size-indication-mode' (off by default) 2484** The command `list-text-properties-at' has been deleted because
2567shows the size of accessible part of the buffer on the mode line. 2485C-u C-x = gives the same information and more.
2568 2486
2569--- 2487---
2570** GDB-Script-mode is used for files like .gdbinit. 2488** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
2571 2489
2572--- 2490---
2573** Ido mode is now part of the Emacs distribution. 2491** iso-acc.el is now obsolete. Use one of the latin input methods instead.
2574 2492
2575The ido (interactively do) package is an extension of the iswitchb 2493---
2576package to do interactive opening of files and directories in addition 2494** cplus-md.el has been removed to avoid problems with Custom.
2577to interactive buffer switching. Ido is a superset of iswitchb (with 2495
2578a few exceptions), so don't enable both packages. 2496
2497* New modes and packages in Emacs 22.1
2498
2499+++
2500** New package benchmark.el contains simple support for convenient
2501timing measurements of code (including the garbage collection component).
2502
2503+++
2504** Calc is now part of the Emacs distribution.
2505
2506Calc is an advanced desk calculator and mathematical tool written in
2507Emacs Lisp. Its documentation is in a separate manual; within Emacs,
2508type "C-h i m calc RET" to read that manual. A reference card is
2509available in `etc/calccard.tex' and `etc/calccard.ps'.
2510
2511---
2512** `cfengine-mode' is a major mode for editing GNU Cfengine
2513configuration files.
2514
2515+++
2516** The new package conf-mode.el handles thousands of configuration files, with
2517varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
2518var : value, var value or keyword var value) and sections ([section] or
2519section { }). Many files under /etc/, or with suffixes like .cf through
2520.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
2521recognized.
2579 2522
2580--- 2523---
2581** CUA mode is now part of the Emacs distribution. 2524** CUA mode is now part of the Emacs distribution.
@@ -2623,6 +2566,55 @@ must remove older versions of cua.el or cua-mode.el as well as the
2623loading and customization of those packages from the .emacs file. 2566loading and customization of those packages from the .emacs file.
2624 2567
2625+++ 2568+++
2569** The new package dns-mode.el add syntax highlight of DNS master files.
2570The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
2571to increment the SOA serial.
2572
2573---
2574** The new global minor mode `file-name-shadow-mode' modifies the way
2575filenames being entered by the user in the minibuffer are displayed, so
2576that it's clear when part of the entered filename will be ignored due to
2577emacs' filename parsing rules. The ignored portion can be made dim,
2578invisible, or otherwise less visually noticable. The display method may
2579be displayed by customizing the variable `file-name-shadow-properties'.
2580
2581+++
2582** The new package flymake.el does on-the-fly syntax checking of program
2583source files. See the Flymake's Info manual for more details.
2584
2585---
2586** The new Lisp library fringe.el controls the appearance of fringes.
2587
2588---
2589** GDB-Script-mode is used for files like .gdbinit.
2590
2591+++
2592** The new package gdb-ui.el provides an enhanced graphical interface to
2593GDB. You can interact with GDB through the GUD buffer in the usual way, but
2594there are also further buffers which control the execution and describe the
2595state of your program. It separates the input/output of your program from
2596that of GDB and watches expressions in the speedbar. It also uses features of
2597Emacs 21 such as the display margin for breakpoints, and the toolbar.
2598
2599Use M-x gdba to start GDB-UI.
2600
2601---
2602** The new package ibuffer provides a powerful, completely
2603customizable replacement for buff-menu.el.
2604
2605---
2606** Ido mode is now part of the Emacs distribution.
2607
2608The ido (interactively do) package is an extension of the iswitchb
2609package to do interactive opening of files and directories in addition
2610to interactive buffer switching. Ido is a superset of iswitchb (with
2611a few exceptions), so don't enable both packages.
2612
2613+++
2614** Image files are normally visited in Image mode, which lets you toggle
2615between viewing the image and viewing the text using C-c C-c.
2616
2617+++
2626** The new keypad setup package provides several common bindings for 2618** The new keypad setup package provides several common bindings for
2627the numeric keypad which is available on most keyboards. The numeric 2619the numeric keypad which is available on most keyboards. The numeric
2628keypad typically has the digits 0 to 9, a decimal point, keys marked 2620keypad typically has the digits 0 to 9, a decimal point, keys marked
@@ -2681,6 +2673,17 @@ Keyboard macros can now be debugged and edited interactively.
2681C-x C-k SPC steps through the last keyboard macro one key sequence 2673C-x C-k SPC steps through the last keyboard macro one key sequence
2682at a time, prompting for the actions to take. 2674at a time, prompting for the actions to take.
2683 2675
2676+++
2677** The new package longlines.el provides a minor mode for editing text
2678files composed of long lines, based on the `use-hard-newlines'
2679mechanism. The long lines are broken up by inserting soft newlines,
2680which are automatically removed when saving the file to disk or
2681copying into the kill ring, clipboard, etc. By default, Longlines
2682mode inserts soft newlines automatically during editing, a behavior
2683referred to as "soft word wrap" in other text editors. This is
2684similar to Refill mode, but more reliable. To turn the word wrap
2685feature off, set `longlines-auto-wrap' to nil.
2686
2684--- 2687---
2685** The old Octave mode bindings C-c f and C-c i have been changed 2688** The old Octave mode bindings C-c f and C-c i have been changed
2686to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate 2689to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
@@ -2697,12 +2700,43 @@ printer) or send directly to printer a PostScript code generated by
2697`ps-print' package. Use M-x pr-help for more information. 2700`ps-print' package. Use M-x pr-help for more information.
2698 2701
2699+++ 2702+++
2700** Calc is now part of the Emacs distribution. 2703** The new python.el package is used to edit Python and Jython programs.
2701 2704
2702Calc is an advanced desk calculator and mathematical tool written in 2705---
2703Emacs Lisp. Its documentation is in a separate manual; within Emacs, 2706** The minor mode Reveal mode makes text visible on the fly as you
2704type "C-h i m calc RET" to read that manual. A reference card is 2707move your cursor into hidden regions of the buffer.
2705available in `etc/calccard.tex' and `etc/calccard.ps'. 2708It should work with any package that uses overlays to hide parts
2709of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
2710
2711There is also Global Reveal mode which affects all buffers.
2712
2713---
2714** The ruler-mode.el library provides a minor mode for displaying an
2715"active" ruler in the header line. You can use the mouse to visually
2716change the `fill-column', `window-margins' and `tab-stop-list'
2717settings.
2718
2719+++
2720** SES mode (ses-mode) is a new major mode for creating and editing
2721spreadsheet files. Besides the usual Emacs features (intuitive command
2722letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
2723viral immunity and import/export of tab-separated values.
2724
2725+++
2726** The new global minor mode `size-indication-mode' (off by default)
2727shows the size of accessible part of the buffer on the mode line.
2728
2729+++
2730** The new package table.el implements editable, WYSIWYG, embedded
2731`text tables' in Emacs buffers. It simulates the effect of putting
2732these tables in a special major mode. The package emulates WYSIWYG
2733table editing available in modern word processors. The package also
2734can generate a table source in typesetting and markup languages such
2735as latex and html from the visually laid out text table.
2736
2737+++
2738** The thumbs.el package allows you to preview image files as thumbnails
2739and can be invoked from a Dired buffer.
2706 2740
2707+++ 2741+++
2708** Tramp is now part of the distribution. 2742** Tramp is now part of the distribution.
@@ -2725,64 +2759,22 @@ If you want to disable Tramp you should set
2725 (setq tramp-default-method "ftp") 2759 (setq tramp-default-method "ftp")
2726 2760
2727--- 2761---
2728** The new global minor mode `file-name-shadow-mode' modifies the way 2762** The library tree-widget.el provides a new widget to display a set
2729filenames being entered by the user in the minibuffer are displayed, so 2763of hierarchical data as an outline. For example, the tree-widget is
2730that it's clear when part of the entered filename will be ignored due to 2764well suited to display a hierarchy of directories and files.
2731emacs' filename parsing rules. The ignored portion can be made dim,
2732invisible, or otherwise less visually noticable. The display method may
2733be displayed by customizing the variable `file-name-shadow-properties'.
2734
2735---
2736** The ruler-mode.el library provides a minor mode for displaying an
2737"active" ruler in the header line. You can use the mouse to visually
2738change the `fill-column', `window-margins' and `tab-stop-list'
2739settings.
2740
2741---
2742** The minor mode Reveal mode makes text visible on the fly as you
2743move your cursor into hidden regions of the buffer.
2744It should work with any package that uses overlays to hide parts
2745of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
2746
2747There is also Global Reveal mode which affects all buffers.
2748
2749---
2750** The new package ibuffer provides a powerful, completely
2751customizable replacement for buff-menu.el.
2752
2753+++
2754** The new package table.el implements editable, WYSIWYG, embedded
2755`text tables' in Emacs buffers. It simulates the effect of putting
2756these tables in a special major mode. The package emulates WYSIWYG
2757table editing available in modern word processors. The package also
2758can generate a table source in typesetting and markup languages such
2759as latex and html from the visually laid out text table.
2760
2761+++
2762** SES mode (ses-mode) is a new major mode for creating and editing
2763spreadsheet files. Besides the usual Emacs features (intuitive command
2764letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
2765viral immunity and import/export of tab-separated values.
2766 2765
2767--- 2766---
2768** Support for `magic cookie' standout modes has been removed. 2767** The URL package (which had been part of W3) is now part of Emacs.
2769Emacs will still work on terminals that require magic cookies in order
2770to use standout mode, however they will not be able to display
2771mode-lines in inverse-video.
2772 2768
2773--- 2769---
2774** cplus-md.el has been removed to avoid problems with Custom. 2770** New minor mode, Visible mode, toggles invisibility in the current buffer.
2771When enabled, it makes all invisible text visible. When disabled, it
2772restores the previous value of `buffer-invisibility-spec'.
2775 2773
2776+++ 2774+++
2777** New package benchmark.el contains simple support for convenient 2775** The wdired.el package allows you to use normal editing commands on Dired
2778timing measurements of code (including the garbage collection component). 2776buffers to change filenames, permissions, etc...
2779
2780---
2781** The new Lisp library fringe.el controls the appearance of fringes.
2782 2777
2783---
2784** `cfengine-mode' is a major mode for editing GNU Cfengine
2785configuration files.
2786 2778
2787* Incompatible Lisp Changes in Emacs 22.1 2779* Incompatible Lisp Changes in Emacs 22.1
2788 2780
@@ -2804,155 +2796,131 @@ the command `undefined'. (In earlier Emacs versions, it used
2804 2796
2805* Lisp Changes in Emacs 22.1 2797* Lisp Changes in Emacs 22.1
2806 2798
2807** New functions, macros, and commands
2808
2809+++
2810*** The new function `filter-buffer-substring' extracts a buffer
2811substring, passes it through a set of filter functions, and returns
2812the filtered substring. It is used instead of `buffer-substring' or
2813`delete-and-extract-region' when copying text into a user-accessible
2814data structure, like the kill-ring, X clipboard, or a register. The
2815list of filter function is specified by the new variable
2816`buffer-substring-filters'. For example, Longlines mode uses
2817`buffer-substring-filters' to remove soft newlines from the copied
2818text.
2819
2820+++ 2799+++
2821*** (while-no-input BODY...) runs BODY, but only so long as no input 2800** The option --script FILE runs Emacs in batch mode and loads FILE.
2822arrives. If the user types or clicks anything, BODY stops as if a 2801It is useful for writing Emacs Lisp shell script files, because they
2823quit had occurred. while-no-input returns the value of BODY, if BODY 2802can start with this line:
2824finishes. It returns nil if BODY was aborted.
2825 2803
2826+++ 2804 #!/usr/bin/emacs --script
2827*** New function `looking-back' checks whether a regular expression matches
2828the text before point. Specifying the LIMIT argument bounds how far
2829back the match can start; this is a way to keep it from taking too long.
2830 2805
2831+++ 2806+++
2832*** New functions `make-progress-reporter', `progress-reporter-update', 2807** The option --directory DIR now modifies `load-path' immediately.
2833`progress-reporter-force-update', `progress-reporter-done', and 2808Directories are added to the front of `load-path' in the order they
2834`dotimes-with-progress-reporter' provide a simple and efficient way for 2809appear on the command line. For example, with this command line:
2835a command to present progress messages for the user.
2836 2810
2837+++ 2811 emacs -batch -L .. -L /tmp --eval "(require 'foo)"
2838*** The new primitive `get-internal-run-time' returns the processor
2839run time used by Emacs since start-up.
2840 2812
2841+++ 2813Emacs looks for library `foo' in the parent directory, then in /tmp, then
2842*** The new function `called-interactively-p' does what many people 2814in the other directories in `load-path'. (-L is short for --directory.)
2843have mistakenly believed `interactive-p' did: it returns t if the
2844calling function was called through `call-interactively'. This should
2845only be used when you cannot add a new "interactive" argument to the
2846command.
2847 2815
2848+++ 2816+++
2849*** The new function `assoc-string' replaces `assoc-ignore-case' and 2817** The default value of `sentence-end' is now defined using the new
2850`assoc-ignore-representation', which are still available, but have 2818variable `sentence-end-without-space', which contains such characters
2851been declared obsolete. 2819that end a sentence without following spaces.
2852
2853---
2854*** New function quail-find-key returns a list of keys to type in the
2855current input method to input a character.
2856 2820
2857+++ 2821The function `sentence-end' should be used to obtain the value of the
2858*** New functions posn-at-point and posn-at-x-y return 2822variable `sentence-end'. If the variable `sentence-end' is nil, then
2859click-event-style position information for a given visible buffer 2823this function returns the regexp constructed from the variables
2860position or for a given window pixel coordinate. 2824`sentence-end-without-period', `sentence-end-double-space' and
2825`sentence-end-without-space'.
2861 2826
2862+++ 2827+++
2863*** The new primitive `set-file-times' sets a file's access and 2828** The argument to forward-word, backward-word, forward-to-indentation
2864modification times. Magic file name handlers can handle this 2829and backward-to-indentation is now optional, and defaults to 1.
2865operation.
2866 2830
2867+++ 2831+++
2868*** The new function syntax-after returns the syntax code 2832** If a command sets transient-mark-mode to `only', that
2869of the character after a specified buffer position, taking account 2833enables Transient Mark mode for the following command only.
2870of text properties as well as the character code. 2834During that following command, the value of transient-mark-mode
2835is `identity'. If it is still `identity' at the end of the command,
2836it changes to nil.
2871 2837
2872+++ 2838+++
2873*** `syntax-class' extracts the class of a syntax code (as returned 2839** The new hook `before-save-hook' is invoked by `basic-save-buffer'
2874by syntax-after). 2840before saving buffers. This allows packages to perform various final
2841tasks, for example; it can be used by the copyright package to make
2842sure saved files have the current year in any copyright headers.
2875 2843
2876+++ 2844+++
2877*** New function `line-number-at-pos' returns line number of current 2845** If a buffer sets buffer-save-without-query to non-nil,
2878line in current buffer, or if optional buffer position is given, line 2846save-some-buffers will always save that buffer without asking
2879number of corresponding line in current buffer. 2847(if it's modified).
2880 2848
2881+++ 2849---
2882*** New function `macroexpand-all' expands all macros in a form. 2850** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
2883It is similar to the Common-Lisp function of the same name. 2851If it is non-nil, it specifies which buffers to list.
2884One difference is that it guarantees to return the original argument
2885if no expansion is done, which may be tested using `eq'.
2886 2852
2887+++ 2853+++
2888*** New macro with-local-quit temporarily sets inhibit-quit to nil for use 2854** The kill-buffer-hook is now permanent-local.
2889around potentially blocking or long-running code in timers
2890and post-command-hooks.
2891 2855
2892+++ 2856+++
2893*** The new function `rassq-delete-all' deletes all elements from an 2857** `auto-save-file-format' has been renamed to
2894alist whose cdr is `eq' to a specified value. 2858`buffer-auto-save-file-format' and made into a permanent local.
2895 2859
2896+++ 2860+++
2897*** New macros define-obsolete-variable-alias to combine defvaralias and 2861** Functions `file-name-sans-extension' and `file-name-extension' now
2898make-obsolete-variable and define-obsolete-function-alias to combine defalias 2862ignore the leading dots in file names, so that file names such as
2899and make-obsolete. 2863`.emacs' are treated as extensionless.
2900 2864
2901+++ 2865+++
2902** copy-file now takes an additional option arg MUSTBENEW. 2866** copy-file now takes an additional option arg MUSTBENEW.
2903 2867
2904This argument works like the MUSTBENEW argument of write-file. 2868This argument works like the MUSTBENEW argument of write-file.
2905 2869
2906---
2907** easy-mmode-define-global-mode has been renamed to
2908define-global-minor-mode. The old name remains as an alias.
2909
2910+++ 2870+++
2911** An element of buffer-undo-list can now have the form (apply FUNNAME 2871** If the second argument to `copy-file' is the name of a directory,
2912. ARGS), where FUNNAME is a symbol other than t or nil. That stands 2872the file is copied to that directory instead of signaling an error.
2913for a high-level change that should be undone by evaluating (apply
2914FUNNAME ARGS).
2915 2873
2916These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) 2874+++
2917which indicates that the change which took place was limited to the 2875** `visited-file-modtime' and `calendar-time-from-absolute' now return
2918range BEG...END and increased the buffer size by DELTA. 2876a list of two integers, instead of a cons.
2919 2877
2920+++ 2878+++
2921** The line-move, scroll-up, and scroll-down functions will now 2879** `file-chase-links' now takes an optional second argument LIMIT which
2922modify the window vscroll to scroll through display rows that are 2880specifies the maximum number of links to chase through. If after that
2923taller that the height of the window, for example in the presense of 2881many iterations the file name obtained is still a symbolic link,
2924large images. To disable this feature, Lisp code may bind the new 2882`file-chase-links' returns it anyway.
2925variable `auto-window-vscroll' to nil.
2926 2883
2927+++ 2884+++
2928** If a buffer sets buffer-save-without-query to non-nil, 2885** The function `commandp' takes an additional optional
2929save-some-buffers will always save that buffer without asking 2886argument. If it is non-nil, then `commandp' checks
2930(if it's modified). 2887for a function that could be called with `call-interactively',
2888and does not return t for keyboard macros.
2931 2889
2932+++ 2890+++
2933** The function symbol-file tells you which file defined 2891** An interactive specification may now use the code letter 'U' to get
2934a certain function or variable. 2892the up-event that was discarded in case the last key sequence read for a
2893previous 'k' or 'K' argument was a down-event; otherwise nil is used.
2894
2895---
2896** Functions y-or-n-p, read-char, read-key-sequence and the like, that
2897display a prompt but don't use the minibuffer, now display the prompt
2898using the text properties (esp. the face) of the prompt string.
2935 2899
2936+++ 2900+++
2937** Lisp code can now test if a given buffer position is inside a 2901** read-from-minibuffer now accepts an additional argument KEEP-ALL
2938clickable link with the new function `mouse-on-link-p'. This is the 2902saying to put all inputs in the history list, even empty ones.
2939function used by the new `mouse-1-click-follows-link' functionality.
2940 2903
2941+++ 2904+++
2942** `set-auto-mode' now gives the interpreter magic line (if present) 2905** The `read-file-name' function now takes an additional argument which
2943precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration 2906specifies a predicate which the file name read must satify. The
2944will give the buffer XML or SGML mode, based on the new var 2907new variable `read-file-name-predicate' contains the predicate argument
2945`magic-mode-alist'. 2908while reading the file name from the minibuffer; the predicate in this
2909variable is used by read-file-name-internal to filter the completion list.
2946 2910
2947--- 2911---
2948** To manipulate the File menu using easy-menu, you must specify the 2912** The new variable `read-file-name-function' can be used by lisp code
2949proper name "file". In previous Emacs versions, you had to specify 2913to override the internal read-file-name function.
2950"files", even though the menu item itself was changed to say "File"
2951several versions ago.
2952 2914
2953+++ 2915+++
2954** read-from-minibuffer now accepts an additional argument KEEP-ALL 2916** The new variable `read-file-name-completion-ignore-case' specifies
2955saying to put all inputs in the history list, even empty ones. 2917whether completion ignores case when reading a file name with the
2918`read-file-name' function.
2919
2920+++
2921** The new function `read-directory-name' can be used instead of
2922`read-file-name' to read a directory name; when used, completion
2923will only show directories.
2956 2924
2957+++ 2925+++
2958** The new variable search-spaces-regexp controls how to search 2926** The new variable search-spaces-regexp controls how to search
@@ -2963,77 +2931,447 @@ expression. If it is nil, spaces stand for themselves.
2963Spaces inside of constructs such as [..] and *, +, ? are never 2931Spaces inside of constructs such as [..] and *, +, ? are never
2964replaced with search-spaces-regexp. 2932replaced with search-spaces-regexp.
2965 2933
2966--- 2934+++
2967** list-buffers-noselect now takes an additional argument, BUFFER-LIST. 2935** There are now two new regular expression operators, \_< and \_>,
2968If it is non-nil, it specifies which buffers to list. 2936for matching the beginning and end of a symbol. A symbol is a
2937non-empty sequence of either word or symbol constituent characters, as
2938specified by the syntax table.
2939
2940+++
2941** skip-chars-forward and skip-chars-backward now handle
2942character classes such as [:alpha:], along with individual characters
2943and ranges.
2969 2944
2970--- 2945---
2971** set-buffer-file-coding-system now takes an additional argument, 2946** In `replace-match', the replacement text no longer inherits
2972NOMODIFY. If it is non-nil, it means don't mark the buffer modified. 2947properties from surrounding text.
2973 2948
2974+++ 2949+++
2975** An interactive specification may now use the code letter 'U' to get 2950** The list returned by `(match-data t)' now has the buffer as a final
2976the up-event that was discarded in case the last key sequence read for a 2951element, if the last match was on a buffer. `set-match-data'
2977previous 'k' or 'K' argument was a down-event; otherwise nil is used. 2952accepts such a list for restoring the match state.
2978 2953
2979+++ 2954+++
2980** Function `translate-region' accepts also a char-table as TABLE 2955** Variable aliases have been implemented:
2981argument. 2956
2957*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
2958
2959This function defines the symbol ALIAS-VAR as a variable alias for
2960symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
2961returns the value of BASE-VAR, and changing the value of ALIAS-VAR
2962changes the value of BASE-VAR.
2963
2964DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
2965the same documentation as BASE-VAR.
2966
2967*** indirect-variable VARIABLE
2968
2969This function returns the variable at the end of the chain of aliases
2970of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
2971defined as an alias, the function returns VARIABLE.
2972
2973It might be noteworthy that variables aliases work for all kinds of
2974variables, including buffer-local and frame-local variables.
2982 2975
2983+++ 2976+++
2984** Major mode functions now run the new normal hook 2977*** The macro define-obsolete-variable-alias combines defvaralias and
2985`after-change-major-mode-hook', at their very end, after the mode hooks. 2978make-obsolete-variable. The macro define-obsolete-function-alias
2979combines defalias and make-obsolete.
2986 2980
2987+++ 2981+++
2988** `auto-save-file-format' has been renamed to 2982** Enhancements to keymaps.
2989`buffer-auto-save-file-format' and made into a permanent local. 2983
2984*** Cleaner way to enter key sequences.
2985
2986You can enter a constant key sequence in a more natural format, the
2987same one used for saving keyboard macros, using the macro `kbd'. For
2988example,
2989
2990(kbd "C-x C-f") => "\^x\^f"
2991
2992*** Interactive commands can be remapped through keymaps.
2993
2994This is an alternative to using defadvice or substitute-key-definition
2995to modify the behavior of a key binding using the normal keymap
2996binding and lookup functionality.
2997
2998When a key sequence is bound to a command, and that command is
2999remapped to another command, that command is run instead of the
3000original command.
3001
3002Example:
3003Suppose that minor mode my-mode has defined the commands
3004my-kill-line and my-kill-word, and it wants C-k (and any other key
3005bound to kill-line) to run the command my-kill-line instead of
3006kill-line, and likewise it wants to run my-kill-word instead of
3007kill-word.
3008
3009Instead of rebinding C-k and the other keys in the minor mode map,
3010command remapping allows you to directly map kill-line into
3011my-kill-line and kill-word into my-kill-word through the minor mode
3012map using define-key:
3013
3014 (define-key my-mode-map [remap kill-line] 'my-kill-line)
3015 (define-key my-mode-map [remap kill-word] 'my-kill-word)
3016
3017Now, when my-mode is enabled, and the user enters C-k or M-d,
3018the commands my-kill-line and my-kill-word are run.
3019
3020Notice that only one level of remapping is supported. In the above
3021example, this means that if my-kill-line is remapped to other-kill,
3022then C-k still runs my-kill-line.
3023
3024The following changes have been made to provide command remapping:
3025
3026- Command remappings are defined using `define-key' with a prefix-key
3027 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
3028 to definition DEF in keymap MAP. The definition is not limited to
3029 another command; it can be anything accepted for a normal binding.
3030
3031- The new function `command-remapping' returns the binding for a
3032 remapped command in the current keymaps, or nil if not remapped.
3033
3034- key-binding now remaps interactive commands unless the optional
3035 third argument NO-REMAP is non-nil.
3036
3037- where-is-internal now returns nil for a remapped command (e.g.
3038 kill-line if my-mode is enabled), and the actual key binding for
3039 the command it is remapped to (e.g. C-k for my-kill-line).
3040 It also has a new optional fifth argument, NO-REMAP, which inhibits
3041 remapping if non-nil (e.g. it returns C-k for kill-line and
3042 <kill-line> for my-kill-line).
3043
3044- The new variable `this-original-command' contains the original
3045 command before remapping. It is equal to `this-command' when the
3046 command was not remapped.
3047
3048*** If text has a `keymap' property, that keymap takes precedence
3049over minor mode keymaps.
3050
3051*** The `keymap' property now also works at the ends of overlays and
3052text-properties, according to their stickiness. This also means that it
3053works with empty overlays. The same hold for the `local-map' property.
3054
3055*** Dense keymaps now handle inheritance correctly.
3056Previously a dense keymap would hide all of the simple-char key
3057bindings of the parent keymap.
3058
3059*** `define-key-after' now accepts keys longer than 1.
3060
3061*** New function `current-active-maps' returns a list of currently
3062active keymaps.
3063
3064*** New function `describe-buffer-bindings' inserts the list of all
3065defined keys and their definitions.
3066
3067*** New function `keymap-prompt' returns the prompt-string of a keymap
3068
3069*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
3070in the keymap.
3071
3072*** New variable emulation-mode-map-alists.
3073
3074Lisp packages using many minor mode keymaps can now maintain their own
3075keymap alist separate from minor-mode-map-alist by adding their keymap
3076alist to this list.
2990 3077
2991+++ 3078+++
2992** Both the variable and the function `disabled-command-hook' have 3079** Atomic change groups.
2993been renamed to `disabled-command-function'. The variable 3080
2994`disabled-command-hook' has been kept as an obsolete alias. 3081To perform some changes in the current buffer "atomically" so that
3082they either all succeed or are all undone, use `atomic-change-group'
3083around the code that makes changes. For instance:
3084
3085 (atomic-change-group
3086 (insert foo)
3087 (delete-region x y))
3088
3089If an error (or other nonlocal exit) occurs inside the body of
3090`atomic-change-group', it unmakes all the changes in that buffer that
3091were during the execution of the body. The change group has no effect
3092on any other buffers--any such changes remain.
3093
3094If you need something more sophisticated, you can directly call the
3095lower-level functions that `atomic-change-group' uses. Here is how.
3096
3097To set up a change group for one buffer, call `prepare-change-group'.
3098Specify the buffer as argument; it defaults to the current buffer.
3099This function returns a "handle" for the change group. You must save
3100the handle to activate the change group and then finish it.
3101
3102Before you change the buffer again, you must activate the change
3103group. Pass the handle to `activate-change-group' afterward to
3104do this.
3105
3106After you make the changes, you must finish the change group. You can
3107either accept the changes or cancel them all. Call
3108`accept-change-group' to accept the changes in the group as final;
3109call `cancel-change-group' to undo them all.
3110
3111You should use `unwind-protect' to make sure the group is always
3112finished. The call to `activate-change-group' should be inside the
3113`unwind-protect', in case the user types C-g just after it runs.
3114(This is one reason why `prepare-change-group' and
3115`activate-change-group' are separate functions.) Once you finish the
3116group, don't use the handle again--don't try to finish the same group
3117twice.
3118
3119To make a multibuffer change group, call `prepare-change-group' once
3120for each buffer you want to cover, then use `nconc' to combine the
3121returned values, like this:
3122
3123 (nconc (prepare-change-group buffer-1)
3124 (prepare-change-group buffer-2))
3125
3126You can then activate the multibuffer change group with a single call
3127to `activate-change-group', and finish it with a single call to
3128`accept-change-group' or `cancel-change-group'.
3129
3130Nested use of several change groups for the same buffer works as you
3131would expect. Non-nested use of change groups for the same buffer
3132will lead to undesirable results, so don't let it happen; the first
3133change group you start for any given buffer should be the last one
3134finished.
2995 3135
2996+++ 3136+++
2997** Function `compute-motion' now calculates the usable window 3137** Progress reporters.
2998width if the WIDTH argument is nil. If the TOPOS argument is nil, 3138The new functions `make-progress-reporter', `progress-reporter-update',
2999the usable window height and width is used. 3139`progress-reporter-force-update', `progress-reporter-done', and
3140`dotimes-with-progress-reporter' provide a simple and efficient way for
3141a command to present progress messages for the user.
3000 3142
3001+++ 3143+++
3002** `visited-file-modtime' and `calendar-time-from-absolute' now return 3144** New `yank-handler' text property may be used to control how
3003a list of two integers, instead of a cons. 3145previously killed text on the kill-ring is reinserted.
3146
3147The value of the yank-handler property must be a list with one to four
3148elements with the following format:
3149 (FUNCTION PARAM NOEXCLUDE UNDO).
3150
3151The `insert-for-yank' function looks for a yank-handler property on
3152the first character on its string argument (typically the first
3153element on the kill-ring). If a yank-handler property is found,
3154the normal behavior of `insert-for-yank' is modified in various ways:
3155
3156 When FUNCTION is present and non-nil, it is called instead of `insert'
3157to insert the string. FUNCTION takes one argument--the object to insert.
3158 If PARAM is present and non-nil, it replaces STRING as the object
3159passed to FUNCTION (or `insert'); for example, if FUNCTION is
3160`yank-rectangle', PARAM should be a list of strings to insert as a
3161rectangle.
3162 If NOEXCLUDE is present and non-nil, the normal removal of the
3163yank-excluded-properties is not performed; instead FUNCTION is
3164responsible for removing those properties. This may be necessary
3165if FUNCTION adjusts point before or after inserting the object.
3166 If UNDO is present and non-nil, it is a function that will be called
3167by `yank-pop' to undo the insertion of the current object. It is
3168called with two arguments, the start and end of the current region.
3169FUNCTION may set `yank-undo-function' to override the UNDO value.
3170
3171*** The functions kill-new, kill-append, and kill-region now have an
3172optional argument to specify the yank-handler text property to put on
3173the killed text.
3174
3175*** The function yank-pop will now use a non-nil value of the variable
3176`yank-undo-function' (instead of delete-region) to undo the previous
3177yank or yank-pop command (or a call to insert-for-yank). The function
3178insert-for-yank automatically sets that variable according to the UNDO
3179element of the string argument's yank-handler text property if present.
3180
3181*** The function `insert-for-yank' now supports strings where the
3182`yank-handler' property does not span the first character of the
3183string. The old behavior is available if you call
3184`insert-for-yank-1' instead.
3185
3186*** The new function insert-for-yank normally works like `insert', but
3187removes the text properties in the `yank-excluded-properties' list.
3188However, the insertion of the text may be modified by a `yank-handler'
3189text property.
3004 3190
3005+++ 3191+++
3006** If a command sets transient-mark-mode to `only', that 3192** An element of buffer-undo-list can now have the form (apply FUNNAME
3007enables Transient Mark mode for the following command only. 3193. ARGS), where FUNNAME is a symbol other than t or nil. That stands
3008During that following command, the value of transient-mark-mode 3194for a high-level change that should be undone by evaluating (apply
3009is `identity'. If it is still `identity' at the end of the command, 3195FUNNAME ARGS).
3010it changes to nil. 3196
3197These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
3198which indicates that the change which took place was limited to the
3199range BEG...END and increased the buffer size by DELTA.
3011 3200
3012+++ 3201+++
3013** Cleaner way to enter key sequences. 3202** If the buffer's undo list for the current command gets longer than
3203undo-outer-limit, garbage collection empties it. This is to prevent
3204it from using up the available memory and choking Emacs.
3014 3205
3015You can enter a constant key sequence in a more natural format, the 3206+++
3016same one used for saving keyboard macros, using the macro `kbd'. For 3207** Enhancements to process support
3017example,
3018 3208
3019(kbd "C-x C-f") => "\^x\^f" 3209*** Function list-processes now has an optional argument; if non-nil,
3210only the processes whose query-on-exit flag is set are listed.
3211
3212*** New set-process-query-on-exit-flag and process-query-on-exit-flag
3213functions. The existing process-kill-without-query function is still
3214supported, but new code should use the new functions.
3215
3216*** Function signal-process now accepts a process object or process
3217name in addition to a process id to identify the signalled process.
3218
3219*** Processes now have an associated property list where programs can
3220maintain process state and other per-process related information.
3221
3222The new functions process-get and process-put are used to access, add,
3223and modify elements on this property list.
3224
3225The new low-level functions process-plist and set-process-plist are
3226used to access and replace the entire property list of a process.
3227
3228*** Function accept-process-output now has an optional fourth arg
3229`just-this-one'. If non-nil, only output from the specified process
3230is handled, suspending output from other processes. If value is an
3231integer, also inhibit running timers. This feature is generally not
3232recommended, but may be necessary for specific applications, such as
3233speech synthesis.
3234
3235*** Adaptive read buffering of subprocess output.
3236
3237On some systems, when emacs reads the output from a subprocess, the
3238output data is read in very small blocks, potentially resulting in
3239very poor performance. This behavior can be remedied to some extent
3240by setting the new variable process-adaptive-read-buffering to a
3241non-nil value (the default), as it will automatically delay reading
3242from such processes, to allowing them to produce more output before
3243emacs tries to read it.
3244
3245*** The new function `call-process-shell-command' executes a shell
3246command command synchronously in a separate process.
3247
3248*** The new function `process-file' is similar to `call-process', but
3249obeys file handlers. The file handler is chosen based on
3250default-directory.
3251
3252*** The new function `set-process-filter-multibyte' sets the
3253multibyteness of a string given to a process's filter.
3254
3255*** The new function `process-filter-multibyte-p' returns t if a
3256string given to a process's filter is multibyte.
3257
3258*** A filter function of a process is called with a multibyte string
3259if the filter's multibyteness is t. That multibyteness is decided by
3260the value of `default-enable-multibyte-characters' when the process is
3261created and can be changed later by `set-process-filter-multibyte'.
3262
3263*** If a process's coding system is raw-text or no-conversion and its
3264buffer is multibyte, the output of the process is at first converted
3265to multibyte by `string-to-multibyte' then inserted in the buffer.
3266Previously, it was converted to multibyte by `string-as-multibyte',
3267which was not compatible with the behavior of file reading.
3020 3268
3021+++ 3269+++
3022** The sentinel is now called when a network process is deleted with 3270** Enhanced networking support.
3271
3272*** There is a new `make-network-process' function which supports
3273opening of stream and datagram connections to a server, as well as
3274create a stream or datagram server inside emacs.
3275
3276- A server is started using :server t arg.
3277- Datagram connection is selected using :type 'datagram arg.
3278- A server can open on a random port using :service t arg.
3279- Local sockets are supported using :family 'local arg.
3280- Non-blocking connect is supported using :nowait t arg.
3281- The process' property list may be initialized using :plist PLIST arg;
3282 a copy of the server process' property list is automatically inherited
3283 by new client processes created to handle incoming connections.
3284
3285To test for the availability of a given feature, use featurep like this:
3286 (featurep 'make-network-process '(:type datagram))
3287
3288*** Original open-network-stream is now emulated using make-network-process.
3289
3290*** New function open-network-stream-nowait.
3291
3292This function initiates a non-blocking connect and returns immediately
3293without waiting for the connection to be established. It takes the
3294filter and sentinel functions as arguments; when the non-blocking
3295connect completes, the sentinel is called with a status string
3296matching "open" or "failed".
3297
3298*** New function open-network-stream-server.
3299
3300This function creates a network server process for a TCP service.
3301When a client connects to the specified service, a new subprocess
3302is created to handle the new connection, and the sentinel function
3303is called for the new process.
3304
3305*** New functions process-datagram-address and set-process-datagram-address.
3306
3307These functions are used with datagram-based network processes to get
3308and set the current address of the remote partner.
3309
3310*** New function format-network-address.
3311
3312This function reformats the lisp representation of a network address
3313to a printable string. For example, an IP address A.B.C.D and port
3314number P is represented as a five element vector [A B C D P], and the
3315printable string returned for this vector is "A.B.C.D:P". See the doc
3316string for other formatting options.
3317
3318*** By default, the function process-contact still returns (HOST SERVICE)
3319for a network process. Using the new optional KEY arg, the complete list
3320of network process properties or a specific property can be selected.
3321
3322Using :local and :remote as the KEY, the address of the local or
3323remote end-point is returned. An Inet address is represented as a 5
3324element vector, where the first 4 elements contain the IP address and
3325the fifth is the port number.
3326
3327*** Network processes can now be stopped and restarted with
3328`stop-process' and `continue-process'. For a server process, no
3329connections are accepted in the stopped state. For a client process,
3330no input is received in the stopped state.
3331
3332*** New function network-interface-list.
3333
3334This function returns a list of network interface names and their
3335current network addresses.
3336
3337*** New function network-interface-info.
3338
3339This function returns the network address, hardware address, current
3340status, and other information about a specific network interface.
3341
3342*** The sentinel is now called when a network process is deleted with
3023delete-process. The status message passed to the sentinel for a 3343delete-process. The status message passed to the sentinel for a
3024deleted network process is "deleted". The message passed to the 3344deleted network process is "deleted". The message passed to the
3025sentinel when the connection is closed by the remote peer has been 3345sentinel when the connection is closed by the remote peer has been
3026changed to "connection broken by remote peer". 3346changed to "connection broken by remote peer".
3027 3347
3028+++ 3348+++
3029** If the buffer's undo list for the current command gets longer than 3349** New function `force-window-update' can initiate a full redisplay of
3030undo-outer-limit, garbage collection empties it. This is to prevent 3350one or all windows. Normally, this is not needed as changes in window
3031it from using up the available memory and choking Emacs. 3351contents are detected automatically. However, certain implicit
3352changes to mode lines, header lines, or display properties may require
3353forcing an explicit window update.
3032 3354
3033+++ 3355+++
3034** skip-chars-forward and skip-chars-backward now handle 3356** You can now make a window as short as one line.
3035character classes such as [:alpha:], along with individual characters 3357
3036and ranges. 3358A window that is just one line tall does not display either a mode
3359line or a header line, even if the variables `mode-line-format' and
3360`header-line-format' call for them. A window that is two lines tall
3361cannot display both a mode line and a header line at once; if the
3362variables call for both, only the mode line actually appears.
3363
3364+++
3365** The line-move, scroll-up, and scroll-down functions will now
3366modify the window vscroll to scroll through display rows that are
3367taller that the height of the window, for example in the presense of
3368large images. To disable this feature, Lisp code may bind the new
3369variable `auto-window-vscroll' to nil.
3370
3371+++
3372** Function `compute-motion' now calculates the usable window
3373width if the WIDTH argument is nil. If the TOPOS argument is nil,
3374the usable window height and width is used.
3037 3375
3038+++ 3376+++
3039** Function pos-visible-in-window-p now returns the pixel coordinates 3377** Function pos-visible-in-window-p now returns the pixel coordinates
@@ -3041,23 +3379,131 @@ and partial visiblity state of the corresponding row, if the PARTIALLY
3041arg is non-nil. 3379arg is non-nil.
3042 3380
3043+++ 3381+++
3044** The function `eql' is now available without requiring the CL package. 3382** The new function `window-inside-edges' returns the edges of the
3383actual text portion of the window, not including the scroll bar or
3384divider line, the fringes, the display margins, the header line and
3385the mode line.
3045 3386
3046+++ 3387+++
3047** The display space :width and :align-to text properties are now 3388** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
3048supported on text terminals. 3389return window edges in units of pixels, rather than columns and lines.
3049 3390
3050+++ 3391+++
3051** Support for displaying image slices 3392** The new macro `with-selected-window' temporarily switches the
3393selected window without impacting the order of buffer-list.
3052 3394
3053*** New display property (slice X Y WIDTH HEIGHT) may be used with 3395+++
3054an image property to display only a specific slice of the image. 3396** `select-window' takes an optional second argument `norecord', like
3397`switch-to-buffer'.
3055 3398
3056*** Function insert-image has new optional fourth arg to 3399+++
3057specify image slice (X Y WIDTH HEIGHT). 3400** `save-selected-window' now saves and restores the selected window
3401of every frame. This way, it restores everything that can be changed
3402by calling `select-window'.
3058 3403
3059*** New function insert-sliced-image inserts a given image as a 3404+++
3060specified number of evenly sized slices (rows x columns). 3405** The function `set-window-buffer' now has an optional third argument
3406KEEP-MARGINS which will preserve the window's current margin, fringe,
3407and scroll-bar settings if non-nil.
3408
3409+++
3410** Customizable fringe bitmaps
3411
3412*** New function 'define-fringe-bitmap' can now be used to create new
3413fringe bitmaps, as well as change the built-in fringe bitmaps.
3414
3415To change a built-in bitmap, do (require 'fringe) and use the symbol
3416identifing the bitmap such as `left-truncation or `continued-line'.
3417
3418*** New function 'destroy-fringe-bitmap' may be used to destroy a
3419previously created bitmap, or restore a built-in bitmap.
3420
3421*** New function 'set-fringe-bitmap-face' can now be used to set a
3422specific face to be used for a specific fringe bitmap. The face is
3423automatically merged with the `fringe' face, so normally, the face
3424should only specify the foreground color of the bitmap.
3425
3426*** There are new display properties, left-fringe and right-fringe,
3427that can be used to show a specific bitmap in the left or right fringe
3428bitmap of the display line.
3429
3430Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
3431symbol identifying a fringe bitmap, either built-in or defined with
3432`define-fringe-bitmap', and FACE is an optional face name to be used
3433for displaying the bitmap instead of the default `fringe' face.
3434When specified, FACE is automatically merged with the `fringe' face.
3435
3436*** New function `fringe-bitmaps-at-pos' returns the current fringe
3437bitmaps in the display line at a given buffer position.
3438
3439+++
3440** Controlling the default left and right fringe widths.
3441
3442The default left and right fringe widths for all windows of a frame
3443can now be controlled by setting the `left-fringe' and `right-fringe'
3444frame parameters to an integer value specifying the width in pixels.
3445Setting the width to 0 effectively removes the corresponding fringe.
3446
3447The actual default fringe widths for the frame may deviate from the
3448specified widths, since the combined fringe widths must match an
3449integral number of columns. The extra width is distributed evenly
3450between the left and right fringe. For force a specific fringe width,
3451specify the width as a negative integer (if both widths are negative,
3452only the left fringe gets the specified width).
3453
3454Setting the width to nil (the default), restores the default fringe
3455width which is the minimum number of pixels necessary to display any
3456of the currently defined fringe bitmaps. The width of the built-in
3457fringe bitmaps is 8 pixels.
3458
3459+++
3460** Per-window fringe and scrollbar settings
3461
3462*** Windows can now have their own individual fringe widths and
3463position settings.
3464
3465To control the fringe widths of a window, either set the buffer-local
3466variables `left-fringe-width', `right-fringe-width', or call
3467`set-window-fringes'.
3468
3469To control the fringe position in a window, that is, whether fringes
3470are positioned between the display margins and the window's text area,
3471or at the edges of the window, either set the buffer-local variable
3472`fringes-outside-margins' or call `set-window-fringes'.
3473
3474The function `window-fringes' can be used to obtain the current
3475settings. To make `left-fringe-width', `right-fringe-width', and
3476`fringes-outside-margins' take effect, you must set them before
3477displaying the buffer in a window, or use `set-window-buffer' to force
3478an update of the display margins.
3479
3480*** Windows can now have their own individual scroll-bar settings
3481controlling the width and position of scroll-bars.
3482
3483To control the scroll-bar of a window, either set the buffer-local
3484variables `scroll-bar-mode' and `scroll-bar-width', or call
3485`set-window-scroll-bars'. The function `window-scroll-bars' can be
3486used to obtain the current settings. To make `scroll-bar-mode' and
3487`scroll-bar-width' take effect, you must set them before displaying
3488the buffer in a window, or use `set-window-buffer' to force an update
3489of the display margins.
3490
3491+++
3492** When using non-toolkit scroll bars with the default width,
3493the scroll-bar-width frame parameter value is nil.
3494
3495+++
3496** Multiple overlay arrows can now be defined and managed via the new
3497variable `overlay-arrow-variable-list'. It contains a list of
3498varibles which contain overlay arrow position markers, including
3499the original `overlay-arrow-position' variable.
3500
3501Each variable on this list may have individual `overlay-arrow-string'
3502and `overlay-arrow-bitmap' properties that specify an overlay arrow
3503string (for non-window terminals) or fringe bitmap (for window
3504systems) to display at the corresponding overlay arrow position.
3505If either property is not set, the default `overlay-arrow-string' or
3506'overlay-arrow-fringe-bitmap' will be used.
3061 3507
3062+++ 3508+++
3063** New line-height and line-spacing properties for newline characters 3509** New line-height and line-spacing properties for newline characters
@@ -3162,139 +3608,16 @@ The form `(+ EXPR ...)' adds up the value of the expressions.
3162The form `(- EXPR ...)' negates or subtracts the value of the expressions. 3608The form `(- EXPR ...)' negates or subtracts the value of the expressions.
3163 3609
3164+++ 3610+++
3165** Normally, the cursor is displayed at the end of any overlay and 3611** Support for displaying image slices
3166text property string that may be present at the current window
3167position. The cursor may now be placed on any character of such
3168strings by giving that character a non-nil `cursor' text property.
3169
3170+++
3171** The first face specification element in a defface can specify
3172`default' instead of frame classification. Then its attributes act as
3173defaults that apply to all the subsequent cases (and may be overridden
3174by them).
3175
3176+++
3177** New face attribute `min-colors' can be used to tailor the face color
3178to the number of colors supported by a display, and define the
3179foreground and background colors accordingly so that they look best on
3180a terminal that supports at least this many colors. This is now the
3181preferred method for defining default faces in a way that makes a good
3182use of the capabilities of the display.
3183
3184+++
3185** Customizable fringe bitmaps
3186
3187*** New function 'define-fringe-bitmap' can now be used to create new
3188fringe bitmaps, as well as change the built-in fringe bitmaps.
3189
3190To change a built-in bitmap, do (require 'fringe) and use the symbol
3191identifing the bitmap such as `left-truncation or `continued-line'.
3192
3193*** New function 'destroy-fringe-bitmap' may be used to destroy a
3194previously created bitmap, or restore a built-in bitmap.
3195
3196*** New function 'set-fringe-bitmap-face' can now be used to set a
3197specific face to be used for a specific fringe bitmap. The face is
3198automatically merged with the `fringe' face, so normally, the face
3199should only specify the foreground color of the bitmap.
3200
3201*** There are new display properties, left-fringe and right-fringe,
3202that can be used to show a specific bitmap in the left or right fringe
3203bitmap of the display line.
3204
3205Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
3206symbol identifying a fringe bitmap, either built-in or defined with
3207`define-fringe-bitmap', and FACE is an optional face name to be used
3208for displaying the bitmap instead of the default `fringe' face.
3209When specified, FACE is automatically merged with the `fringe' face.
3210
3211*** New function `fringe-bitmaps-at-pos' returns the current fringe
3212bitmaps in the display line at a given buffer position.
3213
3214+++
3215** Multiple overlay arrows can now be defined and managed via the new
3216variable `overlay-arrow-variable-list'. It contains a list of
3217varibles which contain overlay arrow position markers, including
3218the original `overlay-arrow-position' variable.
3219
3220Each variable on this list may have individual `overlay-arrow-string'
3221and `overlay-arrow-bitmap' properties that specify an overlay arrow
3222string (for non-window terminals) or fringe bitmap (for window
3223systems) to display at the corresponding overlay arrow position.
3224If either property is not set, the default `overlay-arrow-string' or
3225'overlay-arrow-fringe-bitmap' will be used.
3226
3227+++
3228** The default value of `sentence-end' is now defined using the new
3229variable `sentence-end-without-space' which contains such characters
3230that end a sentence without following spaces.
3231
3232+++
3233** The function `sentence-end' should be used to obtain the value of
3234the variable `sentence-end'. If the variable `sentence-end' is nil,
3235then this function returns the regexp constructed from the variables
3236`sentence-end-without-period', `sentence-end-double-space' and
3237`sentence-end-without-space'.
3238
3239+++
3240** The flags, width, and precision options for %-specifications in function
3241`format' are now documented. Some flags that were accepted but not
3242implemented (such as "*") are no longer accepted.
3243
3244+++
3245** New function `delete-dups' destructively removes `equal' duplicates
3246from a list. Of several `equal' occurrences of an element in the list,
3247the first one is kept.
3248
3249+++
3250** `declare' is now a macro. This change was made mostly for
3251documentation purposes and should have no real effect on Lisp code.
3252
3253+++
3254** A file name handler can declare which operations it handles.
3255
3256You do this by putting an `operation' property on the handler name
3257symbol. The property value should be a list of the operations that
3258the handler really handles. It won't be called for any other
3259operations.
3260
3261This is useful for autoloaded handlers, to prevent them from being
3262autoloaded when not really necessary.
3263
3264+++
3265** The new hook `before-save-hook' is invoked by `basic-save-buffer'
3266before saving buffers. This allows packages to perform various final
3267tasks, for example; it can be used by the copyright package to make
3268sure saved files have the current year in any copyright headers.
3269
3270+++
3271** The function `insert-for-yank' now supports strings where the
3272`yank-handler' property does not span the first character of the
3273string. The old behavior is available if you call
3274`insert-for-yank-1' instead.
3275
3276+++
3277** New function `get-char-property-and-overlay' accepts the same
3278arguments as `get-char-property' and returns a cons whose car is the
3279return value of `get-char-property' called with those arguments and
3280whose cdr is the overlay in which the property was found, or nil if
3281it was found as a text property or not found at all.
3282 3612
3283+++ (lispref) 3613*** New display property (slice X Y WIDTH HEIGHT) may be used with
3284??? (man) 3614an image property to display only a specific slice of the image.
3285** The mouse pointer shape in void text areas (i.e. after the end of a
3286line or below the last line in the buffer) of the text window is now
3287controlled by the new variable `void-text-area-pointer'. The default
3288is to use the `arrow' (non-text) pointer. Other choices are `text'
3289(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
3290 3615
3291+++ 3616*** Function insert-image has new optional fourth arg to
3292** The mouse pointer shape over an image can now be controlled by the 3617specify image slice (X Y WIDTH HEIGHT).
3293:pointer image property.
3294 3618
3295+++ 3619*** New function insert-sliced-image inserts a given image as a
3296** The mouse pointer shape over ordinary text or images may now be 3620specified number of evenly sized slices (rows x columns).
3297controlled/overriden via the `pointer' text property.
3298 3621
3299+++ 3622+++
3300** Images may now have an associated image map via the :map property. 3623** Images may now have an associated image map via the :map property.
@@ -3319,6 +3642,27 @@ When you click the mouse when the mouse pointer is over a hot-spot,
3319an event is composed by combining the ID of the hot-spot with the 3642an event is composed by combining the ID of the hot-spot with the
3320mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. 3643mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
3321 3644
3645+++ (lispref)
3646??? (man)
3647** The mouse pointer shape in void text areas (i.e. after the end of a
3648line or below the last line in the buffer) of the text window is now
3649controlled by the new variable `void-text-area-pointer'. The default
3650is to use the `arrow' (non-text) pointer. Other choices are `text'
3651(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
3652
3653+++
3654** The mouse pointer shape over an image can now be controlled by the
3655:pointer image property.
3656
3657+++
3658** Lisp code can now test if a given buffer position is inside a
3659clickable link with the new function `mouse-on-link-p'. This is the
3660function used by the new `mouse-1-click-follows-link' functionality.
3661
3662+++
3663** The mouse pointer shape over ordinary text or images may now be
3664controlled/overriden via the `pointer' text property.
3665
3322** Mouse event enhancements: 3666** Mouse event enhancements:
3323 3667
3324+++ 3668+++
@@ -3367,45 +3711,58 @@ click, the x and y pixel coordinates relative to the top left corner
3367of that object, and the total width and height of that object. 3711of that object, and the total width and height of that object.
3368 3712
3369+++ 3713+++
3370** New function `force-window-update' can initiate a full redisplay of 3714** At the end of a command, point moves out from within invisible
3371one or all windows. Normally, this is not needed as changes in window 3715text, in the same way it moves out from within text covered by an
3372contents are detected automatically. However, certain implicit 3716image or composition property.
3373changes to mode lines, header lines, or display properties may require
3374forcing an explicit window update.
3375 3717
3376--- 3718This makes it generally unnecessary to mark invisible text as intangible.
3377** New function `redirect-debugging-output' can be used to redirect 3719This is particularly good because the intangible property often has
3378debugging output on the stderr file handle to a file. 3720unexpected side-effects since the property applies to everything
3721(including `goto-char', ...) whereas this new code is only run after
3722post-command-hook and thus does not care about intermediate states.
3379 3723
3380+++ 3724+++
3381** `split-string' now includes null substrings in the returned list if 3725** Normally, the cursor is displayed at the end of any overlay and
3382the optional argument SEPARATORS is non-nil and there are matches for 3726text property string that may be present at the current window
3383SEPARATORS at the beginning or end of the string. If SEPARATORS is 3727position. The cursor may now be placed on any character of such
3384nil, or if the new optional third argument OMIT-NULLS is non-nil, all 3728strings by giving that character a non-nil `cursor' text property.
3385empty matches are omitted from the returned list.
3386 3729
3387+++ 3730+++
3388** `makehash' is now obsolete. Use `make-hash-table' instead. 3731** The display space :width and :align-to text properties are now
3732supported on text terminals.
3389 3733
3390+++ 3734+++
3391** If optional third argument APPEND to `add-to-list' is non-nil, a 3735** Arguments for remove-overlays are now optional, so that you can
3392new element gets added at the end of the list instead of at the 3736remove all overlays in the buffer by just calling (remove-overlay).
3393beginning. This change actually occurred in Emacs-21.1, but was not
3394documented.
3395 3737
3396+++ 3738+++
3397** Major modes can define `eldoc-documentation-function' 3739** New variable char-property-alias-alist.
3398locally to provide Eldoc functionality by some method appropriate to
3399the language.
3400 3740
3401--- 3741This variable allows you to create alternative names for text
3402** New coding system property `mime-text-unsuitable' indicates that 3742properties. It works at the same level as `default-text-properties',
3403the coding system's `mime-charset' is not suitable for MIME text 3743although it applies to overlays as well. This variable was introduced
3404parts, e.g. utf-16. 3744to implement the `font-lock-face' property.
3405 3745
3406+++ 3746+++
3407** The argument to forward-word, backward-word, forward-to-indentation 3747** New function `get-char-property-and-overlay' accepts the same
3408and backward-to-indentation is now optional, and defaults to 1. 3748arguments as `get-char-property' and returns a cons whose car is the
3749return value of `get-char-property' called with those arguments and
3750whose cdr is the overlay in which the property was found, or nil if
3751it was found as a text property or not found at all.
3752
3753+++
3754** The new frame parameter `tty-color-mode' specifies the mode to use
3755for color support on character terminal frames. Its value can be a
3756number of colors to support, or a symbol. See the Emacs Lisp
3757Reference manual for more detailed documentation.
3758
3759+++
3760** The new face attribute `min-colors' can be used to tailor the face
3761color to the number of colors supported by a display, and define the
3762foreground and background colors accordingly so that they look best on
3763a terminal that supports at least this many colors. This is now the
3764preferred method for defining default faces in a way that makes a good
3765use of the capabilities of the display.
3409 3766
3410+++ 3767+++
3411** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able 3768** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
@@ -3416,84 +3773,25 @@ Fontsets can specify a font on a per-character basis; when the fontset
3416does that, this value may not be accurate. 3773does that, this value may not be accurate.
3417 3774
3418+++ 3775+++
3419** The new function `window-inside-edges' returns the edges of the 3776** New function display-supports-face-attributes-p may be used to test
3420actual text portion of the window, not including the scroll bar or 3777whether a given set of face attributes is actually displayable.
3421divider line, the fringes, the display margins, the header line and
3422the mode line.
3423
3424+++
3425** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
3426return window edges in units of pixels, rather than columns and lines.
3427
3428+++
3429** The kill-buffer-hook is now permanent-local.
3430
3431+++
3432** `select-window' takes an optional second argument `norecord', like
3433`switch-to-buffer'.
3434
3435+++
3436** The new macro `with-selected-window' temporarily switches the
3437selected window without impacting the order of buffer-list.
3438
3439+++
3440** The `keymap' property now also works at the ends of overlays and
3441text-properties, according to their stickiness. This also means that it
3442works with empty overlays. The same hold for the `local-map' property.
3443 3778
3444+++ 3779A new predicate `supports' has also been added to the `defface' face
3445** (map-keymap FUNCTION KEYMAP) applies the function to each binding 3780specification language, which can be used to do this test for faces
3446in the keymap. 3781defined with defface.
3447 3782
3448--- 3783---
3449** VC changes for backends: 3784** The special treatment of faces whose names are of the form `fg:COLOR'
3450*** (vc-switches BACKEND OPERATION) is a new function for use by backends. 3785or `bg:COLOR' has been removed. Lisp programs should use the
3451*** The new `find-version' backend function replaces the `destfile' 3786`defface' facility for defining faces with specific colors, or use
3452parameter of the `checkout' backend function. 3787the feature of specifying the face attributes :foreground and :background
3453Old code still works thanks to a default `find-version' behavior that 3788directly in the `face' property instead of using a named face.
3454uses the old `destfile' parameter.
3455
3456+++
3457** The new macro dynamic-completion-table supports using functions
3458as a dynamic completion table.
3459
3460 (dynamic-completion-table FUN)
3461
3462FUN is called with one argument, the string for which completion is required,
3463and it should return an alist containing all the intended possible
3464completions. This alist may be a full list of possible completions so that FUN
3465can ignore the value of its argument. If completion is performed in the
3466minibuffer, FUN will be called in the buffer from which the minibuffer was
3467entered. dynamic-completion-table then computes the completion.
3468
3469+++
3470** The new macro lazy-completion-table initializes a variable
3471as a lazy completion table.
3472
3473 (lazy-completion-table VAR FUN &rest ARGS)
3474
3475If the completion table VAR is used for the first time (e.g., by passing VAR
3476as an argument to `try-completion'), the function FUN is called with arguments
3477ARGS. FUN must return the completion table that will be stored in VAR. If
3478completion is requested in the minibuffer, FUN will be called in the buffer
3479from which the minibuffer was entered. The return value of
3480`lazy-completion-table' must be used to initialize the value of VAR.
3481
3482+++
3483** `minor-mode-list' now holds a list of minor mode commands.
3484
3485+++
3486** The new function `modify-all-frames-parameters' modifies parameters
3487for all (existing and future) frames.
3488
3489+++
3490** `sit-for' can now be called with args (SECONDS &optional NODISP).
3491
3492+++
3493** New standard font-lock face `font-lock-preprocessor-face'.
3494 3789
3495+++ 3790+++
3496** The macro `with-syntax-table' does not copy the table any more. 3791** The first face specification element in a defface can specify
3792`default' instead of frame classification. Then its attributes act as
3793defaults that apply to all the subsequent cases (and may be overridden
3794by them).
3497 3795
3498+++ 3796+++
3499** The variable `face-font-rescale-alist' specifies how much larger 3797** The variable `face-font-rescale-alist' specifies how much larger
@@ -3502,342 +3800,172 @@ for all (existing and future) frames.
3502point, we actually use a font of 13 point if the font matches 3800point, we actually use a font of 13 point if the font matches
3503SOME-FONTNAME-PATTERN. 3801SOME-FONTNAME-PATTERN.
3504 3802
3505+++
3506** The function `number-sequence' returns a list of equally-separated
3507numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
3508By default, the separation is 1, but you can specify a different separation
3509as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
3510
3511+++
3512** `file-chase-links' now takes an optional second argument LIMIT which
3513specifies the maximum number of links to chase through. If after that
3514many iterations the file name obtained is still a symbolic link,
3515`file-chase-links' returns it anyway.
3516
3517--- 3803---
3518** `set-fontset-font', `fontset-info', `fontset-font' now operate on 3804** `set-fontset-font', `fontset-info', `fontset-font' now operate on
3519the default fontset if the argument NAME is nil.. 3805the default fontset if the argument NAME is nil..
3520 3806
3521+++
3522** The escape sequence \s is now interpreted as a SPACE character,
3523unless it is followed by a `-' in a character constant (e.g. ?\s-A),
3524in which case it is still interpreted as the super modifier.
3525In strings, \s is always interpreted as a space.
3526
3527+++
3528** New function `set-process-filter-multibyte' sets the multibyteness
3529of a string given to a process's filter.
3530
3531+++
3532** New function `process-filter-multibyte-p' returns t if
3533a string given to a process's filter is multibyte.
3534
3535+++
3536** A filter function of a process is called with a multibyte string if
3537the filter's multibyteness is t. That multibyteness is decided by the
3538value of `default-enable-multibyte-characters' when the process is
3539created and can be changed later by `set-process-filter-multibyte'.
3540
3541+++
3542** If a process's coding system is raw-text or no-conversion and its
3543buffer is multibyte, the output of the process is at first converted
3544to multibyte by `string-to-multibyte' then inserted in the buffer.
3545Previously, it was converted to multibyte by `string-as-multibyte',
3546which was not compatible with the behavior of file reading.
3547
3548+++
3549** New function `string-to-multibyte' converts a unibyte string to a
3550multibyte string with the same individual character codes.
3551
3552+++
3553** New variables `gc-elapsed' and `gcs-done' provide extra information
3554on garbage collection.
3555
3556+++
3557** New function `decode-coding-inserted-region' decodes a region as if
3558it is read from a file without decoding.
3559
3560+++
3561** New function `locale-info' accesses locale information.
3562
3563+++
3564** `save-selected-window' now saves and restores the selected window
3565of every frame. This way, it restores everything that can be changed
3566by calling `select-window'.
3567
3568--- 3807---
3569** `easy-menu-define' now allows you to use nil for the symbol name 3808** The function face-differs-from-default-p now truly checks whether the
3570if you don't need to give the menu a name. If you install the menu 3809given face displays differently from the default face or not (previously
3571into other keymaps right away (MAPS is non-nil), it usually doesn't 3810it did only a very cursory check).
3572need to have a name.
3573
3574** Byte compiler changes:
3575
3576---
3577*** `(featurep 'xemacs)' is treated by the compiler as nil. This
3578helps to avoid noisy compiler warnings in code meant to run under both
3579Emacs and XEmacs and may sometimes make the result significantly more
3580efficient. Since byte code from recent versions of XEmacs won't
3581generally run in Emacs and vice versa, this optimization doesn't lose
3582you anything.
3583 3811
3584+++ 3812+++
3585*** You can avoid warnings for possibly-undefined symbols with a 3813** face-attribute, face-foreground, face-background, and face-stipple now
3586simple convention that the compiler understands. (This is mostly 3814accept a new optional argument, INHERIT, which controls how face
3587useful in code meant to be portable to different Emacs versions.) 3815inheritance is used when determining the value of a face attribute.
3588Write forms like the following, or code that macroexpands into such
3589forms:
3590
3591 (if (fboundp 'foo) <then> <else>)
3592 (if (boundp 'foo) <then> <else)
3593
3594In the first case, using `foo' as a function inside the <then> form
3595won't produce a warning if it's not defined as a function, and in the
3596second case, using `foo' as a variable won't produce a warning if it's
3597unbound. The test must be in exactly one of the above forms (after
3598macro expansion), but such tests may be nested. Note that `when' and
3599`unless' expand to `if', but `cond' doesn't.
3600 3816
3601+++ 3817+++
3602*** The new macro `with-no-warnings' suppresses all compiler warnings 3818** New functions face-attribute-relative-p and merge-face-attribute
3603inside its body. In terms of execution, it is equivalent to `progn'. 3819help with handling relative face attributes.
3604 3820
3605+++ 3821+++
3606** The new translation table `translation-table-for-input' 3822** The priority of faces in an :inherit attribute face-list is reversed.
3607is used for customizing self-insertion. The character to 3823If a face contains an :inherit attribute with a list of faces, earlier
3608be inserted is translated through it. 3824faces in the list override later faces in the list; in previous releases
3825of Emacs, the order was the opposite. This change was made so that
3826:inherit face-lists operate identically to face-lists in text `face'
3827properties.
3609 3828
3610+++ 3829+++
3611** `load-history' can now have elements of the form (t . FUNNAME), 3830** New standard font-lock face `font-lock-preprocessor-face'.
3612which means FUNNAME was previously defined as an autoload (before the
3613current file redefined it).
3614 3831
3615+++ 3832+++
3616** `load-history' now records (defun . FUNNAME) when a function is 3833** New special text property `font-lock-face'.
3617defined. For a variable, it records just the variable name.
3618 3834
3619+++ 3835This property acts like the `face' property, but it is controlled by
3620** New Lisp library testcover.el works with edebug to help you determine 3836M-x font-lock-mode. It is not, strictly speaking, a builtin text
3621whether you've tested all your Lisp code. Function testcover-start 3837property. Instead, it is implemented inside font-core.el, using the
3622instruments all functions in a given file. Then test your code. Function 3838new variable `char-property-alias-alist'.
3623testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
3624show where coverage is lacking. Command testcover-next-mark (bind it to
3625a key!) will move point forward to the next spot that has a splotch.
3626 3839
3627*** Normally, a red splotch indicates the form was never completely evaluated; 3840---
3628a brown splotch means it always evaluated to the same value. The red 3841** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
3629splotches are skipped for forms that can't possibly complete their evaluation, 3842If a piece of text with that property gets contextually refontified
3630such as `error'. The brown splotches are skipped for forms that are expected 3843(see jit-lock-defer-contextually), then all of that text will
3631to always evaluate to the same value, such as (setq x 14). 3844be refontified. This is useful when the syntax of a textual element
3845depends on text several lines further down (and when font-lock-multiline
3846is not appropriate to solve that problem). For example in Perl:
3632 3847
3633*** For difficult cases, you can add do-nothing macros to your code to help 3848 s{
3634out the test coverage tool. The macro `noreturn' suppresses a red splotch. 3849 foo
3635It is an error if the argument to `noreturn' does return. The macro 1value 3850 }{
3636suppresses a brown splotch for its argument. This macro is a no-op except 3851 bar
3637during test-coverage -- then it signals an error if the argument actually 3852 }e
3638returns differing values.
3639 3853
3640+++ 3854Adding/removing the last `e' changes the `bar' from being a piece of
3641** New function unsafep returns nil if the given Lisp form can't possibly 3855text to being a piece of code, so you'd put a jit-lock-defer-multiline
3642do anything dangerous; otherwise it returns a reason why the form might be 3856property over the second half of the command to force (deferred)
3643unsafe (calls dangerous function, alters global variable, etc). 3857refontification of `bar' whenever the `e' is added/removed.
3644 3858
3645+++ 3859+++
3646** The new variable `print-continuous-numbering', when non-nil, says 3860** font-lock can manage arbitrary text-properties beside `face'.
3647that successive calls to print functions should use the same 3861*** the FACENAME returned in font-lock-keywords can be a list
3648numberings for circular structure references. This is only relevant 3862of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
3649when `print-circle' is non-nil. 3863other properties than `face'.
3650 3864*** font-lock-extra-managed-props can be set to make sure those extra
3651When you bind `print-continuous-numbering' to t, you should 3865properties are automatically cleaned up by font-lock.
3652also bind `print-number-table' to nil.
3653 3866
3654+++ 3867---
3655** When using non-toolkit scroll bars with the default width, 3868** The precedence of file-name-handlers has been changed.
3656the scroll-bar-width frame parameter value is nil. 3869Instead of blindly choosing the first handler that matches,
3870find-file-name-handler now gives precedence to a file-name handler
3871that matches near the end of the file name. More specifically, the
3872handler whose (match-beginning 0) is the largest is chosen.
3873In case of ties, the old "first matched" rule applies.
3657 3874
3658+++ 3875+++
3659** The new function copy-abbrev-table returns a new abbrev table that 3876** A file name handler can declare which operations it handles.
3660is a copy of a given abbrev table.
3661 3877
3662+++ 3878You do this by putting an `operation' property on the handler name
3663** The option --script FILE runs Emacs in batch mode and loads FILE. 3879symbol. The property value should be a list of the operations that
3664It is useful for writing Emacs Lisp shell script files, because they 3880the handler really handles. It won't be called for any other
3665can start with this line: 3881operations.
3666 3882
3667 #!/usr/bin/emacs --script 3883This is useful for autoloaded handlers, to prevent them from being
3884autoloaded when not really necessary.
3668 3885
3669+++ 3886+++
3670** The option --directory DIR now modifies `load-path' immediately. 3887** `set-auto-mode' now gives the interpreter magic line (if present)
3671Directories are added to the front of `load-path' in the order they 3888precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration
3672appear on the command line. For example, with this command line: 3889will give the buffer XML or SGML mode, based on the new var
3673 3890`magic-mode-alist'.
3674 emacs -batch -L .. -L /tmp --eval "(require 'foo)"
3675
3676Emacs looks for library `foo' in the parent directory, then in /tmp, then
3677in the other directories in `load-path'. (-L is short for --directory.)
3678 3891
3679+++ 3892+++
3680** A function's docstring can now hold the function's usage info on 3893** Major mode functions now run the new normal hook
3681its last line. It should match the regexp "\n\n(fn.*)\\'". 3894`after-change-major-mode-hook', at their very end, after the mode hooks.
3682 3895
3683--- 3896---
3684** New CCL functions `lookup-character' and `lookup-integer' access 3897** If a major mode function has a non-nil `no-clone-indirect'
3685hash tables defined by the Lisp function `define-translation-hash-table'. 3898property, `clone-indirect-buffer' signals an error if you use
3899it in that buffer.
3686 3900
3687+++ 3901+++
3688** The new function `minibufferp' returns non-nil if its optional buffer 3902** Major modes can define `eldoc-documentation-function'
3689argument is a minibuffer. If the argument is omitted it defaults to 3903locally to provide Eldoc functionality by some method appropriate to
3690the current buffer. 3904the language.
3691 3905
3692+++ 3906+++
3693** There is a new Warnings facility; see the functions `warn' 3907** define-derived-mode by default creates a new empty abbrev table.
3694and `display-warning'. 3908It does not copy abbrevs from the parent mode's abbrev table.
3695 3909
3696+++ 3910+++
3697** The functions all-completions and try-completion now accept lists 3911** define-minor-mode now accepts arbitrary additional keyword arguments
3698of strings as well as hash-tables additionally to alists, obarrays 3912and simply passes them to defcustom, if applicable.
3699and functions. Furthermore, the function `test-completion' is now
3700exported to Lisp. The keys in alists and hash tables may be either
3701strings or symbols, which are automatically converted with to strings.
3702
3703---
3704** When pure storage overflows while dumping, Emacs now prints how
3705much pure storage it will approximately need.
3706 3913
3707+++ 3914+++
3708** The new variable `auto-coding-functions' lets you specify functions 3915** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
3709to examine a file being visited and deduce the proper coding system 3916are used by define-derived-mode to make sure the mode hook for the
3710for it. (If the coding system is detected incorrectly for a specific 3917parent mode is run at the end of the child mode.
3711file, you can put a `coding:' tags to override it.)
3712
3713---
3714** The new function `merge-coding-systems' fills in unspecified aspects
3715of one coding system from another coding system.
3716 3918
3717+++ 3919+++
3718** The variable `safe-local-eval-forms' specifies a list of forms that 3920** `minor-mode-list' now holds a list of minor mode commands.
3719are ok to evaluate when they appear in an `eval' local variables
3720specification. Normally Emacs asks for confirmation before evaluating
3721such a form, but if the form appears in this list, no confirmation is
3722needed.
3723
3724---
3725** If a function has a non-nil `safe-local-eval-function' property,
3726that means it is ok to evaluate some calls to that function when it
3727appears in an `eval' local variables specification. If the property
3728is t, then any form calling that function with constant arguments is
3729ok. If the property is a function or list of functions, they are called
3730with the form as argument, and if any returns t, the form is ok to call.
3731
3732If the form is not "ok to call", that means Emacs asks for
3733confirmation as before.
3734 3921
3735+++ 3922+++
3736** Controlling the default left and right fringe widths. 3923** Both the variable and the function `disabled-command-hook' have
3737 3924been renamed to `disabled-command-function'. The variable
3738The default left and right fringe widths for all windows of a frame 3925`disabled-command-hook' has been kept as an obsolete alias.
3739can now be controlled by setting the `left-fringe' and `right-fringe'
3740frame parameters to an integer value specifying the width in pixels.
3741Setting the width to 0 effectively removes the corresponding fringe.
3742
3743The actual default fringe widths for the frame may deviate from the
3744specified widths, since the combined fringe widths must match an
3745integral number of columns. The extra width is distributed evenly
3746between the left and right fringe. For force a specific fringe width,
3747specify the width as a negative integer (if both widths are negative,
3748only the left fringe gets the specified width).
3749
3750Setting the width to nil (the default), restores the default fringe
3751width which is the minimum number of pixels necessary to display any
3752of the currently defined fringe bitmaps. The width of the built-in
3753fringe bitmaps is 8 pixels.
3754 3926
3755+++ 3927+++
3756** Per-window fringes settings 3928** The function `eql' is now available without requiring the CL package.
3757
3758Windows can now have their own individual fringe widths and position
3759settings.
3760
3761To control the fringe widths of a window, either set the buffer-local
3762variables `left-fringe-width', `right-fringe-width', or call
3763`set-window-fringes'.
3764
3765To control the fringe position in a window, that is, whether fringes
3766are positioned between the display margins and the window's text area,
3767or at the edges of the window, either set the buffer-local variable
3768`fringes-outside-margins' or call `set-window-fringes'.
3769
3770The function `window-fringes' can be used to obtain the current
3771settings. To make `left-fringe-width', `right-fringe-width', and
3772`fringes-outside-margins' take effect, you must set them before
3773displaying the buffer in a window, or use `set-window-buffer' to force
3774an update of the display margins.
3775 3929
3776+++ 3930+++
3777** Per-window vertical scroll-bar settings 3931** If optional third argument APPEND to `add-to-list' is non-nil, a
3778 3932new element gets added at the end of the list instead of at the
3779Windows can now have their own individual scroll-bar settings 3933beginning. This change actually occurred in Emacs-21.1, but was not
3780controlling the width and position of scroll-bars. 3934documented.
3781
3782To control the scroll-bar of a window, either set the buffer-local
3783variables `scroll-bar-mode' and `scroll-bar-width', or call
3784`set-window-scroll-bars'. The function `window-scroll-bars' can be
3785used to obtain the current settings. To make `scroll-bar-mode' and
3786`scroll-bar-width' take effect, you must set them before displaying
3787the buffer in a window, or use `set-window-buffer' to force an update
3788of the display margins.
3789 3935
3790+++ 3936+++
3791** The function `set-window-buffer' now has an optional third argument 3937** The escape sequence \s is now interpreted as a SPACE character,
3792KEEP-MARGINS which will preserve the window's current margin, fringe, 3938unless it is followed by a `-' in a character constant (e.g. ?\s-A),
3793and scroll-bar settings if non-nil. 3939in which case it is still interpreted as the super modifier.
3940In strings, \s is always interpreted as a space.
3794 3941
3795+++ 3942+++
3796** Renamed hooks to better follow the naming convention: 3943** A hex escape in a string forces the string to be multibyte.
3797find-file-hooks to find-file-hook, 3944An octal escape makes it unibyte.
3798find-file-not-found-hooks to find-file-not-found-functions,
3799write-file-hooks to write-file-functions,
3800write-contents-hooks to write-contents-functions,
3801x-lost-selection-hooks to x-lost-selection-functions,
3802x-sent-selection-hooks to x-sent-selection-functions.
3803Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
3804 3945
3805+++ 3946+++
3806** The new variable `delete-frame-functions' replaces `delete-frame-hook'. 3947** `split-string' now includes null substrings in the returned list if
3807It was renamed to follow the naming conventions for abnormal hooks. The old 3948the optional argument SEPARATORS is non-nil and there are matches for
3808name remains available as an alias, but has been marked obsolete. 3949SEPARATORS at the beginning or end of the string. If SEPARATORS is
3950nil, or if the new optional third argument OMIT-NULLS is non-nil, all
3951empty matches are omitted from the returned list.
3809 3952
3810+++ 3953+++
3811** The `read-file-name' function now takes an additional argument which 3954** New function `string-to-multibyte' converts a unibyte string to a
3812specifies a predicate which the file name read must satify. The 3955multibyte string with the same individual character codes.
3813new variable `read-file-name-predicate' contains the predicate argument
3814while reading the file name from the minibuffer; the predicate in this
3815variable is used by read-file-name-internal to filter the completion list.
3816
3817---
3818** The new variable `read-file-name-function' can be used by lisp code
3819to override the internal read-file-name function.
3820 3956
3821+++ 3957+++
3822** The new variable `read-file-name-completion-ignore-case' specifies 3958** The function `number-sequence' returns a list of equally-separated
3823whether completion ignores case when reading a file name with the 3959numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
3824`read-file-name' function. 3960By default, the separation is 1, but you can specify a different separation
3961as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
3825 3962
3826+++ 3963+++
3827** The new function `read-directory-name' can be used instead of 3964** `sit-for' can now be called with args (SECONDS &optional NODISP).
3828`read-file-name' to read a directory name; when used, completion
3829will only show directories.
3830 3965
3831+++ 3966+++
3832** The new function `file-remote-p' tests a file name and returns 3967** A function's docstring can now hold the function's usage info on
3833non-nil if it specifies a remote file (one that Emacs accesses using 3968its last line. It should match the regexp "\n\n(fn.*)\\'".
3834its own special methods and not directly through the file system).
3835The value in that case is an identifier for the remote file system.
3836
3837---
3838** When a Lisp file uses CL functions at run-time, compiling the file
3839now issues warnings about these calls, unless the file performs
3840(require 'cl) when loaded.
3841 3969
3842+++ 3970+++
3843** The `defmacro' form may contain declarations specifying how to 3971** The `defmacro' form may contain declarations specifying how to
@@ -3857,407 +3985,209 @@ declaration specifiers supported are:
3857 equivalent to writing a `def-edebug-spec' for the macro. 3985 equivalent to writing a `def-edebug-spec' for the macro.
3858 3986
3859+++ 3987+++
3860** Interactive commands can be remapped through keymaps. 3988** The functions all-completions and try-completion now accept lists
3861 3989of strings as well as hash-tables additionally to alists, obarrays
3862This is an alternative to using defadvice or substitute-key-definition 3990and functions. Furthermore, the function `test-completion' is now
3863to modify the behavior of a key binding using the normal keymap 3991exported to Lisp. The keys in alists and hash tables may be either
3864binding and lookup functionality. 3992strings or symbols, which are automatically converted with to strings.
3865
3866When a key sequence is bound to a command, and that command is
3867remapped to another command, that command is run instead of the
3868original command.
3869
3870Example:
3871Suppose that minor mode my-mode has defined the commands
3872my-kill-line and my-kill-word, and it wants C-k (and any other key
3873bound to kill-line) to run the command my-kill-line instead of
3874kill-line, and likewise it wants to run my-kill-word instead of
3875kill-word.
3876
3877Instead of rebinding C-k and the other keys in the minor mode map,
3878command remapping allows you to directly map kill-line into
3879my-kill-line and kill-word into my-kill-word through the minor mode
3880map using define-key:
3881
3882 (define-key my-mode-map [remap kill-line] 'my-kill-line)
3883 (define-key my-mode-map [remap kill-word] 'my-kill-word)
3884
3885Now, when my-mode is enabled, and the user enters C-k or M-d,
3886the commands my-kill-line and my-kill-word are run.
3887
3888Notice that only one level of remapping is supported. In the above
3889example, this means that if my-kill-line is remapped to other-kill,
3890then C-k still runs my-kill-line.
3891
3892The following changes have been made to provide command remapping:
3893
3894- Command remappings are defined using `define-key' with a prefix-key
3895 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
3896 to definition DEF in keymap MAP. The definition is not limited to
3897 another command; it can be anything accepted for a normal binding.
3898
3899- The new function `command-remapping' returns the binding for a
3900 remapped command in the current keymaps, or nil if not remapped.
3901
3902- key-binding now remaps interactive commands unless the optional
3903 third argument NO-REMAP is non-nil.
3904
3905- where-is-internal now returns nil for a remapped command (e.g.
3906 kill-line if my-mode is enabled), and the actual key binding for
3907 the command it is remapped to (e.g. C-k for my-kill-line).
3908 It also has a new optional fifth argument, NO-REMAP, which inhibits
3909 remapping if non-nil (e.g. it returns C-k for kill-line and
3910 <kill-line> for my-kill-line).
3911
3912- The new variable `this-original-command' contains the original
3913 command before remapping. It is equal to `this-command' when the
3914 command was not remapped.
3915
3916+++
3917** New variable emulation-mode-map-alists.
3918
3919Lisp packages using many minor mode keymaps can now maintain their own
3920keymap alist separate from minor-mode-map-alist by adding their keymap
3921alist to this list.
3922 3993
3923+++ 3994+++
3924** Atomic change groups. 3995** The new macro dynamic-completion-table supports using functions
3925 3996as a dynamic completion table.
3926To perform some changes in the current buffer "atomically" so that
3927they either all succeed or are all undone, use `atomic-change-group'
3928around the code that makes changes. For instance:
3929
3930 (atomic-change-group
3931 (insert foo)
3932 (delete-region x y))
3933
3934If an error (or other nonlocal exit) occurs inside the body of
3935`atomic-change-group', it unmakes all the changes in that buffer that
3936were during the execution of the body. The change group has no effect
3937on any other buffers--any such changes remain.
3938
3939If you need something more sophisticated, you can directly call the
3940lower-level functions that `atomic-change-group' uses. Here is how.
3941
3942To set up a change group for one buffer, call `prepare-change-group'.
3943Specify the buffer as argument; it defaults to the current buffer.
3944This function returns a "handle" for the change group. You must save
3945the handle to activate the change group and then finish it.
3946
3947Before you change the buffer again, you must activate the change
3948group. Pass the handle to `activate-change-group' afterward to
3949do this.
3950
3951After you make the changes, you must finish the change group. You can
3952either accept the changes or cancel them all. Call
3953`accept-change-group' to accept the changes in the group as final;
3954call `cancel-change-group' to undo them all.
3955
3956You should use `unwind-protect' to make sure the group is always
3957finished. The call to `activate-change-group' should be inside the
3958`unwind-protect', in case the user types C-g just after it runs.
3959(This is one reason why `prepare-change-group' and
3960`activate-change-group' are separate functions.) Once you finish the
3961group, don't use the handle again--don't try to finish the same group
3962twice.
3963
3964To make a multibuffer change group, call `prepare-change-group' once
3965for each buffer you want to cover, then use `nconc' to combine the
3966returned values, like this:
3967
3968 (nconc (prepare-change-group buffer-1)
3969 (prepare-change-group buffer-2))
3970 3997
3971You can then activate the multibuffer change group with a single call 3998 (dynamic-completion-table FUN)
3972to `activate-change-group', and finish it with a single call to
3973`accept-change-group' or `cancel-change-group'.
3974 3999
3975Nested use of several change groups for the same buffer works as you 4000FUN is called with one argument, the string for which completion is required,
3976would expect. Non-nested use of change groups for the same buffer 4001and it should return an alist containing all the intended possible
3977will lead to undesirable results, so don't let it happen; the first 4002completions. This alist may be a full list of possible completions so that FUN
3978change group you start for any given buffer should be the last one 4003can ignore the value of its argument. If completion is performed in the
3979finished. 4004minibuffer, FUN will be called in the buffer from which the minibuffer was
4005entered. dynamic-completion-table then computes the completion.
3980 4006
3981+++ 4007+++
3982** New variable char-property-alias-alist. 4008** The new macro lazy-completion-table initializes a variable
3983 4009as a lazy completion table.
3984This variable allows you to create alternative names for text
3985properties. It works at the same level as `default-text-properties',
3986although it applies to overlays as well. This variable was introduced
3987to implement the `font-lock-face' property.
3988 4010
3989+++ 4011 (lazy-completion-table VAR FUN &rest ARGS)
3990** New special text property `font-lock-face'.
3991 4012
3992This property acts like the `face' property, but it is controlled by 4013If the completion table VAR is used for the first time (e.g., by passing VAR
3993M-x font-lock-mode. It is not, strictly speaking, a builtin text 4014as an argument to `try-completion'), the function FUN is called with arguments
3994property. Instead, it is implemented inside font-core.el, using the 4015ARGS. FUN must return the completion table that will be stored in VAR. If
3995new variable `char-property-alias-alist'. 4016completion is requested in the minibuffer, FUN will be called in the buffer
4017from which the minibuffer was entered. The return value of
4018`lazy-completion-table' must be used to initialize the value of VAR.
3996 4019
3997+++ 4020+++
3998** New function remove-list-of-text-properties. 4021** `load-history' can now have elements of the form (t . FUNNAME),
3999 4022which means FUNNAME was previously defined as an autoload (before the
4000The new function `remove-list-of-text-properties' is almost the same 4023current file redefined it).
4001as `remove-text-properties'. The only difference is that it takes
4002a list of property names as argument rather than a property list.
4003 4024
4004+++ 4025+++
4005** New function insert-for-yank. 4026** `load-history' now records (defun . FUNNAME) when a function is
4027defined. For a variable, it records just the variable name.
4006 4028
4007This function normally works like `insert' but removes the text 4029---
4008properties in the `yank-excluded-properties' list. However, if the 4030** The variable `recursive-load-depth-limit' has been deleted.
4009inserted text has a `yank-handler' text property on the first 4031Emacs now signals an error if the same file is loaded with more
4010character of the string, the insertion of the text may be modified in 4032than 3 levels of nesting.
4011a number of ways. See the description of `yank-handler' below.
4012 4033
4013+++ 4034+++
4014** New function insert-buffer-substring-as-yank. 4035** The function symbol-file can now search specifically for function or
4015 4036variable definitions.
4016This function works like `insert-buffer-substring', but removes the
4017text properties in the `yank-excluded-properties' list.
4018 4037
4019+++ 4038+++
4020** New function insert-buffer-substring-no-properties. 4039** `provide' and `featurep' now accept an optional second argument
4040to test/provide subfeatures. Also `provide' now checks `after-load-alist'
4041and runs any code associated with the provided feature.
4021 4042
4022This function is like insert-buffer-substring, but removes all 4043+++
4023text properties from the inserted substring. 4044** `declare' is now a macro. This change was made mostly for
4045documentation purposes and should have no real effect on Lisp code.
4024 4046
4025+++ 4047+++
4026** New `yank-handler' text property may be used to control how 4048** Byte compiler changes:
4027previously killed text on the kill-ring is reinserted.
4028 4049
4029The value of the yank-handler property must be a list with one to four 4050*** The byte-compiler now displays the actual line and character
4030elements with the following format: 4051position of errors, where possible. Additionally, the form of its
4031 (FUNCTION PARAM NOEXCLUDE UNDO). 4052warning and error messages have been brought more in line with the
4053output of other GNU tools.
4032 4054
4033The `insert-for-yank' function looks for a yank-handler property on 4055*** The new macro `with-no-warnings' suppresses all compiler warnings
4034the first character on its string argument (typically the first 4056inside its body. In terms of execution, it is equivalent to `progn'.
4035element on the kill-ring). If a yank-handler property is found,
4036the normal behavior of `insert-for-yank' is modified in various ways:
4037 4057
4038 When FUNCTION is present and non-nil, it is called instead of `insert' 4058*** You can avoid warnings for possibly-undefined symbols with a
4039to insert the string. FUNCTION takes one argument--the object to insert. 4059simple convention that the compiler understands. (This is mostly
4040 If PARAM is present and non-nil, it replaces STRING as the object 4060useful in code meant to be portable to different Emacs versions.)
4041passed to FUNCTION (or `insert'); for example, if FUNCTION is 4061Write forms like the following, or code that macroexpands into such
4042`yank-rectangle', PARAM should be a list of strings to insert as a 4062forms:
4043rectangle.
4044 If NOEXCLUDE is present and non-nil, the normal removal of the
4045yank-excluded-properties is not performed; instead FUNCTION is
4046responsible for removing those properties. This may be necessary
4047if FUNCTION adjusts point before or after inserting the object.
4048 If UNDO is present and non-nil, it is a function that will be called
4049by `yank-pop' to undo the insertion of the current object. It is
4050called with two arguments, the start and end of the current region.
4051FUNCTION may set `yank-undo-function' to override the UNDO value.
4052 4063
4053+++ 4064 (if (fboundp 'foo) <then> <else>)
4054*** The functions kill-new, kill-append, and kill-region now have an 4065 (if (boundp 'foo) <then> <else)
4055optional argument to specify the yank-handler text property to put on
4056the killed text.
4057 4066
4058+++ 4067In the first case, using `foo' as a function inside the <then> form
4059*** The function yank-pop will now use a non-nil value of the variable 4068won't produce a warning if it's not defined as a function, and in the
4060`yank-undo-function' (instead of delete-region) to undo the previous 4069second case, using `foo' as a variable won't produce a warning if it's
4061yank or yank-pop command (or a call to insert-for-yank). The function 4070unbound. The test must be in exactly one of the above forms (after
4062insert-for-yank automatically sets that variable according to the UNDO 4071macro expansion), but such tests may be nested. Note that `when' and
4063element of the string argument's yank-handler text property if present. 4072`unless' expand to `if', but `cond' doesn't.
4064 4073
4065+++ 4074*** `(featurep 'xemacs)' is treated by the compiler as nil. This
4066** New function display-supports-face-attributes-p may be used to test 4075helps to avoid noisy compiler warnings in code meant to run under both
4067whether a given set of face attributes is actually displayable. 4076Emacs and XEmacs and may sometimes make the result significantly more
4077efficient. Since byte code from recent versions of XEmacs won't
4078generally run in Emacs and vice versa, this optimization doesn't lose
4079you anything.
4068 4080
4069A new predicate `supports' has also been added to the `defface' face 4081*** The local variable `no-byte-compile' in elisp files is now obeyed.
4070specification language, which can be used to do this test for faces
4071defined with defface.
4072 4082
4073--- 4083---
4074** The function face-differs-from-default-p now truly checks whether the 4084** When a Lisp file uses CL functions at run-time, compiling the file
4075given face displays differently from the default face or not (previously 4085now issues warnings about these calls, unless the file performs
4076it did only a very cursory check). 4086(require 'cl) when loaded.
4077 4087
4078+++ 4088+++
4079** face-attribute, face-foreground, face-background, and face-stipple now 4089** New function unsafep returns nil if the given Lisp form can't possibly
4080accept a new optional argument, INHERIT, which controls how face 4090do anything dangerous; otherwise it returns a reason why the form might be
4081inheritance is used when determining the value of a face attribute. 4091unsafe (calls dangerous function, alters global variable, etc).
4082 4092
4083+++ 4093+++
4084** New functions face-attribute-relative-p and merge-face-attribute 4094** There is a new Warnings facility; see the functions `warn'
4085help with handling relative face attributes. 4095and `display-warning'.
4086 4096
4087+++ 4097---
4088** The priority of faces in an :inherit attribute face-list is reversed. 4098** VC changes for backends:
4089If a face contains an :inherit attribute with a list of faces, earlier 4099*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
4090faces in the list override later faces in the list; in previous releases 4100*** The new `find-version' backend function replaces the `destfile'
4091of Emacs, the order was the opposite. This change was made so that 4101parameter of the `checkout' backend function.
4092:inherit face-lists operate identically to face-lists in text `face' 4102Old code still works thanks to a default `find-version' behavior that
4093properties. 4103uses the old `destfile' parameter.
4094 4104
4095+++ 4105+++
4096** Enhancements to process support 4106** Already true in Emacs 21.1, but not emphasized clearly enough:
4097
4098*** Function list-processes now has an optional argument; if non-nil,
4099only the processes whose query-on-exit flag is set are listed.
4100
4101*** New set-process-query-on-exit-flag and process-query-on-exit-flag
4102functions. The existing process-kill-without-query function is still
4103supported, but new code should use the new functions.
4104
4105*** Function signal-process now accepts a process object or process
4106name in addition to a process id to identify the signalled process.
4107 4107
4108*** Processes now have an associated property list where programs can 4108Multibyte buffers can now faithfully record all 256 character codes
4109maintain process state and other per-process related information. 4109from 0 to 255. As a result, most of the past reasons to use unibyte
4110buffers no longer exist. We only know of three reasons to use them
4111now:
4110 4112
4111The new functions process-get and process-put are used to access, add, 41131. If you prefer to use unibyte text all of the time.
4112and modify elements on this property list.
4113 4114
4114The new low-level functions process-plist and set-process-plist are 41152. For reading files into temporary buffers, when you want to avoid
4115used to access and replace the entire property list of a process. 4116the time it takes to convert the format.
4116 4117
4117*** Function accept-process-output now has an optional fourth arg 41183. For binary files where format conversion would be pointless and
4118`just-this-one'. If non-nil, only output from the specified process 4119wasteful.
4119is handled, suspending output from other processes. If value is an
4120integer, also inhibit running timers. This feature is generally not
4121recommended, but may be necessary for specific applications, such as
4122speech synthesis.
4123 4120
4124--- 4121---
4125*** Adaptive read buffering of subprocess output. 4122** set-buffer-file-coding-system now takes an additional argument,
4126 4123NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
4127On some systems, when emacs reads the output from a subprocess, the
4128output data is read in very small blocks, potentially resulting in
4129very poor performance. This behavior can be remedied to some extent
4130by setting the new variable process-adaptive-read-buffering to a
4131non-nil value (the default), as it will automatically delay reading
4132from such processes, to allowing them to produce more output before
4133emacs tries to read it.
4134 4124
4135+++ 4125+++
4136** Enhanced networking support. 4126** The new variable `auto-coding-functions' lets you specify functions
4137 4127to examine a file being visited and deduce the proper coding system
4138*** There is a new `make-network-process' function which supports 4128for it. (If the coding system is detected incorrectly for a specific
4139opening of stream and datagram connections to a server, as well as 4129file, you can put a `coding:' tags to override it.)
4140create a stream or datagram server inside emacs.
4141
4142- A server is started using :server t arg.
4143- Datagram connection is selected using :type 'datagram arg.
4144- A server can open on a random port using :service t arg.
4145- Local sockets are supported using :family 'local arg.
4146- Non-blocking connect is supported using :nowait t arg.
4147- The process' property list may be initialized using :plist PLIST arg;
4148 a copy of the server process' property list is automatically inherited
4149 by new client processes created to handle incoming connections.
4150
4151To test for the availability of a given feature, use featurep like this:
4152 (featurep 'make-network-process '(:type datagram))
4153
4154*** Original open-network-stream is now emulated using make-network-process.
4155
4156*** New function open-network-stream-nowait.
4157
4158This function initiates a non-blocking connect and returns immediately
4159without waiting for the connection to be established. It takes the
4160filter and sentinel functions as arguments; when the non-blocking
4161connect completes, the sentinel is called with a status string
4162matching "open" or "failed".
4163
4164*** New function open-network-stream-server.
4165
4166This function creates a network server process for a TCP service.
4167When a client connects to the specified service, a new subprocess
4168is created to handle the new connection, and the sentinel function
4169is called for the new process.
4170
4171*** New functions process-datagram-address and set-process-datagram-address.
4172
4173These functions are used with datagram-based network processes to get
4174and set the current address of the remote partner.
4175
4176*** New function format-network-address.
4177 4130
4178This function reformats the lisp representation of a network address 4131---
4179to a printable string. For example, an IP address A.B.C.D and port 4132** The new function `merge-coding-systems' fills in unspecified aspects
4180number P is represented as a five element vector [A B C D P], and the 4133of one coding system from another coding system.
4181printable string returned for this vector is "A.B.C.D:P". See the doc
4182string for other formatting options.
4183 4134
4184*** By default, the function process-contact still returns (HOST SERVICE) 4135---
4185for a network process. Using the new optional KEY arg, the complete list 4136** New coding system property `mime-text-unsuitable' indicates that
4186of network process properties or a specific property can be selected. 4137the coding system's `mime-charset' is not suitable for MIME text
4138parts, e.g. utf-16.
4187 4139
4188Using :local and :remote as the KEY, the address of the local or 4140+++
4189remote end-point is returned. An Inet address is represented as a 5 4141** New function `decode-coding-inserted-region' decodes a region as if
4190element vector, where the first 4 elements contain the IP address and 4142it is read from a file without decoding.
4191the fifth is the port number.
4192 4143
4193*** Network processes can now be stopped and restarted with 4144+++
4194`stop-process' and `continue-process'. For a server process, no 4145** Function `translate-region' accepts also a char-table as TABLE
4195connections are accepted in the stopped state. For a client process, 4146argument.
4196no input is received in the stopped state.
4197 4147
4198*** New function network-interface-list. 4148+++
4149** The new translation table `translation-table-for-input'
4150is used for customizing self-insertion. The character to
4151be inserted is translated through it.
4199 4152
4200This function returns a list of network interface names and their 4153---
4201current network addresses. 4154** New CCL functions `lookup-character' and `lookup-integer' access
4155hash tables defined by the Lisp function `define-translation-hash-table'.
4202 4156
4203*** New function network-interface-info. 4157+++
4158** The flags, width, and precision options for %-specifications in function
4159`format' are now documented. Some flags that were accepted but not
4160implemented (such as "*") are no longer accepted.
4204 4161
4205This function returns the network address, hardware address, current 4162---
4206status, and other information about a specific network interface. 4163** New function `redirect-debugging-output' can be used to redirect
4164debugging output on the stderr file handle to a file.
4207 4165
4208+++ 4166+++
4209** New function copy-tree. 4167** `makehash' is now obsolete. Use `make-hash-table' instead.
4210 4168
4211+++ 4169+++
4212** New function substring-no-properties. 4170** The macro `with-syntax-table' does not copy the table any more.
4213 4171
4214+++ 4172+++
4215** New function minibuffer-selected-window. 4173** New variables `gc-elapsed' and `gcs-done' provide extra information
4174on garbage collection.
4216 4175
4217+++ 4176+++
4218** New function `call-process-shell-command'. 4177** New function `locale-info' accesses locale information.
4219 4178
4220+++ 4179+++
4221** New function `process-file'. 4180** The new variable `print-continuous-numbering', when non-nil, says
4222 4181that successive calls to print functions should use the same
4223This is similar to `call-process', but obeys file handlers. The file 4182numberings for circular structure references. This is only relevant
4224handler is chosen based on default-directory. 4183when `print-circle' is non-nil.
4225
4226---
4227** The dummy function keys made by easymenu
4228are now always lower case. If you specify the
4229menu item name "Ada", for instance, it uses `ada'
4230as the "key" bound by that key binding.
4231
4232This is relevant only if Lisp code looks for
4233the bindings that were made with easymenu.
4234 4184
4235+++ 4185When you bind `print-continuous-numbering' to t, you should
4236** The function `commandp' takes an additional optional 4186also bind `print-number-table' to nil.
4237argument. If it is non-nil, then `commandp' checks
4238for a function that could be called with `call-interactively',
4239and does not return t for keyboard macros.
4240 4187
4241--- 4188---
4242** master-mode.el implements a minor mode for scrolling a slave 4189** When pure storage overflows while dumping, Emacs now prints how
4243buffer without leaving your current buffer, the master buffer. 4190much pure storage it will approximately need.
4244
4245It can be used by sql.el, for example: the SQL buffer is the master
4246and its SQLi buffer is the slave. This allows you to scroll the SQLi
4247buffer containing the output from the SQL buffer containing the
4248commands.
4249
4250This is how to use sql.el and master.el together: the variable
4251sql-buffer contains the slave buffer. It is a local variable in the
4252SQL buffer.
4253
4254(add-hook 'sql-mode-hook
4255 (function (lambda ()
4256 (master-mode t)
4257 (master-set-slave sql-buffer))))
4258(add-hook 'sql-set-sqli-hook
4259 (function (lambda ()
4260 (master-set-slave sql-buffer))))
4261 4191
4262+++ 4192+++
4263** File local variables. 4193** File local variables.
@@ -4266,34 +4196,47 @@ A file local variables list cannot specify a string with text
4266properties--any specified text properties are discarded. 4196properties--any specified text properties are discarded.
4267 4197
4268+++ 4198+++
4269** New function window-body-height. 4199** The variable `safe-local-eval-forms' specifies a list of forms that
4270 4200are ok to evaluate when they appear in an `eval' local variables
4271This is like window-height but does not count the mode line 4201specification. Normally Emacs asks for confirmation before evaluating
4272or the header line. 4202such a form, but if the form appears in this list, no confirmation is
4203needed.
4273 4204
4274+++ 4205---
4275** New function format-mode-line. 4206** If a function has a non-nil `safe-local-eval-function' property,
4207that means it is ok to evaluate some calls to that function when it
4208appears in an `eval' local variables specification. If the property
4209is t, then any form calling that function with constant arguments is
4210ok. If the property is a function or list of functions, they are called
4211with the form as argument, and if any returns t, the form is ok to call.
4276 4212
4277This returns the mode-line or header-line of the selected (or a 4213If the form is not "ok to call", that means Emacs asks for
4278specified) window as a string with or without text properties. 4214confirmation as before.
4279 4215
4280+++ 4216+++
4281** Functions `get' and `plist-get' no longer signals an error for 4217** Renamed hooks to better follow the naming convention:
4282a malformed property list. They also detect cyclic lists. 4218find-file-hooks to find-file-hook,
4219find-file-not-found-hooks to find-file-not-found-functions,
4220write-file-hooks to write-file-functions,
4221write-contents-hooks to write-contents-functions,
4222x-lost-selection-hooks to x-lost-selection-functions,
4223x-sent-selection-hooks to x-sent-selection-functions.
4224Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
4283 4225
4284+++ 4226+++
4285** New functions `lax-plist-get' and `lax-plist-put'. 4227** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
4286 4228It was renamed to follow the naming conventions for abnormal hooks. The old
4287These functions are like `plist-get' and `plist-put' except that they 4229name remains available as an alias, but has been marked obsolete.
4288compare the property name using `equal' rather than `eq'.
4289 4230
4290+++ 4231+++
4291** New function `tool-bar-local-item-from-menu' 4232** The new function `file-remote-p' tests a file name and returns
4233non-nil if it specifies a remote file (one that Emacs accesses using
4234its own special methods and not directly through the file system).
4235The value in that case is an identifier for the remote file system.
4292 4236
4293The `tool-bar-add-item-from-menu' must not be used (as previously 4237+++
4294recommended) for making entries in the tool bar for local keymaps. 4238** Functions `get' and `plist-get' no longer signals an error for
4295Instead, use the function `tool-bar-local-item-from-menu', which lets 4239a malformed property list. They also detect cyclic lists.
4296you specify the map to use as an argument.
4297 4240
4298+++ 4241+++
4299** The function `atan' now accepts an optional second argument. 4242** The function `atan' now accepts an optional second argument.
@@ -4303,19 +4246,10 @@ angle in radians between the vector [X, Y] and the X axis. (This is
4303equivalent to the standard C library function `atan2'.) 4246equivalent to the standard C library function `atan2'.)
4304 4247
4305+++ 4248+++
4306** You can now make a window as short as one line. 4249** New function format-mode-line.
4307
4308A window that is just one line tall does not display either a mode
4309line or a header line, even if the variables `mode-line-format' and
4310`header-line-format' call for them. A window that is two lines tall
4311cannot display both a mode line and a header line at once; if the
4312variables call for both, only the mode line actually appears.
4313 4250
4314+++ 4251This returns the mode-line or header-line of the selected (or a
4315** The new frame parameter `tty-color-mode' specifies the mode to use 4252specified) window as a string with or without text properties.
4316for color support on character terminal frames. Its value can be a
4317number of colors to support, or a symbol. See the Emacs Lisp
4318Reference manual for more detailed documentation.
4319 4253
4320+++ 4254+++
4321** The new mode-line construct `(:propertize ELT PROPS...)' can be 4255** The new mode-line construct `(:propertize ELT PROPS...)' can be
@@ -4338,260 +4272,244 @@ indentation of keywords and forms in loop forms.
4338cl-indent package. See the new user option `lisp-backquote-indentation'. 4272cl-indent package. See the new user option `lisp-backquote-indentation'.
4339 4273
4340+++ 4274+++
4341** Already true in Emacs 21.1, but not emphasized clearly enough: 4275** field-beginning and field-end now accept an additional optional
4276argument, LIMIT.
4342 4277
4343Multibyte buffers can now faithfully record all 256 character codes 4278+++
4344from 0 to 255. As a result, most of the past reasons to use unibyte 4279** define-abbrev now accepts an optional argument SYSTEM-FLAG. If
4345buffers no longer exist. We only know of three reasons to use them 4280non-nil, this marks the abbrev as a "system" abbrev, which means that
4346now: 4281it won't be stored in the user's abbrevs file if he saves the abbrevs.
4282Major modes that predefine some abbrevs should always specify this
4283flag.
4347 4284
43481. If you prefer to use unibyte text all of the time. 4285---
4286** describe-vector now takes a second argument `describer' which is
4287called to print the entries' values. It defaults to `princ'.
4349 4288
43502. For reading files into temporary buffers, when you want to avoid 4289+++
4351the time it takes to convert the format. 4290** defcustom and other custom declarations now use a default group
4291(the last prior group defined in the same file) when no :group was given.
4352 4292
43533. For binary files where format conversion would be pointless and 4293---
4354wasteful. 4294** The new customization type `float' specifies numbers with floating
4295point (no integers are allowed).
4355 4296
4356+++ 4297+++
4357** If text has a `keymap' property, that keymap takes precedence 4298** emacsserver now runs pre-command-hook and post-command-hook when
4358over minor mode keymaps. 4299it receives a request from emacsclient.
4359 4300
4360+++ 4301---
4361** A hex escape in a string forces the string to be multibyte. 4302** New function `text-clone-create'. Text clones are chunks of text
4362An octal escape makes it unibyte. 4303that are kept identical by transparently propagating changes from one
4304clone to the other.
4363 4305
4364+++ 4306+++
4365** At the end of a command, point moves out from within invisible 4307** Functions `user-uid' and `user-real-uid' now return floats if the
4366text, in the same way it moves out from within text covered by an 4308user UID doesn't fit in a Lisp integer. Function `user-full-name'
4367image or composition property. 4309accepts a float as UID parameter.
4368 4310
4369This makes it generally unnecessary to mark invisible text as intangible. 4311+++
4370This is particularly good because the intangible property often has 4312** New vars `exec-suffixes' and `load-suffixes' used when
4371unexpected side-effects since the property applies to everything 4313searching for an executable resp. an elisp file.
4372(including `goto-char', ...) whereas this new code is only run after
4373post-command-hook and thus does not care about intermediate states.
4374 4314
4375+++ 4315+++
4376** field-beginning and field-end now accept an additional optional 4316** Functions from `post-gc-hook' are run at the end of garbage
4377argument, LIMIT. 4317collection. The hook is run with GC inhibited, so use it with care.
4378 4318
4379+++ 4319+++
4380** define-abbrev now accepts an optional argument SYSTEM-FLAG. If 4320** The variables most-positive-fixnum and most-negative-fixnum
4381non-nil, this marks the abbrev as a "system" abbrev, which means that 4321hold the largest and smallest possible integer values.
4382it won't be stored in the user's abbrevs file if he saves the abbrevs.
4383Major modes that predefine some abbrevs should always specify this
4384flag.
4385 4322
4386--- 4323---
4387** Support for Mocklisp has been removed. 4324** On MS Windows, locale-coding-system is used to interact with the OS.
4325The Windows specific variable w32-system-coding-system, which was
4326formerly used for that purpose is now an alias for locale-coding-system.
4388 4327
4389--- 4328---
4390** The function insert-string is now obsolete. 4329** New function x-send-client-message sends a client message when
4330running under X.
4391 4331
4392--- 4332---
4393** The precedence of file-name-handlers has been changed. 4333** easy-mmode-define-global-mode has been renamed to
4394Instead of blindly choosing the first handler that matches, 4334define-global-minor-mode. The old name remains as an alias.
4395find-file-name-handler now gives precedence to a file-name handler
4396that matches near the end of the file name. More specifically, the
4397handler whose (match-beginning 0) is the largest is chosen.
4398In case of ties, the old "first matched" rule applies.
4399 4335
4400--- 4336---
4401** Dense keymaps now handle inheritance correctly. 4337** To manipulate the File menu using easy-menu, you must specify the
4402Previously a dense keymap would hide all of the simple-char key 4338proper name "file". In previous Emacs versions, you had to specify
4403bindings of the parent keymap. 4339"files", even though the menu item itself was changed to say "File"
4340several versions ago.
4404 4341
4405--- 4342---
4406** jit-lock obeys a new text-property `jit-lock-defer-multiline'. 4343** The dummy function keys made by easymenu are now always lower case.
4407If a piece of text with that property gets contextually refontified 4344If you specify the menu item name "Ada", for instance, it uses `ada'
4408(see jit-lock-defer-contextually), then all of that text will 4345as the "key" bound by that key binding.
4409be refontified. This is useful when the syntax of a textual element
4410depends on text several lines further down (and when font-lock-multiline
4411is not appropriate to solve that problem). For example in Perl:
4412
4413 s{
4414 foo
4415 }{
4416 bar
4417 }e
4418 4346
4419Adding/removing the last `e' changes the `bar' from being a piece of 4347This is relevant only if Lisp code looks for the bindings that were
4420text to being a piece of code, so you'd put a jit-lock-defer-multiline 4348made with easymenu.
4421property over the second half of the command to force (deferred)
4422refontification of `bar' whenever the `e' is added/removed.
4423 4349
4424--- 4350---
4425** describe-vector now takes a second argument `describer' which is 4351** `easy-menu-define' now allows you to use nil for the symbol name
4426called to print the entries' values. It defaults to `princ'. 4352if you don't need to give the menu a name. If you install the menu
4353into other keymaps right away (MAPS is non-nil), it usually doesn't
4354need to have a name.
4355
4356** New functions, macros, and commands:
4427 4357
4428+++ 4358+++
4429** defcustom and other custom declarations now use a default group 4359*** The new function `assoc-string' replaces `assoc-ignore-case' and
4430(the last prior group defined in the same file) when no :group was given. 4360`assoc-ignore-representation', which are still available, but have
4361been declared obsolete.
4431 4362
4432+++ 4363+++
4433** emacsserver now runs pre-command-hook and post-command-hook when 4364*** The new function `buffer-local-value' returns the buffer-local
4434it receives a request from emacsclient. 4365binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
4366have a buffer-local binding in buffer BUFFER, it returns the default
4367value of VARIABLE instead.
4435 4368
4436--- 4369+++
4437** The variable `recursive-load-depth-limit' has been deleted. 4370*** The new function `called-interactively-p' does what many people
4438Emacs now signals an error if the same file is loaded with more 4371have mistakenly believed `interactive-p' did: it returns t if the
4439than 3 levels of nesting. 4372calling function was called through `call-interactively'. This should
4373only be used when you cannot add a new "interactive" argument to the
4374command.
4440 4375
4441--- 4376*** The new function copy-abbrev-table returns a new abbrev table that
4442** If a major mode function has a non-nil `no-clone-indirect' 4377is a copy of a given abbrev table.
4443property, `clone-indirect-buffer' signals an error if you use
4444it in that buffer.
4445 4378
4446--- 4379+++
4447** In `replace-match', the replacement text no longer inherits 4380*** New function copy-tree makes a copy of a tree, recursively copying
4448properties from surrounding text. 4381both cars and cdrs.
4449 4382
4450+++ 4383+++
4451** The list returned by `(match-data t)' now has the buffer as a final 4384*** New function `delete-dups' destructively removes `equal'
4452element, if the last match was on a buffer. `set-match-data' 4385duplicates from a list. Of several `equal' occurrences of an element
4453accepts such a list for restoring the match state. 4386in the list, the first one is kept.
4454 4387
4455+++ 4388+++
4456** New function `buffer-local-value'. 4389*** The new function `filter-buffer-substring' extracts a buffer
4390substring, passes it through a set of filter functions, and returns
4391the filtered substring. It is used instead of `buffer-substring' or
4392`delete-and-extract-region' when copying text into a user-accessible
4393data structure, like the kill-ring, X clipboard, or a register. The
4394list of filter function is specified by the new variable
4395`buffer-substring-filters'. For example, Longlines mode uses
4396`buffer-substring-filters' to remove soft newlines from the copied
4397text.
4457 4398
4458This function returns the buffer-local binding of VARIABLE (a symbol) 4399+++
4459in buffer BUFFER. If VARIABLE does not have a buffer-local binding in 4400*** New functions frame-current-scroll-bars and window-current-scroll-bars.
4460buffer BUFFER, it returns the default value of VARIABLE instead.
4461 4401
4462--- 4402These functions return the current locations of the vertical and
4463** New function `text-clone-create'. Text clones are chunks of text 4403horizontal scroll bars in a frame or window.
4464that are kept identical by transparently propagating changes from one
4465clone to the other.
4466 4404
4467+++ 4405+++
4468** font-lock can manage arbitrary text-properties beside `face'. 4406*** The new primitive `get-internal-run-time' returns the processor
4469*** the FACENAME returned in font-lock-keywords can be a list 4407run time used by Emacs since start-up.
4470of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
4471other properties than `face'.
4472*** font-lock-extra-managed-props can be set to make sure those extra
4473properties are automatically cleaned up by font-lock.
4474
4475---
4476** The special treatment of faces whose names are of the form `fg:COLOR'
4477or `bg:COLOR' has been removed. Lisp programs should use the
4478`defface' facility for defining faces with specific colors, or use
4479the feature of specifying the face attributes :foreground and :background
4480directly in the `face' property instead of using a named face.
4481 4408
4482+++ 4409+++
4483** The new function `run-mode-hooks' and the new macro `delay-mode-hooks' 4410*** The new function insert-buffer-substring-as-yank works like
4484are used by define-derived-mode to make sure the mode hook for the 4411`insert-buffer-substring', but removes the text properties in the
4485parent mode is run at the end of the child mode. 4412`yank-excluded-properties' list.
4486 4413
4487+++ 4414+++
4488** define-minor-mode now accepts arbitrary additional keyword arguments 4415*** The new function insert-buffer-substring-no-properties is like
4489and simply passes them to defcustom, if applicable. 4416insert-buffer-substring, but removes all text properties from the
4417inserted substring.
4490 4418
4491+++ 4419+++
4492** define-derived-mode by default creates a new empty abbrev table. 4420*** The new functions `lax-plist-get' and `lax-plist-put' are like
4493It does not copy abbrevs from the parent mode's abbrev table. 4421`plist-get' and `plist-put', except that they compare the property
4422name using `equal' rather than `eq'.
4494 4423
4495+++ 4424+++
4496** `provide' and `featurep' now accept an optional second argument 4425*** New function `line-number-at-pos' returns the line number of the
4497to test/provide subfeatures. Also `provide' now checks `after-load-alist' 4426current line in the current buffer, or if optional buffer position is
4498and runs any code associated with the provided feature. 4427given, line number of corresponding line in current buffer.
4499 4428
4500+++ 4429+++
4501** Functions `file-name-sans-extension' and `file-name-extension' now 4430*** New function `looking-back' checks whether a regular expression matches
4502ignore the leading dots in file names, so that file names such as 4431the text before point. Specifying the LIMIT argument bounds how far
4503`.emacs' are treated as extensionless. 4432back the match can start; this is a way to keep it from taking too long.
4504 4433
4505+++ 4434+++
4506** Functions `user-uid' and `user-real-uid' now return floats if the 4435*** New function `macroexpand-all' expands all macros in a form.
4507user UID doesn't fit in a Lisp integer. Function `user-full-name' 4436It is similar to the Common-Lisp function of the same name.
4508accepts a float as UID parameter. 4437One difference is that it guarantees to return the original argument
4438if no expansion is done, which may be tested using `eq'.
4509 4439
4510--- 4440*** The new function `minibufferp' returns non-nil if its optional
4511** `define-key-after' now accepts keys longer than 1. 4441buffer argument is a minibuffer. If the argument is omitted, it
4442defaults to the current buffer.
4512 4443
4513+++ 4444+++
4514** The local variable `no-byte-compile' in elisp files is now obeyed. 4445*** New function minibuffer-selected-window returns the window which
4446was selected when entering the minibuffer.
4515 4447
4516+++ 4448+++
4517** The Emacs Lisp byte-compiler now displays the actual line and 4449*** The new function `modify-all-frames-parameters' modifies parameters
4518character position of errors, where possible. Additionally, the form 4450for all (existing and future) frames.
4519of its warning and error messages have been brought more in line with
4520the output of other GNU tools.
4521 4451
4522+++ 4452+++
4523** New functions `keymap-prompt' and `current-active-maps'. 4453*** New functions posn-at-point and posn-at-x-y return
4454click-event-style position information for a given visible buffer
4455position or for a given window pixel coordinate.
4524 4456
4525--- 4457---
4526** New function `describe-buffer-bindings'. 4458*** New function quail-find-key returns a list of keys to type in the
4459current input method to input a character.
4527 4460
4528+++ 4461+++
4529** New vars `exec-suffixes' and `load-suffixes' used when 4462*** The new function `rassq-delete-all' deletes all elements from an
4530searching for an executable resp. an elisp file. 4463alist whose cdr is `eq' to a specified value.
4531 4464
4532+++ 4465+++
4533** Variable aliases have been implemented: 4466*** The new function remove-list-of-text-properties is almost the same
4534 4467as `remove-text-properties'. The only difference is that it takes a
4535*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] 4468list of property names as argument rather than a property list.
4536
4537This function defines the symbol ALIAS-VAR as a variable alias for
4538symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
4539returns the value of BASE-VAR, and changing the value of ALIAS-VAR
4540changes the value of BASE-VAR.
4541
4542DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
4543the same documentation as BASE-VAR.
4544
4545*** indirect-variable VARIABLE
4546
4547This function returns the variable at the end of the chain of aliases
4548of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
4549defined as an alias, the function returns VARIABLE.
4550
4551It might be noteworthy that variables aliases work for all kinds of
4552variables, including buffer-local and frame-local variables.
4553 4469
4554+++ 4470+++
4555** Functions from `post-gc-hook' are run at the end of garbage 4471*** The new primitive `set-file-times' sets a file's access and
4556collection. The hook is run with GC inhibited, so use it with care. 4472modification times. Magic file name handlers can handle this
4473operation.
4557 4474
4558+++ 4475+++
4559** If the second argument to `copy-file' is the name of a directory, 4476*** New function substring-no-properties returns a substring without
4560the file is copied to that directory instead of signaling an error. 4477text properties.
4561 4478
4562+++ 4479+++
4563** The variables most-positive-fixnum and most-negative-fixnum 4480*** The new function syntax-after returns the syntax code
4564hold the largest and smallest possible integer values. 4481of the character after a specified buffer position, taking account
4482of text properties as well as the character code.
4565 4483
4566--- 4484+++
4567** On MS Windows, locale-coding-system is used to interact with the OS. 4485*** `syntax-class' extracts the class of a syntax code (as returned
4568The Windows specific variable w32-system-coding-system, which was 4486by syntax-after).
4569formerly used for that purpose is now an alias for locale-coding-system.
4570 4487
4571--- 4488+++
4572** Functions y-or-n-p, read-char, read-key-sequence and the like, that 4489*** New function `tool-bar-local-item-from-menu'
4573display a prompt but don't use the minibuffer, now display the prompt
4574using the text properties (esp. the face) of the prompt string.
4575 4490
4576--- 4491The `tool-bar-add-item-from-menu' must not be used (as previously
4577** New function x-send-client-message sends a client message when 4492recommended) for making entries in the tool bar for local keymaps.
4578running under X. 4493Instead, use the function `tool-bar-local-item-from-menu', which lets
4494you specify the map to use as an argument.
4579 4495
4580+++ 4496+++
4581** Arguments for remove-overlays are now optional, so that you can remove 4497*** New function window-body-height.
4582all overlays in the buffer by just calling (remove-overlay). 4498This is like window-height but does not count the mode line
4499or the header line.
4583 4500
4584** New packages: 4501+++
4502*** (while-no-input BODY...) runs BODY, but only so long as no input
4503arrives. If the user types or clicks anything, BODY stops as if a
4504quit had occurred. while-no-input returns the value of BODY, if BODY
4505finishes. It returns nil if BODY was aborted.
4585 4506
4586+++ 4507+++
4587*** The new package gdb-ui.el provides an enhanced graphical interface to 4508*** New macro with-local-quit temporarily sets inhibit-quit to nil for use
4588GDB. You can interact with GDB through the GUD buffer in the usual way, but 4509around potentially blocking or long-running code in timers
4589there are also further buffers which control the execution and describe the 4510and post-command-hooks.
4590state of your program. It separates the input/output of your program from
4591that of GDB and watches expressions in the speedbar. It also uses features of
4592Emacs 21 such as the display margin for breakpoints, and the toolbar.
4593 4511
4594Use M-x gdba to start GDB-UI. 4512** New packages:
4595 4513
4596*** The new package syntax.el provides an efficient way to find the 4514*** The new package syntax.el provides an efficient way to find the
4597current syntactic context (as returned by parse-partial-sexp). 4515current syntactic context (as returned by parse-partial-sexp).
@@ -4611,6 +4529,54 @@ implemented by widget.el, and can be used by lisp code that doesn't
4611require the full power of widgets. Emacs uses buttons for such things 4529require the full power of widgets. Emacs uses buttons for such things
4612as help and apropos buffers. 4530as help and apropos buffers.
4613 4531
4532---
4533*** master-mode.el implements a minor mode for scrolling a slave
4534buffer without leaving your current buffer, the master buffer.
4535
4536It can be used by sql.el, for example: the SQL buffer is the master
4537and its SQLi buffer is the slave. This allows you to scroll the SQLi
4538buffer containing the output from the SQL buffer containing the
4539commands.
4540
4541This is how to use sql.el and master.el together: the variable
4542sql-buffer contains the slave buffer. It is a local variable in the
4543SQL buffer.
4544
4545(add-hook 'sql-mode-hook
4546 (function (lambda ()
4547 (master-mode t)
4548 (master-set-slave sql-buffer))))
4549(add-hook 'sql-set-sqli-hook
4550 (function (lambda ()
4551 (master-set-slave sql-buffer))))
4552
4553+++
4554*** New Lisp library testcover.el works with edebug to help you determine
4555whether you've tested all your Lisp code. Function testcover-start
4556instruments all functions in a given file. Then test your code. Function
4557testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
4558show where coverage is lacking. Command testcover-next-mark (bind it to
4559a key!) will move point forward to the next spot that has a splotch.
4560
4561Normally, a red splotch indicates the form was never completely
4562evaluated; a brown splotch means it always evaluated to the same
4563value. The red splotches are skipped for forms that can't possibly
4564complete their evaluation, such as `error'. The brown splotches are
4565skipped for forms that are expected to always evaluate to the same
4566value, such as (setq x 14).
4567
4568For difficult cases, you can add do-nothing macros to your code to
4569help out the test coverage tool. The macro `noreturn' suppresses a
4570red splotch. It is an error if the argument to `noreturn' does
4571return. The macro 1value suppresses a brown splotch for its argument.
4572This macro is a no-op except during test-coverage -- then it signals
4573an error if the argument actually returns differing values.
4574
4575---
4576** Support for Mocklisp has been removed.
4577
4578---
4579** The function insert-string is now obsolete.
4614 4580
4615* Installation changes in Emacs 21.3 4581* Installation changes in Emacs 21.3
4616 4582