Handle system default font and changing font parameters.
[bpt/emacs.git] / etc / NEWS
1 GNU Emacs NEWS -- history of user-visible changes.
2
3 Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
4 See the end of the file for license conditions.
5
6 Please send Emacs bug reports to emacs-pretest-bug@gnu.org.
7 If possible, use M-x report-emacs-bug.
8
9 This file is about changes in Emacs version 23.
10
11 See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17
12 for changes in older Emacs versions.
13
14 You can narrow news to a specific version by calling `view-emacs-news'
15 with a prefix argument or by typing C-u C-h C-n.
16
17
18 Temporary note:
19 +++ indicates that the appropriate manual has already been updated.
20 --- means no change in the manuals is called for.
21 When you add a new item, please add it without either +++ or ---
22 so we will look at it and add it to the manual.
23
24 \f
25 * Installation Changes in Emacs 23.2
26
27 ** New configure options for Emacs developers
28 These are not new features; only the configure flags are new.
29
30 *** --enable-profiling builds Emacs with profiling enabled.
31 This might not work on all platforms.
32
33 *** --enable-checking[=OPTIONS] builds emacs with extra runtime checks.
34
35 ---
36 ** `make install' now consistently ignores umask, creating a
37 world-readable install.
38
39 * Startup Changes in Emacs 23.2
40
41 ** Command-line option -Q (--quick) now also disables loading X resources.
42 Note however that this does not affect Lucid or Motif widgets, if you
43 are using those toolkits. On Windows, this option causes Emacs to
44 ignore Registry settings, though environment variables set on the
45 Registry are still honored.
46
47 *** The new variable `inhibit-x-resources' shows whether X resources
48 were loaded.
49
50 * Changes in Emacs 23.2
51
52 ** The maximum size of buffers (as well as the largest fixnum) is doubled.
53 On typical 32bit systems, buffers can now be up to 512MB.
54
55 ** Function arguments in *Help* buffers are now in uppercase by default.
56 You can customize the new variable `help-downcase-arguments' to change it.
57
58 ** Unibyte sessions are now considered obsolete.
59 I.e. the use of the environment variable EMACS_UNIBYTE, or command line
60 arguments --unibyte, --multibyte, --no-multibyte, and --no-unibyte
61 is deprecated. Similarly for custom-izing enable-multibyte-characters, or
62 setting default-enable-multibyte-characters.
63
64 ** The default value of `trash-directory' has changed to nil, which
65 means that `move-file-to-trash' trashes files according to
66 freedesktop.org specifications, the same method used by the Gnome,
67 KDE, and XFCE desktops. (This change has no effect on Windows, which
68 uses `system-move-file-to-trash' for trashing.)
69
70 +++
71 ** Emacs frames can be maximized.
72 The command line arguments -mm/--maximized and the value maximized to the
73 frame parameter fullscreen makes the Emacs frame maximized.
74
75 +++
76 ** New frame parameter sticky makes Emacs frames sticky in virtual desktops.
77
78 ** The pointer now becomes invisible when typing.
79 Customize make-pointer-invisible to turn it off.
80
81 ** Emacs can use the system default monospaced font in Gnome.
82 The use of the system default font can be turned on or off by customizing
83 the variable 'font-use-system-font'. It is off by default.
84 If the system default is changed, Emacs changes also.
85 This requires that gconf-support is built in. If configure finds the
86 gconf-libraries, that support is included. Gconf-support can be
87 turned off with the configure option --without-gconf.
88
89 ** Emacs now reacts to Xft-changes made by configuration tools on X11.
90 Changes to antialias, hinting, hintstyle, RGBA, DPI and lcdfilter are
91 handeled. The XSETTINGS mechanism is used to implement this.
92
93 ** Killing a buffer with a running process now asks for confirmation.
94 You can remove this query in two ways: either remove
95 `process-kill-buffer-query-function' from `kill-buffer-query-functions',
96 or set the appropriate process flag with `set-process-query-on-exit-flag'.
97
98 ** The variable `load-in-progress' won't get corrupted by binding it
99 with `let'. In certain situations, loading an Emacs Lisp file from
100 source while in the midst of loading another file (e.g., with
101 `require' or `autoload') could cause the value of `load-in-progress'
102 to be corrupted once the outer load completed. Most code doesn't care
103 about this, but some (like c-mode) may check it.
104
105 ** File-local variable changes
106
107 *** Specifying a minor mode as a local variables enables that mode,
108 unconditionally. The previous behavior, toggling the mode, was
109 neither reliable nor generally desirable.
110
111 *** New commands for adding and removing file-local variables:
112 `add-file-local-variable', `delete-file-local-variable',
113 `add-file-local-variable-prop-line', and
114 `delete-file-local-variable-prop-line'.
115
116 *** New commands for adding and removing directory-local variables,
117 and copying them to and from file-local variable lists:
118 `add-dir-local-variable', `delete-dir-local-variable',
119 `copy-dir-locals-to-file-locals',
120 `copy-dir-locals-to-file-locals-prop-line' and
121 `copy-file-locals-to-dir-locals'.
122
123 ** New coding system `utf-8-hfs' is available in
124 international/ucs-normalize.el. It is suitable for
125 default-file-name-coding-system on Mac OS X.
126
127 \f
128 * Editing Changes in Emacs 23.2
129
130 ** Selection changes
131 +++
132 *** If `select-active-regions' is t, any active region automatically
133 becomes the primary selection (for interaction with other window
134 applications). If you enable this, you might want to bind
135 `mouse-yank-primary' to Mouse-2.
136
137 *** When `save-interprogram-paste-before-kill' is non-nil, emacs will
138 not clobber the the interprogram paste when something is killed in it
139 by saving the former in the `kill-ring' before the latter.
140
141 ** When `kill-do-not-save-duplicates' is non-nil, identical subsequent
142 kills are not duplicated in the `kill-ring'.
143
144 +++
145 ** The default value for `blink-matching-paren-distance' has been increased.
146
147 ** The new completion-style `initials' is available.
148 For instance, this can complete M-x lch to list-command-history.
149
150 \f
151 * Changes in Specialized Modes and Packages in Emacs 23.2
152
153 ** lucid.el and levents.el are now declared obsolete.
154
155 ** pcomplete provides a new command `pcomplete-std-completion' which
156 is similar to `pcomplete' but using the standard completion UI code.
157
158 ** .calc.el and .abbrev_defs obey user-emacs-directory.
159
160 ** Calc graphing commands (`g f' etc.) now work on MS-Windows,
161 if you have the native Windows port of Gnuplot version 3.8 or later
162 installed.
163
164 ** Calendar and diary
165
166 *** Fancy diary display is now the default.
167 If you prefer the simple display, customize `diary-display-function'.
168
169 *** The diary's fancy display now enables view-mode.
170
171 ---
172 *** The command `calendar-current-date' accepts an optional argument
173 giving an offset from today.
174
175 ** Desktop
176 ---
177 *** The default value for `desktop-buffers-not-to-save' is nil.
178 This means Desktop will try restoring all buffers, when you restart
179 your Emacs session. Also, `desktop-buffers-not-to-save' is only
180 effective for buffers that have no associated file. If you want to
181 exempt buffers that do correspond to files, customize the value of
182 `desktop-files-not-to-save' instead.
183
184 ** FIXME mail-user-agent change
185 This probably affects a lot of documentation.
186
187 ** FIXME gdb-mi
188
189 ** Info
190
191 *** The new command `Info-virtual-index' bound to "I" displays a menu of
192 matched topics found in the index.
193
194 *** The new command `info-finder' replaces finder.el with a virtual Info
195 manual that generates an Info file which gives the same information
196 through a menu structure.
197
198 +++
199 ** New connection methods in Tramp.
200 The new connection methods "rsyncc", "imap" and "imaps" have been
201 introduced. On systems which support GVFS-Fuse, Tramp offers also the
202 new connection methods "dav", "davs", "obex" and "synce".
203
204 ** nXML mode is now the default for editing XML files.
205
206 ** VC and related modes
207
208 *** When using C-x v v or C-x v i on a unregistered file that is in a
209 directory not controlled by any VCS, ask the user what VC backend to
210 use to create a repository, create a new repository and register the
211 file.
212
213 *** FIXME: add info about the new VC functions: vc-root-diff and
214 vc-root-print-log once they stabilize.
215
216 *** The log functions (C-x v l and C-x v L) do not show the full log
217 by default anymore. The number of entries shown can be chosen
218 interactively with a prefix argument, by customizing
219 vc-log-show-limit. The log buffer display buttons that can be used
220 to change the number of entries shown.
221 RCS, SCCS, CVS and Git do not support this feature.
222
223 *** vc-annotate supports annotations through file copies and renames,
224 it displays the old names for the files and it can show logs/diffs for
225 the corresponding lines. Currently only Git and Mercurial take
226 advantage of this feature.
227
228 *** When a file is not found, VC will not try to check it out of RCS anymore.
229
230 *** vc-git changes
231
232 **** The new variable vc-git-add-signoff can be used to add a
233 Signed-off-by line when committing.
234
235 **** Support for operating with stashes has been added to vc-dir: the stash list is
236 displayed in the *vc-dir* header, stashes can be created, removed and
237 their content displayed.
238
239 **** vc-dir displays the stash status
240
241 *** log-edit-strip-single-file-name controls whether or not single filenames
242 are stripped when copying text from the ChangeLog to the *VC-Log* buffer.
243
244 ** Elint
245
246 ---
247 *** Elint now uses compilation-mode.
248
249 ---
250 *** Elint can now scan individual files and whole directories,
251 and can be run in batch mode.
252
253 ---
254 *** Elint does a more thorough initialization, and recognizes more built-in
255 functions and variables. Customize `elint-scan-preloaded' if you want
256 to sacrifice some accuracy for a faster startup.
257
258 ---
259 *** Elint attempts some basic understanding of featurep and (f)boundp tests.
260
261 ---
262 *** Customize `elint-ignored-warnings' to suppress some warnings.
263
264 ** Miscellaneous
265
266 *** The new command `async-shell-command' bound globally to `M-&' executes
267 the command asynchronously without the need to manually add ampersand to
268 the end of the command. Its output appears in the buffer `*Async Shell
269 Command*'.
270
271 +++
272 *** Autorevert Tail mode now works now for remote files.
273
274 \f
275 * New Modes and Packages in Emacs 23.2
276
277 ** FIXME CEDET
278
279 ** js.el is a new major mode for JavaScript files.
280
281 ** imap-hash.el is a new library to address IMAP mailboxes as hashtables.
282
283 \f
284 * Incompatible Lisp Changes in Emacs 23.2
285
286 ** Several obsolete functions removed.
287 The functions have been obsolete since Emacs 19, and are unlikely to
288 be in use:
289
290 time-stamp-month-dd-yyyy, time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy
291 time-stamp-dd-mon-yy, time-stamp-yy/mm/dd, time-stamp-yyyy/mm/dd,
292 time-stamp-yyyy-mm-dd, time-stamp-yymmdd, time-stamp-hh:mm:ss,
293 time-stamp-hhmm, baud-rate
294
295 ---
296 ** Support for generating Emacs 18 compatible bytecode (by setting
297 the variable `byte-compile-compatibility') has been removed.
298
299 \f
300 * Lisp changes in Emacs 23.2
301
302 ** The 4th arg to all-completions (aka hide-spaces) is declared obsolete.
303
304 ** read-file-name-predicate is obsolete. It was used to pass the predicate
305 to read-file-name-internal because read-file-name-internal abused its `pred'
306 argument to pass the current directory, but this hack is not needed
307 any more.
308
309 ** completion-base-size is obsoleted by completion-base-position.
310 This change causes a few backward incompatibilities, mostly with
311 choose-completion-string-functions where the `mini-p' argument has
312 been replaced by a `base-position' argument, and where the `base-size'
313 argument is now always nil.
314
315 ** called-interactively-p now takes one argument and replaces interactive-p
316 which is now marked obsolete.
317 ** New function set-advertised-calling-convention makes it possible
318 to obsolete arguments as well as make some arguments mandatory.
319 ** eval-next-after-load is obsolete.
320 ** New hook `after-load-functions' run after loading an Elisp file.
321
322 ** You can control which binding is preferentially shown in menus and
323 docstrings by adding a `:advertised-binding' property to the corresponding
324 command's symbol. That property can hold a single binding or a list
325 of bindings.
326
327 ** New macro with-silent-modifications to tweak text properties without
328 affecting the buffer's modification state.
329 ** All the default-FOO variables that hold the default value of the FOO
330 variable, are now declared obsolete.
331
332 ** read-key is a function halfway between read-event and read-key-sequence.
333 It reads a single key, but obeys input and escape sequence decoding.
334
335 ** start-process-shell-command and start-file-process-shell-command
336 now only take a single `command' argument.
337
338 ** The variable `process-file-side-effects' shall be bound to nil, if
339 a `process-file' call does not change a remote file. By this, file
340 name handlers like Tramp can apply optimizations.
341
342 ** Hash tables have a new printed representation that is readable.
343 The feature `hashtable-print-readable' identifies this new
344 functionality.
345
346 ** Functions performing Unicode normalization are added. They are:
347 ucs-normalize-NFD-region, ucs-normalize-NFD-string,
348 ucs-normalize-NFC-region, ucs-normalize-NFC-string,
349 ucs-normalize-NFKD-region, ucs-normalize-NFKD-string,
350 ucs-normalize-NFKC-region, ucs-normalize-NFKC-string,
351 ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFD-string,
352 ucs-normalize-HFS-NFC-region, ucs-normalize-HFS-NFC-string.
353
354 ** completion-annotate-function specifies how to compute annotations
355 for completions displayed in *Completions*.
356
357 +++
358 ** Face aliases can now be marked as obsolete, using the macro
359 `define-obsolete-face-alias'.
360
361 ---
362 ** Changing the file-names generated by byte-compilation by redefining
363 the function `byte-compile-dest-file' before loading bytecomp.el is obsolete.
364 Instead, customize byte-compile-dest-file-function.
365
366 ---
367 ** `byte-compile-warnings' can have a new member, `constants'.
368
369 ** `delete-directory' has an optional parameter RECURSIVE.
370
371 ** New function `copy-directory', which copies a directory recursively.
372
373 +++
374 ** New function `window-full-height-p', analogous to the full-width version.
375
376 \f
377 * Changes in Emacs 23.2 on non-free operating systems
378
379 ---
380 ** On MS-Windows, `display-time' now displays the system load average
381 as well as the time, as it does on GNU and Unix.
382
383 \f
384 * Installation Changes in Emacs 23.1
385
386 ** The default X toolkit is now Gtk+, rather than Lucid.
387 The configure option `--with-gtk' has been removed. Gtk is now the
388 default toolkit, but you can use --with-x-toolkit=gtk if necessary.
389
390 ** New font code.
391 Fonts are handled by new code capable of dealing with multiple font
392 backends. This uses the freetype and fontconfig libraries.
393
394 *** Emacs now accepts font names supplied in the fontconfig format
395 (e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12").
396
397 *** Added support for local fonts (fonts installed on the machine
398 where Emacs is running).
399
400 *** Added support for the Xft library for antialiasing.
401
402 *** Added support for the otf library for complex text layout by
403 OpenType fonts.
404
405 *** Added support for the m17n library for text shaping.
406
407 ** Changes to image support
408
409 *** configure now checks for libgif before libungif when searching for
410 a GIF library.
411
412 *** Emacs now supports the SVG image format through librsvg2.
413
414 *** Emacs now supports multi-page TIFF images.
415
416 ** New NeXTSTEP-based port
417 This provides support for GNUstep (via the GNUstep libraries) and Mac
418 OS X (via the Cocoa libraries).
419
420 Specify --with-ns to configure for this. By default, a self-contained
421 app will be built (containing all lisp). To install/share lisp with
422 other emacsen (e.g. X11 build) use --disable-ns-self-contained. See
423 nextstep/README and nextstep/INSTALL in the Emacs source directory.
424
425 ** Mac OS X is no longer supported via Carbon.
426 Use the NeXTSTEP port, described above.
427
428 ** The new configuration option "--with-dbus" enables D-Bus language
429 bindings for Emacs.
430
431 ** Support for many obsolete platforms has been removed.
432 See the list at the end of etc/MACHINES for details.
433
434 *** Support for systems without alloca has been removed.
435
436 *** Support for Sun windows has been removed.
437
438 *** The `emacstool' utility has been removed.
439
440 ** The following platforms will be removed in a future Emacs version:
441 If you are still using Emacs on one of these platforms, please email
442 emacs-devel@gnu.org to inform the Emacs developers.
443
444 *** Old GNU/Linux systems based on libc version 5.
445
446 *** Old FreeBSD, NetBSD, and OpenBSD systems based on the COFF
447 executable format.
448
449 *** Solaris versions 2.6 and below.
450
451 *** Solaris on IBM RS6000 machines.
452
453 *** UNIX System V (the original SysV, not later platforms based on it).
454
455 *** Unixware on non-x86 machines.
456
457 *** Platforms not supporting shared libraries (i.e., requiring the
458 NO_SHARED_LIBS compilation flag).
459
460 ** The configure options `--with-gcc', `--without-gcc' have been removed.
461 Configure will use gcc by default. Set the CC environment variable if
462 you need control over which C compiler is used.
463
464 ** The refcards are now shipped as PDF files.
465
466 ** The manuals are now licensed under the GNU Free Documentation License v1.3,
467 or any later version.
468
469 ** Emacs 23 comes with a new set of default icons.
470 Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
471 The Emacs 22 icon is available as `emacs22.png' in the same location.
472 \f
473 * Changes in Emacs 23.1
474
475 ** Improved X Window System support
476
477 *** Emacs now supports using both X displays and ttys in one session.
478 With an Emacs server active (M-x server-start), `emacsclient -t'
479 creates a tty frame connected to the running emacs server. You can
480 use any number of different ttys. `emacsclient -c' creates a new X11
481 frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set).
482 There may be problems if a display exits unexpectedly and Emacs is compiled
483 with Gtk+, see etc/PROBLEMS.
484
485 You can test for the presence of this feature in your Lisp code by
486 testing for the `multi-tty' feature.
487
488 *** Emacs starts in the background, as a daemon, when given the
489 --daemon command line argument. It disconnects from the terminal and
490 starts the server. Clients can connect and create graphical or
491 terminal frames using emacsclient.
492
493 **** emacsclient starts emacs in daemon mode and connects to it when
494 --alternate-editor="" is used (or when the evironment variable
495 ALTERNATE_EDITOR is set to "") and emacsclient cannot connect to an
496 emacs server.
497
498 *** The new command close-display-connection closes a connection to a
499 remote display. There are some bugs for Gtk+. See etc/PROBLEMS.
500
501 *** Emacs now supports the XEmbed specification.
502 You can embed Emacs in another application on X11. The new command line
503 option --parent-id is used to pass the parent window id to Emacs. See
504 http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
505 for details about XEmbed.
506
507 *** Emacs can now set the frame opacity.
508 The opacity of a frame can be controlled by setting the `alpha' frame
509 parameter. This only takes effect on a compositing window manager for
510 the X Window System, such as Compiz, Beryl and Compiz Fusion, on Mac
511 OS X, or on Windows 2000 and later versions of Windows.
512
513 The alpha parameter should be an integer between 0 (transparent) and
514 100 (opaque), or a float number between 0.0 and 1.0. It can also be a
515 cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an
516 active frame and INACTIVE is the opacity of non-active frames.
517
518 The variable `frame-alpha-lower-limit' defines a lower bound for the
519 opacity; the default is 20.
520
521 ** Internationalization changes
522
523 *** The Emacs character set is now a superset of Unicode.
524 (It has about four times the code space, which should be plenty).
525
526 The internal encoding used for buffers and strings is now
527 Unicode-based and called `utf-8-emacs' (`emacs-internal' is an alias
528 for this). This encoding is backward-compatible with Unicode's UTF-8
529 encoding. The internal encoding previously used by Emacs,
530 `emacs-mule', is still available for reading and writing files.
531
532 During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files.
533 As a result, byte-compiled files containing non-ASCII characters can't
534 be read by earlier versions of Emacs. Files compiled by Emacs 20, 21,
535 or 22 are loaded correctly as `emacs-mule' (whether or not they
536 contain multibyte characters). This takes somewhat more time, so it
537 may be worth recompiling existing .elc files which don't need to be
538 shared with older Emacsen.
539
540 *** There are new coding systems/aliases; see M-x list-coding-systems.
541
542 *** There is a new charset implementation with many new charsets.
543 See M-x list-character-sets. New charsets can be defined conveniently
544 as tables of unicodes.
545
546 *** There are new language environments for Chinese-GBK,
547 Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu,
548 Sinhala, and TaiViet.
549
550 *** The minor modes unify-8859-on-encoding-mode and
551 unify-8859-on-decoding-mode are obsolete.
552
553 *** `ucs-insert' is bound to `C-x 8 RET' and in addition to hex numbers
554 accepts numbers in hash notation (e.g. #o21430 for octal, or #10r8984 for
555 decimal). It also accepts Unicode character names with completion.
556
557 *** The `cyrillic-translit' input method supports many new characters.
558 Common typographical characters available from Unicode were added to
559 `cyrillic-translit': punctuation marks, accented characters, fractions,
560 and others.
561
562 ** Emacs now supports serial port access on GNU/Linux, Unix, and
563 Windows. The new command `serial-term' starts an interactive terminal
564 on a serial port. The serial port can be configured at runtime with
565 the mode-line mouse menu.
566
567 ** Menu Bar changes
568
569 *** In the Options menu, the "Set Default Font" item applies the
570 selected font to the `default' face on all frames, not just the
571 current frame. Furthermore, if Emacs is compiled with both GTK and
572 Fontconfig support, the "Set Default Font" item uses the GTK font
573 selection dialog instead of an Emacs pop-up menu.
574
575 *** The font setting chosen by "Set Default Font" is saved if the
576 "Save Options" item is used.
577
578 *** The Tools menu contains a new Encryption/Decryption submenu.
579 This contains commands provided by EasyPG, the newly-included
580 interface to GnuPG (see New Modes and Packages).
581
582 *** In the Options menu, the "Truncate Long Lines in the Buffer" entry
583 has been replaced with a submenu offering three different ways to
584 handle long lines: truncation, continuation at the window edge, and
585 the new word wrapping behavior (see Editing Changes, below).
586
587 *** Improvements to menus for major and minor modes
588 More major and minor modes now have a mode specific menu, and existing
589 mode menus have been improved to include more functionality.
590
591 ** Mode-line changes
592
593 *** The mode-line displays a `@', instead of `-', if the
594 default-directory for the current buffer is on a remote machine.
595
596 *** The mode-line displays a mode menu when mouse-1 is clicked on a
597 minor mode, in the same way as it already did for major modes.
598
599 *** The `mode-line-emphasis' face is used to highlight certain
600 mode-line information (e.g. waiting for a VC command to finish).
601
602 *** The mode-line tooltips have been improved to provide more details.
603
604 *** The VC, line/colum number and minor mode indicators on the mode
605 line are now interactive: mouse-1 can be used on them to pop up a menu.
606
607 ** File deletion can make use of the Recycle Bin or system Trash folder.
608 Set `delete-by-moving-to-trash' non-nil to use this. Deleted files
609 and directories will then be sent to the Recycle Bin on Windows, and
610 to `trash-directory' on other systems.
611
612 ** Directory-local variables can now be defined.
613 By default, Emacs looks in .dir-locals.el for directory-local
614 variables. For more information, see `dir-locals-set-directory-class'
615 and `dir-locals-set-class-variables'.
616
617 ** Emacs can now use `auth-source' for authentication.
618 `smtpmail' and `url' (Tramp and Gnus also) use `auth-source' to obtain
619 login names and passwords. The match, if found, is reported
620 in *Messages* with the password blanked out.
621
622 ** `where-is-preferred-modifier' can specify your favorite modifier.
623
624 \f
625 * Startup Changes in Emacs 23.1
626
627 ** The option `inhibit-startup-screen' (with aliases to old names
628 `inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit
629 display of the initial message in the *scratch* buffer. If you don't
630 want to display the initial message in the *scratch* buffer at startup,
631 you can set the option `initial-scratch-message' to nil.
632
633 ** New user option `initial-buffer-choice' specifies what to display
634 after starting Emacs: startup screen, *scratch* buffer, visiting a
635 file or directory.
636
637 ** New alias `argv' for `command-line-args-left'
638 This is a convenience alias, so that one can write `(pop argv)'
639 inside of --eval command line arguments in order to access
640 following arguments.
641
642 ** The abbrev file is no longer read at startup in batch mode.
643
644 ** Emacs now supports invocation by an X session manager.
645 It can save a session and restore it later. See the documentation of
646 the functions `emacs-session-save' and `emacs-session-restore'.
647 (Actually, this feature was introduced with Emacs 22, but it was not
648 documented.)
649 \f
650 * Incompatible Editing Changes in Emacs 23.1
651
652 ** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&'
653 on the regexp command prefix map.
654
655 ** In Dired-x, all command guesses for ! are now added to the default
656 list accessible by M-n instead of pushing all guesses temporarily into
657 the history list.
658
659 ** In Isearch mode, a special case of typing `C-w' at the beginning of
660 the minibuffer that toggles word search (i.e. using key sequences
661 `C-s RET C-w' or `C-s M-e C-w') is obsolete. You can use the global key
662 `M-s w' to start word search, or type `M-s w' in Isearch mode to
663 toggle word search. To start nonincremental word search you can now use
664 `M-s w RET' and `M-s w C-r RET' instead of `C-s RET C-w' and `C-r RET C-w'.
665
666 ** In Info, `Info-search' is unbound from `M-s' to allow using `M-s w'
667 for word search as well as other search commands from the global prefix
668 key `M-s'. `Info-search' is still bound to `s', and also incremental
669 search commands `C-s', `C-M-s', `C-r', `C-M-r' are available for searching
670 through multiple Info nodes, together with their nonincremental versions
671 `C-s RET', `C-r RET', `C-M-s RET', `C-M-r RET', `M-s w RET'.
672
673 ** In Text mode, `center-line' and `center-paragraph' are rebound from
674 `M-s' and `M-S' to global keys `M-o M-s' and `M-o M-S' on the global
675 prefix map `M-o', which is intended for such formatting commands.
676
677 ** The following input methods were removed in Emacs 22.2, but this was
678 not advertised: danish-alt-postfix, esperanto-alt-postfix,
679 finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
680 norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
681 and swedish-alt-postfix. Use the versions without "alt-", which are
682 identical.
683
684 \f
685 * Editing Changes in Emacs 23.1
686
687 ** The C-n and C-p line-motion commands now move by screen lines,
688 taking continued lines and variable-width characters into account.
689 Setting `line-move-visual' to nil reverts this to the previous
690 behavior (i.e., motion by logical lines based on buffer contents
691 alone).
692
693 ** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now
694 invokes `suspend-frame'. These changes are for compatibility with the
695 new multi-tty support (see `Improved X Window System support' above).
696
697 ** Mark changes
698
699 *** Transient Mark mode is now on by default.
700
701 *** mark-even-if-inactive now defaults to t
702
703 *** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without
704 activating it.
705
706 *** When Transient Mark mode is on, M-q now fills the region if the
707 region is active. Otherwise, it fills the current paragraph.
708
709 *** When Transient Mark mode is on, M-$ now checks spelling of the
710 region if the region is active. Otherwise, it checks spelling of the
711 word at point.
712
713 *** When Transient Mark mode is on, TAB now indents the region if the
714 region is active.
715
716 *** The variable `use-empty-active-region' controls whether an empty
717 active region in Transient Mark mode should make commands operate on
718 that empty region.
719
720 ** Temporarily active regions
721
722 *** The new variable shift-select-mode, non-nil by default, controls
723 shift-selection. When Shift Select mode is on, shift-translated
724 motion keys (e.g. S-left and S-down) activate and extend a temporary
725 region, similar to mouse-selection.
726
727 *** Temporarily active regions, created using shift-selection or
728 mouse-selection, are not necessarily deactivated in the next command.
729 They are only deactivated after point motion commands that are not
730 shift-translated, or after commands that would ordinarily deactivate
731 the mark in Transient Mark mode (e.g., any command that modifies the
732 buffer).
733
734 ** Minibuffer and completion changes
735
736 *** Emacs may ask for confirmation before opening a non-existent file
737 or buffer. By default, Emacs requests confirmation if you type RET
738 immediately after TAB, and the resulting input is not an existing file
739 or buffer; this usually happens when the minibuffer input did not
740 complete far enough and you entered RET by mistake. In that case,
741 Emacs puts the message "[Confirm]" in the minibuffer; type RET again
742 to create the file or buffer.
743
744 The new variable confirm-nonexistent-file-or-buffer determines whether
745 Emacs asks for confirmation. The default value is `after-completion'.
746 If you change it to t, Emacs always asks for confirmation; if you
747 change it to nil, Emacs never asks for confirmation.
748
749 *** The rules for performing completion have been changed.
750 When generating completion alternatives, Emacs now takes the
751 minibuffer text after point, if any, into account: this text is
752 treated as a substring of the remaining part of the completion
753 alternative (i.e., the part not matched by the minibuffer text before
754 point). If no completion alternatives are found this way, Emacs
755 attempts to perform partial-completion. If still no completion
756 alternatives are found, we fall back on the Emacs 22 rules for
757 performing completion.
758
759 The new variable `completion-styles' can be customized to choose your
760 favorite completion style.
761
762 *** When M-n in the minibuffer reaches the end of the list of defaults,
763 it adds the completion list to the end, so next M-n continues putting
764 completion items to the minibuffer. The same principle applies to
765 incremental search commands as well: C-s or C-M-s starts searching
766 the default values and after the end of defaults they continue
767 searching minibuffer completion items.
768
769 *** Minibuffer input of shell commands now comes with completion.
770
771 *** In the `C-x d' (Dired) prompt, typing M-n gives the visited file
772 name of the current buffer.
773
774 *** In the M-! (shell-command) prompt, M-n provides some default commands.
775 These are guessed using the file extension of the current file, based
776 on the file-handlers specified in the operating system's `mailcap'
777 file. The ! command in Dired (dired-do-shell-command) works
778 similarly, using the file displayed on the current line.
779
780 *** A list of regexp default values is available via M-n for `occur',
781 `keep-lines', `flush-lines' and `how-many'. This list includes the active
782 region in transient-mark-mode, the word under the cursor, the last Isearch
783 regexp, the last Isearch string and the last replacement regexp.
784
785 *** When enable-recursive-minibuffers is non-nil, operations which use
786 switch-to-buffer (such as C-x b and C-x C-f) do not fail any more when
787 used in a minibuffer or a dedicated window. Instead, they fallback on
788 using pop-to-buffer, which will use some other window. This change
789 has no effect when enable-recursive-minibuffers is nil (the default).
790
791 *** Isearch started in the minibuffer searches in the minibuffer history.
792 Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer
793 history elements, and forward Isearch commands (C-s, C-M-s) search in
794 next history elements. When the reverse search reaches the first history
795 element, it wraps to the last history element, and the forward search
796 wraps to the first history element. When the search is terminated, the
797 history element containing the search string becomes the current.
798
799 *** The variable read-file-name-completion-ignore-case overrides
800 completion-ignore-case for file name completion.
801
802 *** The variable read-buffer-completion-ignore-case overrides
803 completion-ignore-case for buffer name completion.
804
805 *** The new command `minibuffer-force-complete' chooses one of the
806 possible completions, rather than stopping at the common prefix.
807
808 *** If `completion-auto-help' is `lazy', Emacs shows the completions
809 buffer only on the second attempt to complete. This was already
810 supported in `partial-completion-mode'.
811
812 ** Face changes
813
814 *** S-down-mouse-1 now pops up a menu for changing the font and text
815 size of the default face in the current buffer. The face is changed
816 via face remapping (see Lisp changes, below).
817
818 *** New commands to change the default face size in the current buffer.
819 To increase it, type `C-x C-+' or `C-x C-='. To decrease it, type
820 `C-x C--'. To restore the default (global) face size, type `C-x C-0'.
821 These work via Text Scale mode, a new minor mode.
822
823 The final key in the above commands may be repeated without the
824 leading `C-x', e.g. `C-x C-= C-= C-=' increases the face height by
825 three steps. Each step scales the height of the default face by the
826 value of the variable `text-scale-mode-step'.
827
828 *** The commands buffer-face-mode and buffer-face-set can be used to
829 remap the default face in the current buffer. See "Buffer Face mode",
830 under New Modes and Packages.
831
832 ** Primary selection changes
833
834 *** You can disable kill ring commands from accessing the primary
835 selection by setting `x-select-enable-primary' to nil.
836
837 ** Continuation lines can now be wrapped at word boundaries
838 (word-wrapping). This is controlled by the new per-buffer variable
839 `word-wrap'. Word wrapping does not take place if continuation lines
840 are not shown, e.g. if truncate-lines is non-nil. The most convenient
841 way to enable word-wrapping is using the new minor mode Visual Line
842 mode; in addition to setting `word-wrap' to t, this rebinds some
843 editing commands to work on screen lines rather than text lines. See
844 New Modes and Packages, below.
845
846 ** Window management changes
847
848 *** truncate-partial-width-windows now accepts integer values, which
849 specify a minimum window width for partial-width windows, below which
850 lines are truncated. The default has been changed to 50.
851
852 *** The new command balance-windows-area balances windows both
853 vertically and horizontally.
854
855 *** pop-to-buffer now always sets input focus when the popped-to window
856 is on a different frame.
857
858 ** Miscellaneous changes:
859
860 *** C-l is bound to the new command recenter-top-bottom, rather than recenter.
861 This moves the current line to window center, top and bottom on
862 successive invocations.
863
864 *** scroll-preserve-screen-position also preserves the column position.
865
866 *** If `yank-pop-change-selection' is t, rotating the kill ring also
867 updates the selection or clipboard to the current yank, just as M-w
868 would do so with the text it copies to the kill ring.
869
870 *** C-M-% now shows replacement as it would look in the buffer, with
871 `\N' and `\&' substituted according to the match. Old behavior can be
872 restored by customizing `query-replace-show-replacement'.
873
874 *** The command shell prompts for the default directory, when it is
875 called with a prefix and the default directory is a remote file name.
876 This is because some file name handlers (like ange-ftp) are not able to
877 run processes remotely.
878
879 *** The new command kill-matching-buffers kills buffers whose name
880 matches a regexp.
881
882 *** The value of comment-style now defaults to `indent'.
883 Thefore, comment-start markers are inserted at the current indentation
884 of the region to comment, rather than the leftmost column.
885
886 *** The new commands `pp-macroexpand-expression' and
887 `pp-macroexpand-last-sexp' pretty-print macro expansions.
888
889 *** The new command `set-file-modes' allows to set file's mode bits.
890 The mode bits can be specified in symbolic notation, like with GNU
891 Coreutils, in addition to an octal number. `chmod' is a new
892 convenience alias for this function.
893
894 *** `next-error-recenter' specifies how next-error should recenter the
895 visited source file. Its value can be a number (for example, 0 for
896 top line, -1 for bottom line), or nil for no recentering.
897
898 *** When typing in a password in the echo area, C-y yanks the current
899 kill into the password.
900
901 *** Tooltip frame parameters `font' and `color' in `tooltip-frame-parameters'
902 are ignored. Customize the `tooltip' face instead.
903
904 *** `mkdir' is a new convenience alias for `make-directory'.
905 \f
906 * New Modes and Packages in Emacs 23.1
907
908 ** Auto Composition Mode is a minor mode that composes characters
909 automatically when they are displayed. It is globally on by default.
910 It uses `auto-composition-function' (default `auto-compose-chars').
911
912 ** Bubbles, a new game, is similar to SameGame.
913
914 ** Buffer Face mode is a minor mode for remapping the default face in
915 the current buffer. The variable `buffer-face-mode-face' specifies
916 the face to remap to. The command `buffer-face-set' prompts for a
917 face name, sets `buffer-face-mode-face' to it, and enables
918 buffer-face-mode. See "Face changes", under Editing Changes, for a
919 description of face remapping.
920
921 ** butterfly flips the desired bit on the drive platter.
922 See http://xkcd.com/378/
923
924 ** bug-reference.el provides clickable links to bug reports.
925
926 ** dbus.el provides D-Bus language bindings.
927 D-Bus is an inter-process communication mechanism for applications
928 residing on the same host. See the manual for details.
929
930 ** DocView mode allows viewing of PDF, PostScript and DVI documents.
931 One can also search for a regular expression in the document. For
932 details, see the commentary in doc-view.el.
933
934 PDF and DVI files are now opened in Doc View mode by default.
935
936 In Postcript mode, C-c C-c launches Doc View minor mode for viewing
937 the postscript file.
938
939 ** EasyPG provides an interface to the GNU Privacy Guard (GnuPG).
940 It includes a GnuPG keyring browser, cryptographic operations on
941 regions and files, and automatic encryption of *.gpg files. For
942 details, see the EasyPG Assistant User's Manual.
943
944 ** json.el is a library for parsing and generating JSON
945 (JavaScript Object Notation), a lightweight data-interchange format.
946
947 ** linum.el is a new minor mode to display line numbers for the
948 current buffer.
949
950 ** mairix.el is an interface to mairix, a free tool for indexing and
951 searching locally stored mail. It allows you to query mairix and
952 display the search results with Rmail, Gnus and VM. Note that there
953 is an existing Gnus back end, nnmairix.el, which should be used with
954 Maildir/MH setups.
955
956 ** minibuffer-depth-indicate-mode shows the minibuffer depth in the prompt.
957
958 ** nXML Mode
959 This is a new mode for editing XML documents. It allows a schema to
960 be associated with the XML document being edited, using Relax NG as
961 the schema language. The schema is used to provide two key features:
962
963 *** Continuous validation. nXML validates as you type, highlighting
964 any invalid parts of your document.
965
966 *** Completion. nXML can assist you in entering an element name,
967 attribute name or data value by using information about what is
968 allowed by the schema in that context.
969
970 ** proced.el provides a Dired-like interface for operating on
971 processes. Proced makes an Emacs buffer containing a listing of the
972 current processes. You can use the normal Emacs commands to move
973 around in this buffer, and special Proced commands to operate on the
974 processes listed. It is currently only functional on GNU/Linux,
975 MS-Windows and Solaris.
976
977 ** Remember Mode is a mode for jotting down things to remember.
978 Notes can be saved to a Diary file. For details, see the Remember
979 Manual.
980
981 ** RST mode is a major mode for editing reStructuredText files.
982
983 ** Ruby mode is a major mode for Ruby files.
984
985 ** Visual Line mode provides support for editing by visual lines.
986 It turns on word-wrapping in the current buffer, and rebinds C-a, C-e,
987 and C-k to commands that operate by visual lines instead of logical
988 lines. This is a more reliable replacement for longlines-mode.
989 This can also be turned on using the menu bar, via
990 Options -> Line Wrapping in this Buffer -> Word Wrap
991
992 ** xesam.el is an implementation of Xesam, an interface to (desktop)
993 search engines like Beagle, Strigi, and Tracker. The Xesam API
994 requires D-Bus for communication.
995
996 ** zeroconf.el offers service discovery and service publishing
997 interfaces according to the zeroconf specification. It communicates
998 with Avahi, a zeroconf implementation, via D-Bus messages on systems
999 which have installed this software.
1000
1001 ** There is a new `whitespace' package.
1002 (The pre-existing one has been renamed to `old-whitespace'.)
1003 Now, besides reporting bogus blanks, the whitespace package has a
1004 minor mode and a global minor mode to visualize blanks (TAB, (HARD)
1005 SPACE and NEWLINE). The visualization is made via faces and/or display
1006 table. It can also indicate lines that extend beyond a given column,
1007 trailing blanks, and empty lines at the start or end of a buffer.
1008 See `whitespace-style' for more details. The `whitespace-action' option
1009 specifies what to do when a buffer is visited, killed, or written.
1010
1011 \f
1012 * Changes in Specialized Modes and Packages in Emacs 23.1
1013
1014 ** Abbrev has been rewritten in Elisp and extended with more flexibility.
1015
1016 *** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
1017 abbrev-table-p, abbrev-insert, abbrev-table-menu.
1018
1019 *** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
1020
1021 *** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
1022 extra arguments for arbitrary properties.
1023
1024 *** New variable `abbrev-minor-mode-table-alist'.
1025
1026 *** `local-abbrev-table' can hold a list of abbrev-tables.
1027
1028 *** Abbrevs have now the following special properties:
1029 `:count', `:system', `:enable-function', `:case-fixed'.
1030
1031 *** Abbrev-tables have now the following special properties:
1032 `:parents', `:case-fixed', `:enable-function', `:regexp',
1033 `abbrev-table-modiff'.
1034
1035 ** Apropos
1036
1037 *** `apropos-library' describes the elements defined in a given library.
1038
1039 *** Set `apropos-compact-layout' is you want a more compact (but wider) layout.
1040
1041 ** Archive Mode has basic support to browse Rar archives.
1042 Note, however, that the free version of the unrar command only handles
1043 versions 1 and 2 of the Rar format.
1044
1045 ** BibTeX mode
1046
1047 *** New command `bibtex-initialize' (re)initializes BibTeX buffers.
1048
1049 *** New `bibtex-entry-format' options `whitespace', `braces', and
1050 `string', disabled by default.
1051
1052 *** New variable `bibtex-cite-matcher-alist' contains rules to
1053 identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
1054
1055 *** Command `bibtex-url' allows multiple URLs per entry.
1056
1057 ** Bookmarks
1058
1059 *** bookmark.el saves bookmarks in a pre-Emacs-23-incompatible file format
1060 bookmark.el can read a .emacs.bmk file saved by an older Emacs, but an
1061 older Emacs cannot read one saved by Emacs 23.
1062
1063 ** Calendar and diary
1064
1065 *** There is a new date style, `iso', essentially year/month/day.
1066 The variable `european-calendar-style' is obsolete - use `calendar-date-style'.
1067 Similarly, the commands `american-calendar' and `european-calendar'
1068 should be replaced by `calendar-set-date-style'.
1069
1070 *** The calendar namespace has been rationalized.
1071 All functions and variables now begin with a `calendar-', `diary-', or
1072 `holiday-' prefix. The various calendar systems have secondary
1073 prefixes, eg `calendar-french-'. The old names you are likely to use
1074 directly still exist, for the time being, as aliases, but please start
1075 using the new names.
1076
1077 *** The whitespace in the calendar layout can be customized.
1078 See the variables:
1079 calendar-left-margin, calendar-intermonth-spacing, calendar-column-width,
1080 calendar-day-header-width, and calendar-day-digit-width.
1081
1082 *** Text (e.g. ISO weeks) can be displayed between the calendar months.
1083 See the variables calendar-intermonth-header and calendar-intermonth-text.
1084
1085 *** The function `holiday-chinese' computes holidays on the Chinese calendar.
1086 It has been used to add items to the list `holiday-oriental-holidays'.
1087
1088 *** `diary-remind' accepts a negative number -DAYS as a shorthand for
1089 the list (1 2 ... DAYS).
1090
1091 ** Change Log mode
1092
1093 *** The new command C-c C-f (change-log-find-file) finds the file
1094 associated with the current log entry.
1095
1096 *** The new command C-c C-c (change-log-goto-source) goes to the
1097 source code associated with a log entry.
1098
1099 ** Compile and grep modes
1100
1101 *** The mode-line entry for the *compilation* and *grep* buffer is color coded.
1102 It has different colors for to show that: (a) the command is still
1103 running, (b) successful completion, (c) error.
1104
1105 *** compilation-auto-jump-to-first-error tells `compile' to jump to
1106 the first error encountered during compilations.
1107
1108 *** compilation-scroll-output accepts a new value, `first-error', which
1109 says to stop auto scrolling at the first error that occurs.
1110
1111 *** The `cc' alias for C++ files in `grep-file-aliases' has been
1112 improved. `hh' can be used to match C++ header files and `cchh' both
1113 C++ sources and headers.
1114
1115 ** Copyright
1116
1117 *** You can specify your copyright holders' names.
1118 Only copyright lines with holders matching `copyright-names-regexp' are
1119 considered for update.
1120
1121 *** Copyrights can be at the end of the buffer.
1122 This is controlled by `copyright-at-end-flag' (used by, e.g., change-log-mode).
1123
1124 ** Custom
1125
1126 *** defcustom accepts new keyword arguments, `:safe' and `:risky', which
1127 set a variable's `safe-local-variable' and `risky-local-variable' property.
1128
1129 ** Diff mode
1130
1131 *** diff-refine-hunk highlights word-level details of changes in a diff hunk.
1132 It's used automatically as you move through hunks, see
1133 diff-auto-refine-mode. It is bound to `C-c C-b'.
1134
1135 *** diff-add-change-log-entries-other-window iterates through the diff
1136 buffer and tries to create ChangeLog entries for each change.
1137 It is bound to `C-x 4 A'.
1138
1139 *** Turning on `whitespace-mode' in a diff buffer will show trailing
1140 whitespace problems in the modified lines.
1141
1142 ** Dired
1143
1144 *** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode,
1145 and C-x C-q in wdired-mode exits it with asking a question about
1146 saving changes.
1147
1148 *** `&' runs the command `dired-do-async-shell-command' that executes
1149 the command asynchronously without the need to manually add ampersand
1150 to the end of the command. Its output appears in the buffer `*Async Shell
1151 Command*'.
1152
1153 *** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names.
1154 When a new user option `dired-isearch-filenames' is t, then even ordinary
1155 Isearch started with `C-s' and `C-M-s' matches only at file names in the
1156 Dired buffer. When `dired-isearch-filenames' is `dwim' then activation of
1157 file name Isearch depends on the position of point - if point is on a file
1158 name initially, then Isearch matches only file names, otherwise it matches
1159 everywhere in the Dired buffer. You can toggle file names matching on or
1160 off by typing `M-s f' in Isearch mode.
1161
1162 *** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files.
1163 They visit the first marked file in the sequence and display the usual Isearch
1164 prompt for a string or a regexp where all Isearch commands are available.
1165
1166 *** `Q' in Dired provides two new keys for multi-file replacement.
1167 The upper case key `Y' replaces all remaining matches in all remaining files
1168 with no more questions. The upper case key `N' stops doing replacements
1169 in the current file and skips to the next file. These multi-file keys
1170 are available for all commands that use `tags-query-replace'
1171 including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp',
1172 `reftex-query-replace-document'.
1173
1174 ** Fortran
1175
1176 *** The line length of fixed-form Fortran is not fixed at 72 any more.
1177 Customize the variable `fortran-line-length' to change it.
1178
1179 *** In Fortran mode, M-; is now bound to the standard comment-dwim,
1180 rather than fortran-indent-comment.
1181
1182 *** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
1183
1184 ** Gnus
1185
1186 *** The Gnus package has been updated
1187 There are many news features, bug fixes and improvements; see the file
1188 GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
1189
1190 *** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for
1191 saving articles drafts and ~/.newsrc.eld. These file may not be read
1192 correctly in Emacs 22 and below. If you want to Gnus across different Emacs
1193 versions, you may set `mm-auto-save-coding-system' to `emacs-mule'.
1194
1195 *** Passwords are consistently loaded through `auth-source'
1196 Gnus can use `auth-source' for POP and IMAP passwords. Also see that
1197 `smtpmail' and `url' support `auth-source' for SMTP and HTTP/HTTPS/RSS
1198 authentication respectively.
1199
1200 ** Help mode
1201
1202 *** New macro `with-help-window' should set up help windows better
1203 than `with-output-to-temp-buffer' with `print-help-return-message'.
1204
1205 *** New option `help-window-select' permits to customize whether help
1206 window shall be automatically selected when invoking help.
1207
1208 *** New variable `help-window-point-marker' permits one to specify a new
1209 position for point in help window (for example in `view-lossage').
1210
1211 ** Isearch
1212
1213 *** New command `isearch-forward-word' bound globally to `M-s w' starts
1214 incremental word search. New command `isearch-toggle-word' bound to the
1215 same key `M-s w' in Isearch mode toggles word searching on or off
1216 while Isearch is active.
1217
1218 *** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch
1219 mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current
1220 search string as its regexp argument. The same key `M-s h r' and
1221 other keys on the `M-s h' prefix are bound globally to the command
1222 `highlight-regexp' and other hi-lock commands.
1223
1224 *** New command `isearch-occur' bound to `M-s o' in Isearch mode
1225 runs `occur' with the current search string. The same key `M-s o'
1226 is bound globally to the command `occur'.
1227
1228 *** Isearch can now search through multiple ChangeLog files.
1229 When running Isearch in a ChangeLog file, if the search fails,
1230 then another C-s tries searching the previous ChangeLog,
1231 if there is one (e.g. going from ChangeLog to ChangeLog.12).
1232 This is enabled if multi-isearch-search is non-nil.
1233
1234 *** Two new commands to start Isearch on a list of marked buffers
1235 for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and
1236 `M-s a M-C-s'.
1237
1238 *** The part of an Isearch that failed to match is highlighted in
1239 `isearch-fail' face.
1240
1241 *** `C-h C-h' in Isearch mode displays isearch-specific Help screen,
1242 `C-h b' displays all Isearch key bindings, `C-h k' displays the full
1243 documentation of the given Isearch key sequence, `C-h m' displays
1244 documentation of Isearch mode. All the rest Help commands exit Isearch mode
1245 and execute their global definitions.
1246
1247 *** When started in the minibuffer, Isearch searches in the minibuffer
1248 history. See `Minibuffer changes', above.
1249
1250 ** MH-E
1251
1252 *** Upgraded to MH-E version 8.2. See MH-E-NEWS for details.
1253
1254 ** Python
1255 *** The file etc/emacs.py now supports both Python 2 and 3, meaning
1256 that either version can be used as inferior Python by python.el.
1257
1258 *** Python mode now has `pdbtrack' functionality. When using pdb to
1259 debug a Python program, pdbtrack notices the pdb prompt and displays
1260 the source file and line that the program is stopped at, much the same
1261 way as gud-mode does for debugging C programs with gdb.
1262
1263 ** Recentf
1264
1265 *** The default value of `recentf-keep' prevents from checking of
1266 remote files, if there is no established connection to the
1267 corresponding remote host.
1268
1269 ** Rmail
1270
1271 *** Rmail no longer converts the messages to Babyl format.
1272 Instead, it uses UNIX mbox format, both on disk and in Rmail buffers,
1273 and does conversion and decoding when a message is displayed.
1274
1275 The first time you visit an Rmail file in Babyl format, Rmail
1276 automatically converts it to mbox format. This is a one-time
1277 conversion, but it can take a few minutes, depending on how fast is
1278 your machine and on the size of the file. You should find the rest of
1279 Rmail usage unaltered.
1280
1281 However, M-x set-rmail-inbox-list now lasts only for one session
1282 because there is no way to save the list of inbox files in an
1283 mbox-format file.
1284
1285 Also, whereas with Babyl format M-x find-file would switch to Rmail
1286 mode, with mbox format this is no longer the case (there being no way
1287 to add an "-*- rmail-*-" cookie to an mbox file). Use C-u M-x rmail
1288 instead.
1289
1290 If you have written any extensions to Rmail, they are likely to need
1291 updating. Conceptually, the Rmail buffer that you see is no longer
1292 just a narrowed portion of the whole. So you cannot access the whole
1293 of a message (or message collection) by a simple save-restriction and
1294 widen. Instead, there are two buffers: the rmail-buffer, and the
1295 rmail-view-buffer. The former is the buffer that you see, the latter
1296 is invisible. Most of the time, the invisible `view' buffer contains
1297 the full contents of the Rmail file, and the Rmail buffer contains a
1298 decoded copy of the current message (with only a subset of the
1299 headers). In this state, Rmail is said to be `swapped'.
1300
1301 You may find the following functions useful:
1302
1303 `rmail-get-header' and `rmail-set-header' get or set the value of a
1304 message header, whether or not it is currently visible.
1305
1306 `rmail-apply-in-message' is a general purpose function that calls a
1307 function (with arguments) which you specify on the full text of a given
1308 message. To further narrow to just the headers, search forward for "\n\n".
1309
1310 *** The new command `rmail-mime' displays MIME messages.
1311 It is bound to `v' in Rmail buffers and summaries. It displays plain
1312 text and multipart messages in a temporary buffer, and offers buttons
1313 to save attachments.
1314
1315 *** The command `rmail-redecode-body' no longer accepts the optional arg RAW.
1316 Since Rmail now holds messages in their original undecoded form in a
1317 separate buffer, `rmail-redecode-body' no longer encodes the original
1318 message, and therefore there should be no need to avoid encoding it.
1319
1320 *** The o command is now `rmail-output'. It is an all-purpose command
1321 for copying messages from Rmail and appending them to files. It
1322 handles Babyl-format files as well as mbox-format files, and it
1323 handles both kinds properly when they are visited in Emacs. It always
1324 copies the full headers of the message.
1325
1326 *** The C-o command is now `rmail-output-as-seen'. It uses
1327 the message as displayed, appending it to an mbox file.
1328
1329 *** The modified status of the Rmail buffer is reported in the mode-line.
1330 Previously, this information was hidden.
1331
1332 ** TeX modes
1333
1334 *** New option latex-indent-within-escaped-parens
1335 permits to customize indentation of LaTeX environments delimited
1336 by escaped parens.
1337
1338 ** T-mouse Mode
1339
1340 *** If the gpm mouse server is running and t-mouse-mode is enabled,
1341 Emacs uses a Unix socket in a GNU/Linux console to talk to server,
1342 rather than faking events using the client program mev. This C level
1343 approach provides mouse highlighting and help echoing in the
1344 minibuffer.
1345
1346 ** Tramp
1347
1348 *** New connection methods.
1349 The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
1350 been introduced. There are also new so-called gateway methods
1351 "tunnel" and "socks".
1352
1353 *** IPv6 addresses.
1354 IPv6 addresses are supported now as host names. They must be embedded
1355 in square brackets, like in "/ssh:[::1]:".
1356
1357 *** Multihop syntax has been removed.
1358 The pseudo-method "multi" has been removed. Instead, multi hops
1359 can be specified by the new variable `tramp-default-proxies-alist'.
1360
1361 *** More default settings.
1362 Default values can be set via the variables `tramp-default-user',
1363 `tramp-default-user-alist' and `tramp-default-host'.
1364
1365 *** Connection information is cached.
1366 In order to reduce connection setup, information about used
1367 connections is kept persistently in a file. The name of this file is
1368 defined in the variable `tramp-persistency-file-name'.
1369
1370 *** Control of remote processes.
1371 Running processes on a remote host can be controlled by settings in
1372 `tramp-remote-path' and `tramp-remote-process-environment'.
1373
1374 *** Success of remote copy is checked.
1375 When the variable `file-precious-flag' is set, the success of a remote
1376 file copy is checked via the file's checksum.
1377
1378 *** Passwords can be read from an authentification file.
1379 Tramp uses the package `auth-source' to read passwords from a file, if
1380 necessary.
1381
1382 ** VC and related modes
1383
1384 *** VC now supports applying VC operations to a set of files at a time.
1385 This enables VC to work much more effectively with changeset-oriented
1386 version-control systems such as Subversion, GNU Arch, Mercurial, Git
1387 and Bzr. VC will now pass a multiple-file commit to these systems as
1388 a single changeset.
1389
1390 *** vc-dir is a new command that displays file names and their VC
1391 status. It allows to apply various VC operations to a file, a
1392 directory or a set of files/directories.
1393
1394 *** VC switches are no longer appended, rather the first non-nil value is used.
1395 (This was for the most part true in Emacs 22, but was not advertised).
1396 This is because there is an increasing variety of VC systems, and they
1397 do not all accept the same "common" options. For example, a CVS diff
1398 command used to append the values of `vc-cvs-diff-switches',
1399 `vc-diff-switches', and `diff-switches'. Now the first non-nil value
1400 from that sequence is used. The special value `t' means "no switches".
1401
1402 *** Clicking on the VC mode-line entry now pops the VC menu.
1403
1404 *** The VC mode-line entry now has a tooltip that explains the VC file status.
1405
1406 *** In VC Annotate mode, the key bindings have changed to use lower
1407 case keys instead of the upper case keys used in the past.
1408
1409 *** In VC Annotate mode, for VC systems that support changesets, you can
1410 see the diff for the whole changeset (not only for the current file)
1411 by typing the D key. Using the "Show changeset diff of revision at
1412 line" menu entry does the same thing.
1413
1414 *** In VC Annotate mode, you can type v to toggle the annotation visibility.
1415
1416 *** In VC Annotate mode, you can type f to show the file revision on
1417 the current line.
1418
1419 *** Asynchronous VC commands display [Waiting...] in the mode-line
1420 of the corresponding buffer as long as the asynchronous process is
1421 active.
1422
1423 *** Log entries can be modified using the key "e" in log-view.
1424 For now only CVS, RCS, SCCS and SVN support this functionality.
1425 This is done by the `modify-change-comment' backend function.
1426
1427 *** In log-view-mode, for VC systems that support changesets, you can
1428 see the diff for the whole changeset (not only for the current file)
1429 by typing the D key or using the "Changeset Diff" menu entry.
1430
1431 *** In Log Edit mode, C-c C-d now shows the diff for the files involved.
1432
1433 *** vc-git supports the "git grep" command.
1434
1435 *** VC Support for Meta-CVS has been removed for lack of a maintainer able
1436 to update it to the new VC.
1437
1438 ** Miscellaneous
1439
1440 *** comint-mode uses `start-file-process' now (see Lisp Changes).
1441 If `default-directory' is a remote file name, subprocesses are started
1442 on the corresponding remote system.
1443
1444 *** Eldoc highlights the function argument under point
1445 with the face `eldoc-highlight-function-argument'.
1446
1447 *** In Etags, the --members option is now the default.
1448 Use --no-members if you want the old default behavior of not tagging
1449 struct members in C, members variables in C++ and variables in PHP.
1450
1451 *** The `gdb' command only works with the graphical interface now.
1452 Use `gud-gdb' if you want the (old) text command mode.
1453
1454 *** goto-address.el provides two new minor modes, goto-address-mode and
1455 goto-address-prog-mode, which buttonize URLS and email addresses.
1456
1457 *** The new command `eshell/info' runs info in an eshell buffer.
1458
1459 *** The new variable `ffap-rfc-directories' specifies a list of local
1460 directories in which `ffap-rfc' will first search for RFCs.
1461
1462 *** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
1463 See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
1464
1465 *** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
1466
1467 *** Info displays breadcrumbs in the header of the page.
1468 See Info-breadcrumbs-depth to control it.
1469
1470 *** net-utils has an `iwconfig' command, similar to the existing `ifconfig'.
1471 It is used to configure wireless interfaces.
1472
1473 *** The pcmpl-unix package supports hostname completion for ssh and scp.
1474
1475 *** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
1476
1477 *** smerge-refine highlights word-level details of changes in conflict.
1478 It's used automatically as you move through conflicts, see
1479 smerge-auto-refine-mode.
1480
1481 *** talk.el has been extended for multiple tty support.
1482
1483 *** A new command `display-time-world' has been added to the Time
1484 package. It creates a buffer with an updating time display using
1485 several time zones.
1486
1487 *** The appearance of superscript and subscript in TeX is more customizable.
1488 See the documentation of the variables: tex-fontify-script,
1489 tex-font-script-display, tex-suscript-height-ratio, and
1490 tex-suscript-height-minimum.
1491
1492 *** view-remove-frame-by-deleting is now by default t
1493 since users found iconification of view-mode frames distracting.
1494
1495 *** WoMan tries to add locale-specific manual page directories to the
1496 search path. This can be disabled by setting `woman-locale' to nil.
1497
1498 \f
1499 * Changes in Emacs 23.1 on non-free operating systems
1500
1501 ** Case is now considered significant in completion on MS-Windows.
1502 The default value of `completion-ignore-case' is now nil on
1503 MS-Windows, the same as it is for other operating systems. The
1504 variable doesn't apply to reading a file name -- in that case Emacs
1505 heeds `read-file-name-completion-ignore-case' instead.
1506
1507 ** IPv6 is supported on MS-Windows.
1508 Emacs now supports IPv6 on Windows XP and later, and earlier versions
1509 of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was
1510 supported on other platforms, but not on Windows due to using the winsock
1511 1.1 header file, even though Emacs was linking to the winsock 2 library.
1512
1513 ** Busy cursor (hourglass) now displays on MS-Windows.
1514 When Emacs is busy, an hourglass mouse cursor is displayed on Windows.
1515 In Emacs 22 only X supported the busy cursor.
1516
1517 ** Battery status is available on MS-Windows
1518 Emacs can now display the battery status in the mode-line when enabled with
1519 display-battery-mode or from the Options menu. More verbose battery
1520 information is also available with the command `battery'. In Emacs 22
1521 battery status was supported only on GNU/Linux and Mac.
1522
1523 ** More keys available on MS-Windows.
1524 Keys normally associated with IMEs, and some exotic keys not normally found
1525 on standard keyboards have been given names so they can be bound to functions
1526 inside Emacs. If there are keys on your keyboard that have not been exposed
1527 to Emacs in the past, try C-h k to see if they are available now.
1528
1529 Emacs can now bind functions to the extra buttons for media player and
1530 browser control present on some keyboards. These buttons are disabled
1531 by default, since enabling them prevents their system-wide use when
1532 Emacs has focus. To enable them, set the variable
1533 w32-pass-multimedia-buttons to nil. See the doc string of that variable
1534 for the list of extra keys that are available.
1535
1536 ** BDF fonts no longer supported on MS-Windows.
1537 The font backend was completely rewritten for this release. The focus
1538 on Windows has been getting acceptable performance and full unicode
1539 support, including complex script shaping for native Windows fonts. A
1540 rewrite of the BDF font support has not happened due to lack of time
1541 and developers. If demand still exists for such a backend even with
1542 the improved language support for native Windows fonts, future
1543 development in this direction will most likely be based on the
1544 freetype library, giving access to a wider range of font formats.
1545
1546 \f
1547 * Incompatible Lisp Changes in Emacs 23.1
1548
1549 ** Variables cannot be both buffer-local and frame-local any more.
1550
1551 ** `functionp' returns nil for special forms.
1552 I.e., it only returns t for objects that can be passed to `funcall'.
1553
1554 ** The behavior of map-char-table has changed. It may call the
1555 specified function with a cons (FROM . TO) as a key if characters in
1556 that range have the same value.
1557
1558 ** Process changes
1559
1560 *** The function `dired-call-process' has been removed.
1561
1562 *** The multibyteness of process filters is now determined by the
1563 coding-system used for decoding. The functions
1564 `process-filter-multibyte-p' and `set-process-filter-multibyte' are
1565 obsolete.
1566
1567 ** The variable `byte-compile-warnings' can now be a list starting with `not',
1568 meaning to disable the specified warnings. The meaning of this list
1569 may therefore be the reverse of what you expect (of course, this is
1570 only an issue if you make use of the new `not' syntax). Rather than
1571 checking/manipulating elements directly, use the new functions
1572 `byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
1573 `byte-compile-enable-warning.'
1574
1575 ** `mode-name' is no longer guaranteed to be a string.
1576 Use `(format-mode-line mode-name)' to ensure a string value.
1577
1578 ** The function x-font-family-list has been removed.
1579 Use the new function font-family-list (see Lisp Changes, below).
1580
1581 ** Internationalization changes
1582
1583 *** The value of the function `charset-id' is now always 0.
1584
1585 *** The functions `register-char-codings' and `coding-system-spec'
1586 have been removed.
1587
1588 *** The cpXXX coding systems are now supported automatically.
1589 The functions cp-...-codepage, which you had to use in Emacs 22 to
1590 enable support for these coding systems, have been deleted.
1591
1592 *** The following features have been removed. They were used for
1593 displaying various scripts with specific fonts, and are no longer
1594 needed now that OpenType font support is available:
1595
1596 **** `devanagari' and `devan-util', and all associated devanagari-* and
1597 dev-* functions and variables (formerly used for Devanagari script).
1598
1599 **** `kannada' and `knd-util', and all associated kannada-* and knd-*
1600 functions and variables (formerly used for Kannada script).
1601
1602 **** `malayalam' and `mlm-util', and all associated malayalam-* and
1603 mlm-* functions and variables (formerly used for Malayalam script).
1604
1605 **** `tamil' and `tml-util, and all associated tamil-* and tml-*
1606 functions and variables (formerly used for Tamil script).
1607
1608 *** The meaning of NAME argument of `set-fontset-font' is changed.
1609 Previously nil is accepted as the default fontset. Now, nil is for
1610 the fontset of the selected frame and t is for the default fontset.
1611
1612 *** The meaning of FONTSET argument of `print-fontset' is changed.
1613 Now, nil is for the fontset of the selected frame and t is for the
1614 default fontset.
1615
1616 ** If a function in write-region-annotate-functions returns with a
1617 different buffer current, Emacs no longer kills that buffer
1618 automatically. This behavior existed in previous versions of Emacs,
1619 but was undocumented. To kill a buffer after write-region, give the
1620 variable `write-region-post-annotation-function' a buffer-local value
1621 of `kill-buffer'.
1622
1623 ** The variable temp-file-name-pattern has been removed.
1624 This variable was only used by call-process-region, which now uses
1625 temporary-file-directory instead.
1626
1627 ** The COUNT and SYSTEM-FLAG arguments to define-abbrev have been
1628 removed. The function now takes extra arguments for specifying
1629 arbitrary abbrev properties.
1630
1631 ** end-of-defun-function is now guaranteed to work only when called
1632 from the start of a defun. It must now leave point exactly at the end
1633 of defun, since `end-of-defun' now itself moves forward over
1634 whitespace after calling it.
1635
1636 \f
1637 * Lisp Changes in Emacs 23.1
1638
1639 ** The new variable `generate-autoload-cookie' controls the magic comment
1640 string used by `update-file-autoloads' to find autoloaded forms. The
1641 variable `generated-autoload-file' similarly controls the name of the
1642 file where `update-file-autoloads' writes the calls to `autoload'.
1643 The default values are ";;;###autoload" and `loaddefs.el',
1644 respectively.
1645
1646 ** New primitives `list-system-processes' and `process-attributes'
1647 let Lisp programs access the processes that are running on the local
1648 machine. See the doc strings of these functions for more details.
1649 Not all platforms support accessing this information; on those that
1650 don't, these primitives will return nil.
1651
1652 ** New variable `user-emacs-directory'.
1653 Use this instead of "~/.emacs.d".
1654
1655 ** If a local hook function has a non-nil `permanent-local-hook'
1656 property, `kill-all-local-variables' does not remove it from the local
1657 value of the hook variable; it remains even if you change major modes.
1658
1659 ** `frame-inherited-parameters' lets new frames inherit parameters from
1660 the selected frame.
1661
1662 ** New keymap `input-decode-map' overrides like key-translation-map, but
1663 applies before function-key-map. Also it is terminal-local contrary to
1664 key-translation-map. Terminal-specific key-sequences are generally added to
1665 this map rather than to function-key-map now.
1666
1667 ** `ignore-errors' is now a standard macro (does not require the CL package).
1668
1669 ** `interprogram-paste-function' can now return one string or a list
1670 of strings. In the latter case, Emacs puts the second and following
1671 strings on the kill ring.
1672
1673 ** In `condition-case', a handler can specify "let the debugger run first".
1674 You do this by writing `debug' in the list of conditions to be handled,
1675 like this:
1676
1677 (condition-case nil
1678 (foo bar)
1679 ((debug error) nil))
1680
1681 ** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
1682
1683 ** `beginning-of-defun-function' now takes one argument, the count given to
1684 `beginning-of-defun'. (N.B. `end-of-defun-function' doesn't take any
1685 arguments.)
1686
1687 ** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
1688 IDENTIFICATION specifies which part of the remote identifier has to be
1689 returned. With CONNECTED passed non-nil, it is checked whether a
1690 remote connection has been established already.
1691
1692 ** The new macro `declare-function' suppresses compiler warnings about
1693 undefined functions.
1694
1695 ** Changes to interactive function handling
1696
1697 *** The new interactive spec code ^ says to first call
1698 handle-shift-selection if shift-select-mode is non-nil, before reading
1699 the command arguments. This is used for shift-selection (see above).
1700
1701 *** Built-in functions can now have an interactive specification that
1702 is not a prompt string. If the `intspec' parameter of a `DEFUN'
1703 starts with a `(', the string is evaluated as a Lisp form.
1704
1705 *** The interactive-form of a function can be added post-facto via the
1706 `interactive-form' symbol property. Mostly useful to add complex
1707 interactive forms to subroutines.
1708
1709 ** Region changes
1710
1711 *** Commands should use `use-region-p' to test whether there is
1712 an active region that they should operate on.
1713
1714 *** `region-active-p' returns non-nil when Transient Mark mode is
1715 enabled and the mark is active. Most commands that act specially on
1716 the active region in Transient Mark mode should use `use-region-p'
1717 instead of `region-active-p', because `use-region-p' obeys the new
1718 user option `use-empty-active-region' (see Editing Changes, above).
1719
1720 *** If a command sets `transient-mark-mode' to (only . OLDVAL), that
1721 means to activate transient-mark-mode temporarily, until the next
1722 unshifted point motion command or mark deactivation. Afterwards,
1723 reset transient-mark-mode to the value OLDVAL. The values `only' and
1724 `identity', introduced in Emacs 22, are now deprecated.
1725
1726 ** Emacs session information
1727
1728 *** The new variables `before-init-time' and `after-init-time' record the
1729 value of `current-time' before and after Emacs loads the init files.
1730
1731 *** The new function `emacs-uptime' returns the uptime of an Emacs instance.
1732
1733 *** The new function `emacs-init-time' returns the duration of the
1734 Emacs initialization.
1735
1736 ** Changes affecting display-buffer
1737
1738 *** display-buffer tries to be smarter when splitting windows.
1739 The new option split-window-preferred-function lets you specify your own
1740 function to pop up new windows. Its default value split-window-sensibly
1741 can split a window either vertically or horizontally, whichever seems
1742 more suitable in the current configuration. You can tune the behavior
1743 of split-window-sensibly by customizing split-height-threshold and the
1744 new option split-width-threshold. Both options now take the value nil
1745 to inhibit splitting in one direction. Setting split-width-threshold to
1746 nil inhibits horizontal splitting and gets you the behavior of Emacs 22
1747 in this respect. In any case, display-buffer may now split the largest
1748 window vertically even when it is not as wide as the containing frame.
1749
1750 *** If pop-up-frames has the value `graphic-only', display-buffer only
1751 makes a separate frame on graphic displays.
1752
1753 *** select-frame and set-frame-selected-window have a new optional
1754 argument NORECORD. If non-nil, this will avoid messing with the order
1755 of recently selected windows and the buffer list.
1756
1757 ** Window parameters can now be defined.
1758 These are analogous to frame parameters, but are associated with
1759 individual windows.
1760
1761 *** The new functions window-parameters, window-parameter, and
1762 set-window-parameter are used to query and set window parameters.
1763
1764 ** Minibuffer and completion changes
1765
1766 *** A list of default values can be specified for the DEFAULT argument of
1767 functions `read-from-minibuffer', `read-string', `read-command',
1768 `read-variable', `read-buffer', `completing-read'. Elements of this list
1769 are available for inserting into the minibuffer by typing `M-n'.
1770 For empty input these functions return the first element of this list.
1771
1772 *** New function `read-regexp' uses the regexp history and some useful
1773 regexp defaults (string at point, last Isearch/replacement regexp/string)
1774 via M-n when reading a regexp in the minibuffer.
1775
1776 *** minibuffer-local-must-match-filename-map is now named
1777 minibuffer-local-filename-must-match-map.
1778
1779 *** The `require-match' argument to `completing-read' accepts the new
1780 values `confirm-only' and `confirm-after-completion'.
1781
1782 ** Search and replacement changes
1783
1784 *** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
1785
1786 *** New function `match-substitute-replacement' returns the result of
1787 `replace-match' without actually using it in the buffer.
1788
1789 *** The new variable `replace-search-function' determines the function
1790 to use for searching in query-replace and replace-string. The
1791 function it specifies is called by `perform-replace' when its 4th
1792 argument is nil.
1793
1794 *** The new variable `replace-re-search-function' determines the
1795 function to use for searching in `query-replace-regexp',
1796 `replace-regexp', `query-replace-regexp-eval', and
1797 `map-query-replace-regexp'. The function it specifies is called by
1798 `perform-replace' when its 4th argument is non-nil.
1799
1800 *** New keymap `search-map' bound to `M-s' provides global bindings
1801 for search related commands.
1802
1803 *** New keymap `multi-query-replace-map' contains additonal keys bound
1804 to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
1805
1806 *** The variable `inhibit-changing-match-data', if non-nil, prevents
1807 the search and match primitives from changing the match data.
1808
1809 *** New functions `word-search-forward-lax' and `word-search-backward-lax'.
1810 These are like `word-search-forward and `word-search-backward', except
1811 that the end of the search string need not match a word boundary,
1812 unless it ends in whitespace.
1813
1814 ** File handling changes
1815
1816 *** set-file-modes is now interactive and can take the mode value in
1817 symbolic notation thanks to auxiliary functions.
1818
1819 *** file-local-variables-alist stores an alist of file-local
1820 variables defined in the current buffer.
1821
1822 ** Face-remapping
1823
1824 *** Each face can be remapped to a different face definition using the
1825 variable `face-remapping-alist'. This is an alist that maps faces to
1826 replacement definitions (which can be face names, lists of face names,
1827 or attribute/value plists. If this variable is buffer-local, the
1828 remapping occurs only in that buffer.
1829
1830 *** text-scale-mode remaps the default face to a larger or smaller
1831 size in the current buffer. This feature is used by the Buffer Face
1832 menu and the new `C-x C-+', `C-x C--', and `C-x C-0' commands (see
1833 Editing Changes, above).
1834
1835 *** New functions:
1836
1837 **** `face-remap-add-relative' adds a face remapping entry to the
1838 current buffer.
1839
1840 **** ``face-remap-remove-relative' removes a face remapping entry from
1841 the current buffer.
1842
1843 **** `face-remap-reset-base' restores a face to its global definition.
1844
1845 **** `face-remap-set-base' sets the base remapping of a face.
1846
1847 ** Process changes
1848
1849 *** The new function `start-file-process' is similar to `start-process',
1850 but obeys file handlers. The file handler is chosen based on
1851 `default-directory'. The functions `start-file-process-shell-command'
1852 and `process-file-shell-command' are also new; they call internally
1853 `start-file-process' and `process-file', respectively.
1854
1855 *** The new function `process-lines' executes an external program and
1856 returns its output as a list of lines.
1857
1858 ** Character code, representation, and charset changes.
1859
1860 *** In multibyte buffers and strings, characters are represented by
1861 UTF-8 byte sequences. The character code space is now 0x0..0x3FFFFF
1862 with no gap; code points 0x0..0x10FFFF are Unicode characters of the
1863 same code points, while code points 0x3FFF80..0x3FFFFF are raw 8-bit
1864 bytes.
1865
1866 *** Generic characters no longer exist.
1867
1868 *** The concept of a charset has changed. A single character may
1869 belong to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets
1870 unicode, iso-8859-1, iso-8859-3, etc).
1871
1872 **** The dimension of a charset is now 1, 2, 3, or 4, and the size of
1873 each dimension is no longer limited to 94 or 96.
1874
1875 **** A dynamic charset priority list is used to infer the charset of
1876 characters for display.
1877
1878 *** The functions `split-char' and `make-char' now accept up to 4
1879 positional codes instead of just 2.
1880
1881 *** The functions `encode-char' and `decode-char' now accept any character sets.
1882
1883 *** The function `define-charset' now accepts a completely different
1884 form of arguments (old-style arguments still work).
1885
1886 *** The value of the function `char-charset' depends on the current
1887 priorities of charsets.
1888
1889 *** The function get-char-code-property now accepts many Unicode base
1890 character properties. They are `name', `general-category',
1891 `canonical-combining-class', `bidi-class', `decomposition',
1892 `decimal-digit-value', `digit-value', `numeric-value', `mirrored',
1893 `old-name', `iso-10646-comment', `uppercase', `lowercase', and
1894 `titlecase'.
1895
1896 *** The functions `modify-syntax-entry' and `modify-category-entry' now
1897 accept a cons of characters as the first argument, and modify all
1898 entries in that range of characters.
1899
1900 *** Use of `translation-table-for-input' for character code unification
1901 is now obsolete, since Emacs 23.1 and later uses Unicode as basis for
1902 internal representation of characters.
1903
1904 *** New functions:
1905
1906 **** `characterp' returns t if and only if the argument is a character.
1907 This replaces `char-valid-p', which is now obsolete.
1908
1909 **** `max-char' returns the maximum character code (currently #x3FFFFF).
1910
1911 **** `define-charset-alias' defines an alias of a charset.
1912
1913 **** `set-charset-priority' sets priorities of charsets.
1914
1915 **** `charset-priority-list' returns a prioritized list of charsets.
1916
1917 **** `unibyte-string' makes a unibyte string from bytes.
1918
1919 **** `define-char-code-property' defines a character code property.
1920
1921 **** `char-code-property-description' returns the description string of
1922 a character code property.
1923
1924 *** New variables:
1925
1926 **** `find-word-boundary-function-table' is a char-table of functions to
1927 search for a word boundary.
1928
1929 **** `char-script-table' is a char-table of script names.
1930
1931 **** `char-width-table' is a char-table of character widths.
1932
1933 **** `print-charset-text-property' controls how to handle `charset' text
1934 property on printing a string.
1935
1936 **** `printable-chars' is a char-table of printable characters.
1937
1938 ** Code conversion changes
1939
1940 *** The new function `define-coding-system' should be used to define a
1941 coding system instead of `make-coding-system' (which is now obsolete).
1942
1943 *** The functions `encode-coding-region' and `decode-coding-region'
1944 have an optional 4th argument to specify where the result of
1945 conversion should go.
1946
1947 *** The functions `encode-coding-string' and `decode-coding-string'
1948 have an optional 4th argument specifying a buffer to store the result
1949 of conversion.
1950
1951 *** The new variable `inhibit-null-byte-detection' controls whether to
1952 consider text with null bytes as binary data. By default, it is
1953 `nil', and Emacs uses `no-conversion' for any text containing null
1954 bytes.
1955
1956 *** The functions `set-coding-priority' and `make-coding-system' are obsolete.
1957
1958 *** New functions:
1959
1960 **** `with-coding-priority' executes Lisp code using the specified
1961 coding system priority order.
1962
1963 **** `check-coding-systems-region' checks if the text in the region is
1964 encodable by the specified coding systems.
1965
1966 **** `coding-system-aliases' returns a list of aliases of a coding system.
1967
1968 **** `coding-system-charset-list' returns a list of charsets supported
1969 by a coding system.
1970
1971 **** `coding-system-priority-list' returns a list of coding systems
1972 ordered by their priorities.
1973
1974 **** `set-coding-system-priority' sets priorities of coding systems.
1975
1976 **** `coding-system-from-name' returns a coding system matching with
1977 the argument name.
1978
1979
1980 ** There is a new input method, Robin, different from Quail.
1981 It has three functionalities:
1982 i) a simple input method (converts an ASCII sequence into a string).
1983 ii) converts an existing buffer substring into another string
1984 iii) reverse conversion (each character produced by a
1985 robin rule can hold the original ASCII sequence as a char-code-property)
1986
1987 *** The new function `robin-define-package' defines a Robin package.
1988
1989 *** The new function `robin-modify-package' modifies an existing Robin package.
1990
1991 *** The new function `robin-use-package' starts using a Robin package
1992 as an input method.
1993
1994 *** The new function `string-to-unibyte' is like `string-as-unibyte'
1995 but signals an error if STRING contains a non-ASCII, non-eight-bit
1996 character.
1997
1998 ** Changes related to the new font backend
1999
2000 *** Which font backends to use can be specified by the X resource
2001 "FontBackend". For instance, to use both X core fonts and Xft fonts:
2002
2003 Emacs.FontBackend: x,xft
2004
2005 If this resource is not set, Emacs tries to use all font backends
2006 available on your graphic device.
2007
2008 *** New frame parameter `font-backend' specifies a list of
2009 font-backends supported by the frame's graphic device. On X, they are
2010 currently `x' and `xft'.
2011
2012 *** The function `set-fontset-font' now accepts a script name as the
2013 second argument, and has an optional 5th argument to control how to
2014 set the font.
2015
2016 *** New functions:
2017
2018 **** `fontp' checks if the argument is a font-spec or font-entity.
2019
2020 **** `font-spec' creates a new font-spec object.
2021
2022 **** `font-get' returns a font property value.
2023
2024 **** `font-put' sets a font property value.
2025
2026 **** `font-face-attributes' returns a plist of face attributes set by a font.
2027
2028 **** `list-fonts' returns a list of font-entities matching a font spec.
2029
2030 **** `find-font' returns the font-entity best matching the given font spec.
2031
2032 **** `font-family-list' returns a list of family names of available fonts.
2033
2034 **** `font-xlfd-name' returns an XLFD name of a given font spec, font
2035 entity, or font object.
2036
2037 **** `clear-font-cache' clears all font caches.
2038
2039 ** Changes related to multiple-terminal (multi-tty) support
2040
2041 *** $TERM is now set to `dumb' for subprocesses. If you want to know the
2042 $TERM inherited by Emacs you will have to look inside initial-environment.
2043
2044 *** $DISPLAY is now dynamically inherited from the frame's `display'.
2045
2046 *** The `window-system' variable is now frame-local. The new
2047 `initial-window-system' variable contains the `window-system' value
2048 for the first frame. `window-system' is also now a function that
2049 takes a frame argument.
2050
2051 *** The `keyboard-translate-table' variable and the terminal and
2052 keyboard coding systems are now terminal-local.
2053
2054 *** You can specify a terminal device (`tty' parameter) and a terminal
2055 type (`tty-type' parameter) to `make-terminal-frame'.
2056
2057 *** The function `make-frame-on-display' now works during a tty
2058 session.
2059
2060 *** A new `terminal' data type.
2061 The functions `get-device-terminal', `terminal-parameters',
2062 `terminal-parameter', `set-terminal-parameter' use this data type.
2063
2064 *** Function key sequences are now mapped using `local-function-key-map',
2065 a new variable. This inherits from the global variable function-key-map,
2066 which is not used directly any more.
2067
2068 *** New hooks:
2069
2070 **** before-hack-local-variables-hook is called after setting new
2071 variable file-local-variables-alist, and before actually applying the
2072 file-local variables.
2073
2074 **** `suspend-tty-functions' and `resume-tty-functions' are called
2075 after a tty frame has been suspended or resumed, respectively. The
2076 functions are called with the terminal id of the frame being
2077 suspended/resumed as a parameter.
2078
2079 **** The special hook `delete-terminal-functions' is called before
2080 deleting a terminal.
2081
2082 *** New functions:
2083
2084 **** `delete-terminal'
2085
2086 **** `suspend-tty'
2087
2088 **** `resume-tty'.
2089
2090 *** `initial-environment' holds the environment inherited from Emacs's parent.
2091
2092 ** Redisplay changes
2093
2094 *** For underlined characters, the distance between the underline and
2095 the baseline is controlled by a new variable, `underline-minimum-offset'.
2096
2097 *** You can now pass the value of the `invisible' property to
2098 invisible-p to check whether it would cause the text to be invisible.
2099 This is convenient when checking invisibility of text with no buffer
2100 position (e.g. in before/after-strings).
2101
2102 *** `clear-image-cache' can be told to flush only images of a specific file.
2103
2104 *** `vertical-motion' can now be given a goal column.
2105 It now accepts a cons cell (COLS . LINES) in its first argument, which
2106 says to stop, where possible, at a pixel x-position equal to COLS
2107 times the default column width.
2108
2109 *** redisplay-end-trigger-functions, set-window-redisplay-end-trigger,
2110 and window-redisplay-end-trigger are obsolete. Use `jit-lock-register'
2111 instead.
2112
2113 *** The new variables `wrap-prefix' and `line-prefix' specify display
2114 specs which are appended at display-time to every continuation line
2115 and non-continuation line, respectively. In addition, Emacs
2116 recognizes the `wrap-prefix' and `line-prefix' text or overlay
2117 properties; these have the same effects as the variables of the same
2118 name, but take precedence.
2119
2120 ** The Lisp interpreter now treats non-breaking space as whitespace.
2121
2122 ** Miscellaneous new functions
2123
2124 *** `apply-partially' performs a "curried" application of a function.
2125
2126 *** `buffer-swap-text' swaps text between two buffers. This can be
2127 useful for modes such as tar-mode, archive-mode, RMAIL.
2128
2129 *** `combine-and-quote-strings' produces a single string from a list of strings
2130 sticking a separator string in between each pair, and quoting those
2131 strings that include the separator as their substring. Useful for
2132 consing shell command lines from the individual arguments.
2133
2134 *** `custom-note-var-changed' tells Custom to treat the change in a
2135 certain variable as having been made within Custom.
2136
2137 *** `face-all-attributes' returns an alist describing all the basic
2138 attributes of a given face.
2139
2140 *** `format-seconds' converts a number of seconds into a readable
2141 string of days, hours, etc.
2142
2143 *** `image-refresh' refreshes all images associated with a given image
2144 specification.
2145
2146 *** `locate-user-emacs-file' helps packages to select the appropriate
2147 place to save user-specific files. It defaults to `user-emacs-directory'
2148 unless the file already exists at $HOME.
2149
2150 *** `read-color' reads a color name using the minibuffer.
2151
2152 *** `read-shell-command' does what its name says, with completion. It
2153 uses the minibuffer-local-shell-command-map for that.
2154
2155 *** `split-string-and-unquote' splits a string into a list of substrings
2156 on the boundaries of a given delimiter, and unquotes the substrings that
2157 are quoted. Useful for taking apart shell commands.
2158
2159 *** The two new functions `looking-at-p' and `string-match-p' can do
2160 the same matching as `looking-at' and `string-match' without changing
2161 the match data.
2162
2163 *** The two new functions `make-serial-process' and
2164 `serial-process-configure' provide a Lisp interface to the new serial
2165 port support (see Emacs changes, above).
2166
2167 ** Miscellaneous new variables
2168
2169 *** `auto-save-include-big-deletions', if non-nil, means auto-save is
2170 not turned off automatically after a big deletion.
2171
2172 *** `read-circle', if nil, disables the reading of recursive Lisp
2173 structures using the #N= and #N# syntax.
2174
2175 *** `this-command-keys-shift-translated' is non-nil if the key
2176 sequence invoking the current command was found by shift-translation.
2177
2178 *** `window-point-insertion-type' determines the insertion-type of the
2179 marker used for window-point.
2180
2181 *** bookmark provides `bookmark-make-record-function' so special major
2182 modes like Info can teach bookmark.el how to save and restore the
2183 relevant data.
2184
2185 *** `fill-forward-paragraph-function' specifies which function the
2186 filling code should use to find paragraph boundaries.
2187
2188 \f
2189 * New Packages for Lisp Programming in Emacs 23.1
2190
2191 ** The new package avl-tree.el deals with the AVL tree data structure.
2192
2193 ** The new package check-declare.el verifies the accuracy of
2194 declare-function macros (see Lisp Changes, above).
2195
2196 ** find-cmd.el can build `find' commands using lisp syntax.
2197
2198 ** The package misearch.el has been added. It allows Isearch to search
2199 through multiple buffers. A variable `multi-isearch-next-buffer-function'
2200 defines the function to call to get the next buffer to search in the series
2201 of multiple buffers. Top-level functions `multi-isearch-buffers',
2202 `multi-isearch-buffers-regexp', `multi-isearch-files' and
2203 `multi-isearch-files-regexp' accept a single argument that specifies
2204 a list of buffers/files to search for a string/regexp.
2205
2206 ** The new major mode `special-mode' is intended as a parent for
2207 major modes such as those that set the "'mode-class 'special" property.
2208
2209 \f
2210 ----------------------------------------------------------------------
2211 This file is part of GNU Emacs.
2212
2213 GNU Emacs is free software: you can redistribute it and/or modify
2214 it under the terms of the GNU General Public License as published by
2215 the Free Software Foundation, either version 3 of the License, or
2216 (at your option) any later version.
2217
2218 GNU Emacs is distributed in the hope that it will be useful,
2219 but WITHOUT ANY WARRANTY; without even the implied warranty of
2220 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2221 GNU General Public License for more details.
2222
2223 You should have received a copy of the GNU General Public License
2224 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
2225
2226 \f
2227 Local variables:
2228 mode: outline
2229 paragraph-separate: "[ \f]*$"
2230 end:
2231
2232 arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2