comparison etc/NEWS @ 90159:08185296b491

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