* os.texi: Fix previous change.
[bpt/emacs.git] / etc / NEWS
CommitLineData
29b7722a 1GNU Emacs NEWS -- history of user-visible changes.
5b87ad55 2
dcb8ac09 3Copyright (C) 2007, 2008 Free Software Foundation, Inc.
5b87ad55 4See the end of the file for license conditions.
a933dad1 5
3f7194ed 6Please send Emacs bug reports to emacs-pretest-bug@gnu.org.
9a21d88b
KS
7If possible, use M-x report-emacs-bug.
8
0bfd685e 9This file is about changes in Emacs version 23.
9a21d88b 10
0bfd685e
GM
11See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17
12for changes in older Emacs versions.
9a21d88b
KS
13
14You can narrow news to a specific version by calling `view-emacs-news'
15with a prefix argument or by typing C-u C-h C-n.
3f7194ed
GM
16
17Temporary note:
18 +++ indicates that the appropriate manual has already been updated.
19 --- means no change in the manuals is called for.
20When you add a new item, please add it without either +++ or ---
21so we will look at it and add it to the manual.
22
05197f40 23\f
9c576ea0
KS
24* About external Lisp packages
25
9c576ea0 26\f
0bfd685e 27* Installation Changes in Emacs 23.1
c58dccad 28
3f7194ed 29** The default X toolkit is now Gtk+, rather than Lucid.
09e18d03
CY
30The configure option `--with-gtk' has been removed. Gtk is now the
31default toolkit, but you can use --with-x-toolkit=gtk if necessary.
3f7194ed 32
09e18d03
CY
33** New font code.
34Fonts are handled by new code capable of dealing with multiple font
de9efca0 35backends. This uses the freetype and fontconfig libraries.
2b7a2553 36
09e18d03
CY
37*** Emacs now accepts font names supplied in the fontconfig format
38(e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12").
1abe3a1e 39
09e18d03
CY
40*** Added support for local fonts (fonts installed on the machine
41where Emacs is running).
42
43*** Added support for the Xft library for antialiasing.
44
45*** Added support for the otf library for complex text layout by
46OpenType fonts.
47
48*** Added support for the m17n library for text shaping.
15f02f65 49
09e18d03 50** Changes to image support
2e0ef05b 51---
09e18d03 52*** configure now checks for libgif before libungif when searching for
9d3cc9b2 53a GIF library.
2e0ef05b 54+++
09e18d03
CY
55*** Emacs now supports the SVG image format through librsvg2.
56
006a2cde
CY
57** New NeXTSTEP-based port
58This provides support for GNUStep (via the GNUStep libraries) and Mac
59OS X (via the Cocoa libraries). See nextstep/README and
60nextstep/INSTALL in the Emacs source directory.
61
62** Mac OS X is no longer supported via Carbon.
63Use the NeXTSTEP port, described above.
36e625ec 64
09e18d03
CY
65** The new configuration option "--with-dbus" enables D-Bus language
66bindings for Emacs.
07e5c0b0 67
bb9f7948
EZ
68** Support for many obsolete platforms has been removed.
69See the list at the end of etc/MACHINES for details.
2e0ef05b 70---
09e18d03 71*** Support for systems without alloca has been removed.
2e0ef05b 72---
09e18d03 73*** Support for Sun windows has been removed.
2e0ef05b
CY
74---
75*** The `emacstool' utility has been removed.
09e18d03 76
006a2cde
CY
77** The following platforms will be removed in a future Emacs version:
78
79*** Libc version 5 on GNU/Linux.
80
81*** Old FreeBSD and NetBSD systems based on the COFF executable
82 format.
83
84*** Solaris versions 2.6 and below.
85
32847230
CY
86*** Solaris on IBM RS6000 machines.
87
88*** UNIX System V (the original SysV, not later platforms based on it).
89
90*** Platforms not supporting shared libraries (i.e., requiring the
91NO_SHARED_LIBS compilation flag).
006a2cde 92
2e0ef05b 93---
a46ee55c
GM
94** The configure options `--with-gcc', `--without-gcc' have been removed.
95Configure will use gcc by default. Set the CC environment variable if
96you need control over which C compiler is used.
97
09e18d03
CY
98** The refcards are now shipped as PDF files.
99
2e0ef05b 100---
09e18d03
CY
101** Emacs 23 comes with a new set of default icons.
102Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
103The Emacs 22 icon is available as `emacs22.png' in the same location.
4e5cdb4f 104\f
6dadd99f
NR
105* Changes in Emacs 23.1
106
06b62770
AR
107** Emacs can now be built under the Cocoa libraries on Mac OS X and GNUstep
108 libraries on other machines. Specify --with-ns to configure for this. By
109 default a self-contained app will be built (containing all lisp). To
110 install/share lisp with other emacsen (e.g. X11 build) use
111 --disable-ns-self-contained. Use 'info-ns-emacs' or first entry under Help
112 menu when running for more information.
113
0bcfd7d7
SM
114** `where-is-preferred-modifier' can specify your favorite modifier.
115
09e18d03 116** Improved X Window System support
ba5ff07b 117
09e18d03
CY
118*** Emacs now supports using both X displays and ttys in one session.
119With an Emacs server active (M-x server-start), `emacsclient -t'
120creates a tty frame connected to the running emacs server. You can
121use any number of different ttys. `emacsclient -c' creates a new X11
122frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set).
780d7bb9
RS
123
124You can test for the presence of this feature in your Lisp code by
125testing for the `multi-tty' feature.
126
09e18d03
CY
127**** Emacsclient can now open new terminal frames.
128Now, the default behavior is to open a new Emacs frame by default.
129Use the -c option to get the old behavior of opening files in the
130currently selected Emacs frame.
d82c3d44 131
09e18d03
CY
132*** The new command close-display-connection closes a connection to a
133remote display.
d82c3d44 134
09e18d03
CY
135*** Emacs now supports the XEmbed specification.
136You can embed Emacs in another application on X11. The new command line
137option --parent-id is used to pass the parent window id to Emacs. See
7b476dbe
JD
138http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
139for details about XEmbed.
140
09e18d03
CY
141*** Emacs can now set the frame opacity.
142The opacity of a frame can be controlled by setting the `alpha' frame
143parameter. This only takes effect on a compositing window manager for
0f784aa6
JR
144the X Window System, such as Compiz, Beryl and Compiz Fusion, or on
145Windows 2000 and later versions of Windows.
55f9bad5
GM
146
147The alpha parameter should be an integer between 0 (transparent) and
09e18d03
CY
148100 (opaque), or a float number between 0.0 and 1.0. It can also be a
149cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an
150active frame and INACTIVE is the opactity of non-active frames.
55f9bad5 151
09e18d03
CY
152The variable `frame-alpha-lower-limit' defines a lower bound for the
153opacity; the default is 20.
55f9bad5 154
09e18d03 155** Internationalization changes
fec8ef06 156
09e18d03
CY
157*** The Emacs character set is now a superset of Unicode.
158(It has about four times the code space, which should be plenty).
0a963185 159
09e18d03
CY
160The internal encoding used for buffers and strings is now
161Unicode-based and called `utf-8-emacs'. This encoding is backwards
162compatible with Unicode's UTF-8 encoding. The internal encoding
163previously used by Emacs, `emacs-mule', is still available.
6dadd99f 164
09e18d03
CY
165During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files.
166As a result, byte-compiled files containing non-ASCII characters can't
167be read by earlier versions of Emacs. Files compiled by Emacs 20, 21,
168or 22 are loaded correctly as emacs-mule (whether or not they contain
169multibyte characters). This takes somewhat more time, so it may be
170worth recompiling existing .elc files which don't need to be shared
171with older Emacsen.
3ae459e5 172
09e18d03 173*** There are new coding systems/aliases; see M-x list-coding-systems.
c2e8590b 174
09e18d03
CY
175*** There is a new charset implementation with many new charsets.
176See M-x list-character-sets. New charsets can be defined conveniently
177as tables of unicodes.
1abe3a1e 178
09e18d03
CY
179**** The dimension of a charset is now 1, 2, 3, or 4, and the size of
180each dimension is no longer limited to 94 or 96.
eb28688c 181
09e18d03
CY
182**** A dynamic charset priority list is used to infer the charset of
183characters for display.
6c5d503f 184
09e18d03
CY
185*** There are new language environments for Chinese-GBK,
186Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu,
187Sinhala, and TaiViet.
c9447ae1 188
09e18d03
CY
189*** The minor modes unify-8859-on-encoding-mode and
190unify-8859-on-decoding-mode are obsolete.
d466e9fc 191
09e18d03 192** Emacs now supports serial port access on GNU/Linux, Unix, and
81efacf9
CY
193Windows. The new command `serial-term' starts an interactive terminal
194on a serial port. The serial port can be configured at runtime with
195the mode-line mouse menu.
6c5d503f 196
09e18d03 197** Menu Bar changes
81efacf9 198---
09e18d03
CY
199*** In the Options menu, the "Set Default Font" item applies the
200selected font to the `default' face on all frames, not just the
201current frame. Furthermore, if Emacs is compiled with both GTK and
202Fontconfig support, the "Set Default Font" item uses the GTK font
203selection dialog instead of an Emacs pop-up menu.
81efacf9 204---
09e18d03
CY
205*** The font setting chosen by "Set Default Font" is saved if the
206"Save Options" item is used.
1b21ee06 207
b350bdf2
CY
208*** The Tools menu contains a new Encryption/Decryption submenu.
209This contains commands provided by EasyPG, the newly-included
210interface to GnuPG (see New Modes and Packages).
81efacf9
CY
211---
212*** In the Options menu, the "Truncate Long Lines in the Buffer" entry
213has been replaced with a submenu offering three different ways to
214handle long lines: truncation, continuation at the window edge, and
215the new word wrapping option (see Editing Changes, below).
5c4a15b3 216
09e18d03 217** Mode-line changes
a6b85944 218+++
09e18d03
CY
219*** The mode-line displays a `@', instead of `-', if the
220default-directory for the current buffer is on a remote machine.
c4c9b6f9 221
09e18d03
CY
222*** The mode-line displays a mode menu when mouse-1 is clicked on a
223minor mode, in the same way as it already did for major modes.
b3cf10d7 224
09e18d03
CY
225*** The `mode-line-emphasis' face is used to highlight certain
226mode-line information (e.g. waiting for a VC command to finish).
d82c3d44 227
09e18d03
CY
228** Directory-local variables can now be defined.
229By default, Emacs looks in .dir-settings.el for directory-local
230variables. For more information, see `set-directory-project' and
231`define-project-bindings'.
307f3501 232
6dadd99f 233\f
0bfd685e 234* Startup Changes in Emacs 23.1
21f7b9d8 235
a6b85944 236+++
3063e326
JL
237** The option `inhibit-startup-screen' (with aliases to old names
238`inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit
239display of the initial message in the *scratch* buffer. If you don't
240want to display the initial message in the *scratch* buffer at startup,
241you can set the option `initial-scratch-message' to nil.
242
56e1896b
JL
243** New user option `initial-buffer-choice' specifies what to display
244after starting Emacs: startup screen, *scratch* buffer, visiting a
245file or directory.
246
aa5310e4
DK
247** New alias `argv' for `command-line-args-left'
248This is a convenience alias, so that one can write `(pop argv)'
249inside of --eval command line arguments in order to access
250following arguments.
f8fd7ed3
GM
251
252** The abbrev file is no longer read at startup in batch mode.
c44da964 253\f
0bfd685e 254* Incompatible Editing Changes in Emacs 23.1
b58cb59f 255
d1949cd5
JL
256** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&'
257on the regexp command prefix map.
258
117907d4
JL
259+++
260** In Dired-x, all command guesses for ! are now added to the default
261list accessible by M-n instead of pushing all guesses temporarily into
262the history list.
263
81efacf9 264---
e405fa5f 265** The following input methods were removed in Emacs 22.2, but this was
9a930d75 266not advertised: danish-alt-postfix, esperanto-alt-postfix,
e405fa5f
RS
267finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
268norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
269and swedish-alt-postfix. Use the versions without "alt-", which are
270identical.
0b0914ae 271
406c0f12 272\f
0bfd685e 273* Editing Changes in Emacs 23.1
406c0f12 274
0c8b58e9
CY
275** The C-n and C-p line-motion commands now move by screen lines,
276taking continued lines and variable-width characters into account.
277Setting `line-move-visual' to nil reverts this to the previous
278behavior (motion by logical lines based on buffer contents alone).
279
09e18d03
CY
280** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now
281invokes `suspend-frame'. This change is for compatibility with the
282new multi-tty support (see `Improved X Window System support' above).
3ae459e5 283
09e18d03 284** Mark changes
59b5d020 285+++
3ae459e5 286*** Transient Mark mode is now on by default.
3ae459e5
CY
287+++
288*** mark-even-if-inactive now defaults to t
3ae459e5 289+++
b350bdf2
CY
290*** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without
291activating it.
1ac03a31 292+++
3ae459e5
CY
293*** When Transient Mark mode is on, M-q now fills the region if the
294region is active. Otherwise, it fills the current paragraph.
ecde850a 295+++
3ae459e5
CY
296*** When Transient Mark mode is on, M-$ now checks spelling of the
297region if the region is active. Otherwise, it checks spelling of the
dc868f13 298word at point.
3ae459e5
CY
299*** When Transient Mark mode is on, TAB now indents the region if the
300region is active.
3ae459e5
CY
301*** `use-empty-active-region' controls whether an empty active region
302in Transient Mark mode should make commands operate on that empty
303region.
304
305** Temporarily active regions
4502d15f 306+++
3ae459e5
CY
307*** The new variable shift-select-mode, non-nil by default, controls
308shift-selection. When Shift Select mode is on, shift-translated
309motion keys (e.g. S-left and S-down) activate and extend a temporary
310region, similar to mouse-selection.
4502d15f 311+++
3ae459e5
CY
312*** Temporarily active regions, created using shift-selection or
313mouse-selection, are not necessarily deactivated in the next command.
314They are only deactivated after point motion commands that are not
315shift-translated, or after commands that would ordinarily deactivate
316the mark in Transient Mark mode (e.g., any command that modifies the
317buffer).
318
505d8756 319** Minibuffer changes
297b8ccd 320
09e18d03
CY
321*** Operations like C-x b and C-x C-f, which use switch-to-buffer, do
322not fail any more when used in a minibuffer or a dedicated window.
323Instead, they fallback on using pop-to-buffer, which will use some
324other window.
23d2b215 325
d47a29c1
JL
326*** When M-n in the minibuffer reaches the end of the list of defaults,
327it adds the completion list to the end, so next M-n continues putting
328completion items to the minibuffer. The same principle applies to
329incremental search commands as well: C-s or C-M-s starts searching
330the default values and after the end of defaults they continue
331searching minibuffer completion items.
f3ed2b83 332
09e18d03
CY
333*** Minibuffer input of shell commands now comes with completion.
334
335*** In the `C-x d' (Dired) prompt, typing M-n gives the visited file
336name of the current buffer.
dc2f6c05 337
09e18d03
CY
338*** In the M-! (shell-command) prompt, M-n provides some default commands.
339These are guessed using the file extension of the current file, based
340on the file-handlers specified in the operating system's `mailcap'
341file. The ! command in Dired (dired-do-shell-command) works
342similarly, using the file displayed on the current line.
117907d4
JL
343
344*** A list of regexp default values is available via M-n for `occur',
345`keep-lines', `flush-lines' and `how-many'. This list includes the active
4f75e082
JL
346region in transient-mark-mode, the word under the cursor, the last Isearch
347regexp, the last Isearch string and the last replacement regexp.
117907d4 348
4f75e082
JL
349*** Isearch started in the minibuffer searches in the minibuffer history.
350Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer
351history elements, and forward Isearch commands (C-s, C-M-s) search in
297b8ccd
JL
352next history elements. When the reverse search reaches the first history
353element, it wraps to the last history element, and the forward search
354wraps to the first history element. When the search is terminated, the
355history element containing the search string becomes the current.
356
6c897494
CY
357*** The variable read-file-name-completion-ignore-case overrides
358completion-ignore-case for file name completion.
359
360*** The variable read-buffer-completion-ignore-case overrides
361completion-ignore-case for buffer name completion.
362
505d8756
GM
363** Face changes
364
b350bdf2
CY
365*** S-down-mouse-1 now pops up a menu for changing the font and text
366size of the default face in the current buffer. The face is changed
367via face remapping (see below).
d2d160bd 368
f20186fd
GM
369*** FIXME face-remap
370
09e18d03 371** Primary selection changes
0091c67e 372
09e18d03
CY
373*** If `select-active-regions' is t, setting the mark automatically
374makes the new region into the primary selection (for interaction with
375other window applications). If you enable this, you might want to
376bind `mouse-yank-primary' to Mouse-2.
c160dc76 377
b350bdf2
CY
378*** You can disable kill ring commands from accessing the primary
379selection by setting `x-select-enable-primary' to nil.
2e282009 380
09e18d03 381** Completion changes
1816bda7 382
09e18d03
CY
383*** `completion-styles' can be customized to choose your favorite
384completion style.
c06c430f 385
09e18d03 386*** The default completion styles include a form of partial-completion.
c06c430f 387
09e18d03
CY
388*** The new command `minibuffer-force-complete' chooses one of the
389possible completions, rather than stopping at the common prefix.
a2e0b5dd 390
b350bdf2
CY
391*** `completion-auto-help' can be set to `lazy' to list the
392completions only if you repeat the completion. This was already
393supported in `partial-completion-mode'.
a0818148 394
85b1de32
CY
395** Continuation lines can be wrapped at word boundaries
396(word-wrapping) instead of the right window edge. The new per-buffer
397variable `word-wrap', if non-nil turns on word-wrapping. Word
398wrapping does not take place if continuation lines are not shown,
399e.g. if truncate-lines is non-nil.
400
463c6766
CY
401** Window management changes
402
403*** truncate-partial-width-windows now accepts integer values, which
404specify a minimum window width for partial-width windows, below which
405lines are truncated. The default has been changed to 30.
406
407*** The new command balance-windows-area balances windows both
408vertically and horizontally.
409
09e18d03 410** Miscellaneous changes:
3f7194ed 411
09e18d03
CY
412*** C-l is bound to the new command recenter-top-bottom, rather than recenter.
413This moves the current line to window center, top and bottom on
414successive invokations.
15f3eb73 415
09e18d03 416*** scroll-preserve-screen-position also preserves the column position.
c154c0be 417
09e18d03
CY
418*** If `yank-pop-change-selection' is t, rotating the kill ring also
419updates the selection or clipboard to the current yank, just as M-w
420would do so with the text it copies to the kill ring.
421
422+++
423*** C-M-% now shows replacement as it would look in the buffer, with
424`\N' and `\&' substituted according to the match. Old behavior can be
425restored by customizing `query-replace-show-replacement'.
426
427*** The command shell prompts for the default directory, when it is
428called with a prefix and the default directory is a remote file name.
429This is because some file name handlers (like ange-ftp) are not able to
430run processes remotely.
431
432*** The new command kill-matching-buffers kills buffers whose name
433matches a regexp.
434
b350bdf2
CY
435*** The new commands `pp-macroexpand-expression' and
436`pp-macroexpand-last-sexp' pretty-print macro expansions.
8f377a4b 437
09e18d03
CY
438\f
439* New Modes and Packages in Emacs 23.1
e11910e2 440
09e18d03
CY
441** FIXME add details of new packages imported from lisp/gnus.
442[Maybe some information from doc/misc/gnus-coding.texi can be reused]
c06c430f 443
e11910e2
GM
444** Auto Composition Mode is a minor mode that composes characters
445automatically when they are displayed. It is globally on by default.
446It uses `auto-composition-function' (default `auto-compose-chars').
447
09e18d03 448** Bubbles, a new game, is similar to SameGame.
f6b26818 449
7ef39c6e
GM
450** bug-reference.el provides clickable links to bug reports.
451
b350bdf2 452** copyright.el provides utilities for updating copyright notices in files.
09e18d03
CY
453
454** dbus.el provides D-Bus language bindings.
455D-Bus is an inter-process communication mechanism for applications
b350bdf2 456residing on the same host. See the manual for details.
09e18d03 457
b350bdf2
CY
458** Doc View Mode allows viewing of PDF, PostScript and DVI documents.
459One can also search for a regular expression in the document. For
460details, see the commentary in doc-view.el.
09e18d03 461
b350bdf2
CY
462** EasyPG provides an interface to the GNU Privacy Guard (GnuPG).
463It includes a GnuPG keyring browser, cryptographic operations on
464regions and files, and automatic encryption of *.gpg files. For
465details, see the EasyPG Assistant User's Manual.
09e18d03
CY
466
467** json.el is a library for parsing and generating JSON
468(JavaScript Object Notation), a lightweight data-interchange format.
469
470** linum.el is a new minor mode to display line numbers for the
471current buffer.
472
4b4eb083
CY
473** mairix.el is an interface to mairix, a free tool for indexing and
474searching locally stored mail. It allows you to query mairix and
475display the search results with Rmail, Gnus and VM. Note that there
476is an existing Gnus back end, nnmairix.el, which should be used with
477Maildir/MH setups.
478
09e18d03
CY
479** minibuffer-indicate-depth-mode shows the minibuffer depth in the prompt.
480
481** nXML Mode
482This is a new mode for editing XML documents. It allows a schema to
483be associated with the XML document being edited, using Relax NG as
484the schema language. The schema is used to provide two key features:
485
486*** Continuous validation. nXML validates as you type, highlighting
487any invalid parts of your document.
488
489*** Completion. nXML can assist you in entering an element name,
490attribute name or data value by using information about what is
491allowed by the schema in that context.
492
493** proced.el provides a Dired-like interface for operating on processes.
494Proced makes an Emacs buffer containing a listing of the current
495processes (using ps(1)). You can use the normal Emacs commands to
496move around in this buffer, and special Proced commands to operate on
497the processes listed.
498
499** Remember Mode is a mode for jotting down things to remember.
500Notes can be saved to a Diary file. For details, see the Remember
501Manual.
502
503** RST mode is a major mode for editing ReSTructured-Text files.
c2d0b538 504
12f165e9
CY
505** Visual Line mode provides support for editing by visual lines.
506It turns on word-wrapping in the current buffer, and rebinds C-a, C-e,
507and C-k to commands that operate by visual lines instead of logical
508lines. This is a more reliable replacement for longlines-mode.
509
c934813f
GM
510** A new `whitespace' package has been installed, and the pre-existing one
511renamed to `old-whitespace'.
2f56f788
VJL
512Now, besides reporting bogus blanks, whitespace package has a minor mode and a
513global minor mode to visualize blanks (TAB, (HARD) SPACE and NEWLINE). The
514visualization is made via faces and/or display table. Also it is possible to
515select which kind of blanks should be visualized, for example, trailing blanks,
516leading blanks, spaces, tabs, newlines, etc.
c934813f 517
0c68a24b
MA
518** xesam.el is an implementation of Xesam, an interface to (desktop)
519search engines like Beagle, Strigi, and Tracker. The Xesam API
520requires D-Bus for communication.
521
09e18d03
CY
522** zeroconf.el offers service discovery and service publishing
523interfaces according to the zeroconf specification. It communicates
524with Avahi, a zeroconf implementation, via D-Bus messages on systems
525which have installed this software.
526
527\f
528* Changes in Specialized Modes and Packages in Emacs 23.1
529
355b422f
VJL
530** Diff mode
531*** New function `diff-show-trailing-blanks'.
532
09e18d03 533** Abbrev has been rewritten in Elisp and extended with more flexibility.
e047f448 534*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
a3709a8c 535 abbrev-table-p, abbrev-insert, abbrev-table-menu.
e047f448
SM
536*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
537*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
538 extra arguments for arbitrary properties.
539*** New variable `abbrev-minor-mode-table-alist'.
540*** `local-abbrev-table' can hold a list of abbrev-tables.
541*** Abbrevs have now the following special properties:
79415279 542 `:count', `:system', `:enable-function', `:case-fixed'.
e047f448
SM
543*** Abbrev-tables have now the following special properties:
544 `:parents', `:case-fixed', `:enable-function', `:regexp',
545 `abbrev-table-modiff'.
546
09e18d03
CY
547** Apropos
548*** `apropos-library' describes the elements defined in a given library.
549*** Set `apropos-compact-layout' is you want a more compact (but wider) layout.
0253fffa 550
09e18d03 551** Archive Mode has basic support to browse Rar archives.
0253fffa 552
09e18d03 553** BibTeX mode
bafbec39 554
09e18d03 555*** New command `bibtex-initialize' (re)initializes BibTeX buffers.
bafbec39 556
09e18d03
CY
557*** New `bibtex-entry-format' options `whitespace', `braces', and
558`string', disabled by default.
12bbb989 559
09e18d03
CY
560*** New variable `bibtex-cite-matcher-alist' contains rules to
561identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
9097e8af 562
09e18d03 563*** Command `bibtex-url' allows multiple URLs per entry.
4c24d241 564
09e18d03 565** Calendar and diary
320bc739 566
09e18d03
CY
567+++
568*** There is a new date style, `iso', essentially year/month/day.
569The variable `european-calendar-style' is obsolete - use `calendar-date-style'.
570Similarly, the commands `american-calendar' and `european-calendar'
571should be replaced by `calendar-set-date-style'.
c3bb6fdb 572
09e18d03
CY
573+++
574*** The calendar namespace has been rationalized.
575All functions and variables now begin with a `calendar-', `diary-', or
576`holiday-' prefix. The various calendar systems have secondary
577prefixes, eg `calendar-french-'. The old names you are likely to use
578directly still exist, for the time being, as aliases, but please start
579using the new names.
580
e889393b
GM
581*** The whitespace in the calendar layout can be customized.
582See the variables:
583calendar-left-margin, calendar-intermonth-spacing, calendar-column-width,
584calendar-day-header-width, and calendar-day-digit-width.
585
586*** Text (e.g. ISO weeks) can be displayed between the calendar months.
587See the variables calendar-intermonth-header and calendar-intermonth-text.
588
09e18d03
CY
589*** The function `holiday-chinese' computes holidays on the Chinese calendar.
590It has been used to add items to the list `holiday-oriental-holidays'.
591
592*** `diary-remind' accepts a negative number -DAYS as a shorthand for
593the list (1 2 ... DAYS).
24cdde13 594
a6b85944
CY
595** Change Log mode
596
597*** The new command C-c C-f (change-log-find-file) finds the file
598associated with the current log entry.
599
600*** The new command C-c C-c (change-log-goto-source) goes to the
601source code associated with a log entry.
602
76be286d
DN
603** Compile and grep modes
604
605*** The mode-line entry for the *compilation* and *grep* buffer is color coded.
606It has different colors for to show that: (a) the command is still
607running, (b) successful completion, (c) error.
608
609*** compilation-auto-jump-to-first-error tells `compile' to jump to
813fb3fe
SM
610the first error encountered during compilations.
611
0b22a5e1
DN
612*** The `cc' alias for C++ files in `grep-file-aliases' has been
613improved. `hh' can be used to match C++ header files and `cchh' both
614C++ sources and headers.
615
09e18d03 616** Custom
b68769f2 617+++
09e18d03 618*** defcustom accepts new keyword arguments, `:safe' and `:risky', which
b68769f2
GM
619set a variable's `safe-local-variable' and `risky-local-variable' property.
620
09e18d03 621** Diff mode
38b627ce 622
09e18d03
CY
623*** diff-refine-hunk highlights word-level details of changes in a diff hunk.
624It's used automatically as you move through hunks, see
7381be9d 625diff-auto-refine-mode. It is bound to `C-c C-b'.
b58a65fa 626
09e18d03
CY
627*** diff-add-change-log-entries-other-window iterates through the diff
628buffer and tries to create ChangeLog entries for each change.
629It is bound to `C-x 4 A'.
f3ff0fe9 630
71554a21
JL
631** Dired
632
633*** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode,
634and C-x C-q in wdired-mode exits it with asking a question about
635saving changes.
636
d1949cd5
JL
637*** `&' runs the command `dired-do-async-shell-command' that executes
638the command asynchronously without the need to manually add ampersand
639to the end of the command. Its output appears in the buffer `*Async Shell
640Command*'.
641
6d9f0d00
JL
642*** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names.
643When a new user option `dired-isearch-filenames' is non-nil, then even
644ordinary Isearch started with `C-s' and `C-M-s' matches only at file names
645in the Dired buffer.
646
cc3236e1
JL
647*** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files.
648They visit the first marked file in the sequence and display the usual Isearch
649prompt for a string or a regexp where all Isearch commands are available.
650
71554a21
JL
651*** `Q' in Dired provides two new keys for multi-file replacement.
652The upper case key `Y' replaces all remaining matches in all remaining files
653with no more questions. The upper case key `N' stops doing replacements
654in the current file and skips to the next file. These multi-file keys
655are available for all commands that use `tags-query-replace'
656including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp',
657`reftex-query-replace-document'.
658
09e18d03
CY
659** Fortran
660*** The variable `fortran-line-length' can change the fixed-form line-length.
117d3cc5 661
09e18d03
CY
662*** In Fortran mode, M-; is now bound to the standard comment-dwim,
663rather than fortran-indent-comment.
76be286d 664
09e18d03
CY
665+++
666*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
b592c357 667
09e18d03 668** Gnus
6653c6b7 669
09e18d03
CY
670*** The Gnus package has been updated
671There are many news features, bug fixes and improvements; see the file
672GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
db86064f 673
09e18d03
CY
674*** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for
675saving articles drafts and ~/.newsrc.eld. These file may not be read
676correctly in Emacs 22 and below. If you want to Gnus across different Emacs
677versions, you may set `mm-auto-save-coding-system' to `emacs-mule'.
15947a44 678
09e18d03
CY
679** Help mode
680*** New macro `with-help-window' should set up help windows better
681than `with-output-to-temp-buffer' with `print-help-return-message'.
682*** New option `help-window-select' permits to customize whether help
683window shall be automatically selected when invoking help.
684*** New variable `help-window-point-marker' permits to specify new
685position of point in help window (for example in `view-lossage').
15947a44 686
09e18d03 687** Isearch
15947a44 688
4f75e082
JL
689*** New command `isearch-forward-word' bound globally to `M-s w' starts
690incremental word search. New command `isearch-toggle-word' bound to the
691same key `M-s w' in Isearch mode toggles word searching on or off
692while Isearch is active.
693
694*** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch
695mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current
696search string as its regexp argument. The same key `M-s h r' and
697other keys on the `M-s h' prefix are bound globally to the command
698`highlight-regexp' and other hi-lock commands.
f45acc9d 699
4f75e082
JL
700*** New command `isearch-occur' bound to `M-s o' in Isearch mode
701runs `occur' with the current search string. The same key `M-s o'
702is bound globally to the command `occur'.
15947a44 703
4f75e082
JL
704*** Isearch can now search through multiple ChangeLog files.
705When running Isearch in a ChangeLog file, if the search fails,
09e18d03
CY
706then another C-s tries searching the previous ChangeLog,
707if there is one (e.g. go from ChangeLog to ChangeLog.12).
babc4609 708This is enabled if multi-isearch-search is non-nil.
93a142e1 709
babc4609 710*** Two new commands to start Isearch on a list of marked buffers
cc3236e1
JL
711for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and
712`M-s a M-C-s'.
15947a44 713
4f75e082 714*** The part of an Isearch that failed to match is highlighted in `isearch-fail'
09e18d03 715face.
5d503af9 716
4f75e082
JL
717*** `C-h C-h' in Isearch mode displays isearch-specific Help screen,
718`C-h b' displays all Isearch key bindings, `C-h k' displays the full
719documentation of the given Isearch key sequence, `C-h m' displays
720documentation of Isearch mode. All the rest Help commands exit Isearch mode
09e18d03 721and execute their global definitions.
332de56f 722
09e18d03
CY
723*** When started in the minibuffer, Isearch searches in the minibuffer
724history. See `Minibuffer changes', above.
2793c9bb 725
09e18d03
CY
726** Python
727*** The file etc/emacs.py now supports both Python 2 and 3, meaning
728that either version can be used as inferior Python by python.el.
c5578d5f 729
09e18d03
CY
730*** Python mode now has `pdbtrack' functionality. When using pdb to
731debug a Python program, pdbtrack notices the pdb prompt and displays
732the source file and line that the program is stopped at, much the same
733way as gud-mode does for debugging C programs with gdb.
2793c9bb 734
09e18d03 735** T-mouse Mode
2793c9bb 736
09e18d03
CY
737*** If the gpm mouse server is running and t-mouse-mode is enabled,
738Emacs uses a Unix socket in a GNU/Linux console to talk to server,
739rather than faking events using the client program mev. This C level
740approach provides mouse highlighting and help echoing in the
741minibuffer.
2793c9bb 742
cc213f24
MA
743+++
744** Tramp
745
746*** New connection methods.
747The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
748been introduced. There are also new so-called gateway methods
749"tunnel" and "socks".
750
751*** Multihop syntax has been removed.
752The pseudo-method "multi" has been removed. Instead of, multi hops
753can be specified by the new variable `tramp-default-proxies-alist'.
754
755*** More default settings.
756Default values can be set via the variables `tramp-default-user',
757`tramp-default-user-alist' and `tramp-default-host'.
758
759*** Connection information is cached.
760In order to reduce connection setup, information about used
761connections are kept persistent in a file. The name of this file is
762defined in the variable `tramp-persistency-file-name'.
763
764*** Control of remote processes.
765Running processes on a remote host can be controlled by settings in
766`tramp-remote-path' and `tramp-remote-process-environment'.
767
768*** Success of remote copy is checked.
769When the variable `file-precious-flag' is set, the success of a remote
770file copy is checked via the file's checksum.
771
7cba69f2
MA
772*** Passwords can be read from an authentification file.
773Tramp uses the package `auth-source' to read passwords from a file, if
774necessary.
775
289aee1c 776** VC and related modes
95d8772f 777
09e18d03
CY
778*** VC now supports applying VC operations to a set of files at a time.
779This enables VC to work much more effectively with changeset-oriented
780version-control systems such as Subversion, GNU Arch, Mercurial, Git
781and Bzr. VC will now pass a multiple-file commit to these systems as
782a single changeset.
d15f7b68 783
09e18d03 784*** vc-dir is a new command that displays file names and their VC
289aee1c
DN
785status. It allows to apply various VC operations to a file, a
786directory or a set of files/directories.
c3f01f42 787
09e18d03 788*** Clicking on the VC mode-line entry now pops the VC menu.
4c24d241 789
09e18d03 790*** The VC mode-line entry now has a tooltip that explains the VC file status.
d15f7b68 791
09e18d03
CY
792*** In VC Annotate mode, for VC systems that support changesets, you can
793see the diff for the whole changeset (not only for the current file)
e86fa02b 794by typing the D key.
a9f480e8 795
e86fa02b 796*** In VC Annotate mode, you can type v to toggle the annotation visibility.
2fb6c6be 797
09e18d03
CY
798*** In VC Annotate mode, you can type f to show the file revision on
799the current line.
d5d381e2 800
e86fa02b
DN
801*** In VC Annotate mode, for VC systems that support changesets, you
802can see the diff for the whole changeset (not only for the current
803file) by typing the D key or using the "Show changeset diff of
804revision at line" menu entry.
805
09e18d03
CY
806*** Asynchronous VC commands display [Waiting...] in the mode-line
807of the corresponding buffer as long as the asynchronous process is
808active.
cf944fa4 809
09e18d03
CY
810*** Log entries can be modified using the key "e" in log-view.
811For now only CVS, RCS, SCCS and SVN support this functionality.
812This is done by the `modify-change-comment' backend function.
143cecdb 813
09e18d03
CY
814*** In log-view-mode, for VC systems that support changesets, you can
815see the diff for the whole changeset (not only for the current file)
816by typing the D key or using the "Changeset Diff" menu entry.
cf944fa4 817
289aee1c
DN
818*** In Log Edit mode, C-c C-d now shows the diff for the files involved.
819
820*** vc-git supports the "git grep" command.
821
09e18d03
CY
822*** VC Support for Meta-CVS has been removed for lack of maintainer able
823to update it to the new VC.
cf944fa4 824
d15f7b68
GM
825** Miscellaneous
826
827*** comint-mode uses `start-file-process' now (see Lisp Changes).
cc213f24
MA
828If `default-directory' is a remote file name, subprocesses are started
829on the corresponding remote system.
830
09e18d03
CY
831*** Eldoc highlights the function argument under point
832with the face `eldoc-highlight-function-argument'.
4596901f 833
09e18d03 834*** In Etags, the --members option is now the default.
fffa137c 835Use --no-members if you want the old default behavior of not tagging
09e18d03 836struct members in C, members variables in C++ and variables in PHP.
1752e205 837
09e18d03
CY
838*** The `gdb' command only works with the graphical interface now.
839Use `gud-gdb' if you want the (old) text command mode.
840
841*** goto-address.el provides two new minor modes, goto-address-mode and
842goto-address-prog-mode, which buttonize URLS and email addresses.
843
844*** The new command `eshell/info' runs info in an eshell buffer.
3cf86f00 845
4d1e89e3
GM
846*** The new variable `ffap-rfc-directories' specifies a list of local
847directories in which `ffap-rfc' will first search for RFCs.
848
09e18d03
CY
849*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
850See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
851
852*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
853
854*** Info displays breadcrumbs in the header of the page.
855See Info-breadcrumbs-depth to control it.
856
d2c98acc 857*** net-utils has an `iwconfig' command, similar to the existing `ifconfig'.
b7bfcc8a 858It is used to configure wireless interfaces.
d2c98acc 859
09e18d03
CY
860*** The pcmpl-unix package supports hostname completion for ssh and scp.
861
862*** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
863
864*** smerge-refine highlights word-level details of changes in conflict.
7381be9d
TTN
865It's used automatically as you move through conflicts, see
866smerge-auto-refine-mode.
09e18d03
CY
867
868*** talk.el has been extended for multiple tty support.
869
870*** A new command `display-time-world' has been added to the Time
871package. It creates a buffer with an updating time display using
872several time zones.
873
874*** The appearance of superscript and subscript in TeX is more customizable.
875See the documentation of the variables: tex-fontify-script,
876tex-font-script-display, tex-suscript-height-ratio, and
877tex-suscript-height-minimum.
878
879*** view-remove-frame-by-deleting is now by default t
880since users found iconification of view-mode frames distracting.
881
882*** WoMan tries to add locale-specific manual page directories to the
883search path. This can be disabled by setting `woman-locale' to nil.
884
0bfd685e
GM
885\f
886* Changes in Emacs 23.1 on non-free operating systems
8ab314f9 887
203553fd
JPW
888** Case is now considered significant in completion on MS-Windows.
889The default value of `completion-ignore-case' is now nil on
890MS-Windows, the same as it is for other operating systems. The
891variable doesn't apply to reading a file name -- in that case Emacs
892heeds `read-file-name-completion-ignore-case' instead.
893
672f99b6
JR
894---
895** IPv6 is supported on MS-Windows.
896Emacs now supports IPv6 on Windows XP and later, and earlier versions
2660a9da 897of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was
672f99b6
JR
898supported on other platforms, but not on Windows due to using the winsock
8991.1 header file, even though Emacs was linking to the winsock 2 library.
900
0d22595d 901---
6e344060
JR
902** Busy cursor (hourglass) now displays on MS-Windows.
903When Emacs is busy, an hourglass mouse cursor is displayed on Windows.
2660a9da
JR
904In Emacs 22 only X supported the busy cursor.
905
906---
907** Battery status is available on MS-Windows
908Emacs can now display the battery status in the mode-line when enabled with
909display-battery-mode or from the Options menu. More verbose battery
910information is also available with the command `battery'. In Emacs 22
911battery status was supported only on GNU/Linux and Mac.
6e344060 912
3280c5c5
JR
913** More keys available on MS-Windows.
914Keys normally associated with IMEs, and some exotic keys not normally found
915on standard keyboards have been given names so they can be bound to functions
916inside Emacs. If there are keys on your keyboard that have not been exposed
917to Emacs in the past, try C-h k to see if they are available now.
918
919Emacs can now bind functions to the extra buttons for media player and
920browser control present on some keyboards. These buttons are disabled
921by default, since enabling them prevents their system-wide use when
922Emacs has focus. To enable them, set the variable
0caa490b 923w32-pass-multimedia-buttons to nil. See the doc string of that variable
3280c5c5 924for the list of extra keys that are available.
2660a9da 925
0bfd685e
GM
926\f
927* Incompatible Lisp Changes in Emacs 23.1
8ec65cd7 928
fd9440c5 929** Variables cannot be both buffer-local and frame-local any more.
a9b08254 930
fc944cd4 931** `functionp' returns nil for special forms.
65f81a0b 932I.e., it only returns t for objects that can be passed to `funcall'.
fc944cd4 933
d82c3d44
GM
934** The behavior of map-char-table has changed. It may call the
935specified function with a cons (FROM . TO) as a key if characters in
936that range have the same value.
937
b350bdf2
CY
938** Process changes
939+++
940*** The function `dired-call-process' has been removed.
03605a28 941+++
b350bdf2
CY
942*** The multibyteness of process filters is now determined by the
943coding-system used for decoding. The functions
944`process-filter-multibyte-p' and `set-process-filter-multibyte' are
945obsolete.
03605a28 946
777ea444 947** The variable `byte-compile-warnings' can now be a list starting with `not',
0caa490b 948meaning to disable the specified warnings. The meaning of this list
777ea444 949may therefore be the reverse of what you expect (of course, this is
0caa490b 950only an issue if you make use of the new `not' syntax). Rather than
777ea444
GM
951checking/manipulating elements directly, use the new functions
952`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
953`byte-compile-enable-warning.'
954
69df9d6d
GM
955** `mode-name' is no longer guaranteed to be a string.
956Use `(format-mode-line mode-name)' to ensure a string value.
957
b350bdf2
CY
958** Internationalization changes
959
960*** The value of the function `charset-id' is now always 0.
961
962*** The functions `register-char-codings' and `coding-system-spec'
963have been removed.
964
965*** The cpXXX coding systems are now supported automatically.
966The functions cp-...-codepage, which you had to use in Emacs 22 to
967enable support for these coding systems, have been deleted.
968
969*** The following features have been removed. They were used for
85a1f98d
GM
970displaying various scripts with specific fonts, and are no longer
971needed now that OpenType font support is available:
972
b350bdf2 973**** `devanagari' and `devan-util', and all associated devanagari-* and
85a1f98d
GM
974dev-* functions and variables (formerly used for Devanagari script).
975
b350bdf2 976**** `kannada' and `knd-util', and all associated kannada-* and knd-*
85a1f98d
GM
977functions and variables (formerly used for Kannada script).
978
b350bdf2 979**** `malayalam' and `mlm-util', and all associated malayalam-* and
85a1f98d
GM
980mlm-* functions and variables (formerly used for Malayalam script).
981
b350bdf2 982**** `tamil' and `tml-util, and all associated tamil-* and tml-*
85a1f98d 983functions and variables (formerly used for Tamil script).
6a6b4d7d 984
0bfd685e
GM
985\f
986* Lisp Changes in Emacs 23.1
8ab314f9 987
b350bdf2
CY
988+++
989** New variable `user-emacs-directory'.
990Use this instead of "~/.emacs.d".
43f8b275 991
b350bdf2
CY
992** If a local hook function has a non-nil `permanent-local-hook'
993property, `kill-all-local-variables' does not remove it from the local
994value of the hook variable; it remains even if you change major modes.
09e18d03 995
b350bdf2
CY
996** `frame-inherited-parameters' lets new frames inherit parameters from
997the selected frame.
09e18d03 998
b350bdf2
CY
999** New keymap `input-decode-map' overrides like key-translation-map, but
1000applies before function-key-map. Also it is terminal-local contrary to
1001key-translation-map. Terminal-specific key-sequences are generally added to
1002this map rather than to function-key-map now.
09e18d03 1003
b350bdf2 1004** `ignore-errors' is now a standard macro (does not require the CL package).
09e18d03 1005
b350bdf2
CY
1006** `interprogram-paste-function' can now return one string or a list
1007of strings. In the latter case, Emacs puts the second and following
1008strings on the kill ring.
09e18d03 1009
b350bdf2
CY
1010+++
1011** In `condition-case', a handler can specify "let the debugger run first".
1012You do this by writing `debug' in the list of conditions to be handled,
1013like this:
09e18d03 1014
b350bdf2
CY
1015 (condition-case nil
1016 (foo bar)
1017 ((debug error) nil))
09e18d03 1018
b350bdf2 1019** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
09e18d03 1020
b350bdf2
CY
1021** `beginning-of-defun-function' now takes one argument, the count
1022given to `beginning-of-defun'.
09e18d03 1023
b350bdf2
CY
1024+++
1025** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
1026IDENTIFICATION specifies which part of the remote identifier has to be
1027returned. With CONNECTED passed non-nil, it is checked whether a
1028remote connection has been established already.
09e18d03 1029
b350bdf2
CY
1030** The new macro `declare-function' suppresses compiler warnings about
1031undefined functions.
a1562258 1032
b350bdf2 1033** Changes to interactive function handling
8ba31f36 1034
b350bdf2
CY
1035*** The new interactive spec code ^ says to first call
1036handle-shift-selection if shift-select-mode is non-nil, before reading
1037the command arguments. This is used for shift-selection (see above).
e2947429 1038
b350bdf2
CY
1039*** Built-in functions can now have an interactive specification that
1040is not a prompt string. If the `intspec' parameter of a `DEFUN'
1041starts with a `(', the string is evaluated as a Lisp form.
e2947429 1042
b350bdf2
CY
1043*** The interactive-form of a function can be added post-facto via the
1044`interactive-form' symbol property. Mostly useful to add complex
1045interactive forms to subroutines.
d87be1df 1046
b350bdf2 1047** Region changes
3ae459e5 1048
b350bdf2
CY
1049*** Commands should use `use-region-p' to test whether there is
1050an active region that they should operate on.
3ae459e5 1051
b350bdf2
CY
1052*** `region-active-p' returns non-nil when Transient Mark mode is
1053enabled and there is an active region. This is NOT the best function
1054to use to test whether a command should operate on the region instead
1055of the usual behavior -- for that, use `use-region-p'.
58555d81 1056
b350bdf2
CY
1057*** If a command sets `transient-mark-mode' to (only . OLDVAL), that
1058means to activate transient-mark-mode temporarily, until the next
1059unshifted point motion command or mark deactivation. Afterwards,
1060reset transient-mark-mode to the value OLDVAL. The values `only' and
1061`identity', introduced in Emacs 22, are now deprecated.
e5c4079c 1062
b350bdf2 1063** Emacs session information
13cda5f9 1064
b350bdf2
CY
1065*** The new variables `before-init-time' and `after-init-time' record the
1066value of `current-time' before and after Emacs loads the init files.
a2bc5bdd 1067
b350bdf2 1068*** The new function `emacs-uptime' returns the uptime of an Emacs instance.
d82c3d44 1069
b350bdf2
CY
1070*** The new function `emacs-init-time' returns the duration of the
1071Emacs initialization.
50bfa18a 1072
b350bdf2 1073** Changes affecting display-buffer
39d0bf74 1074
b350bdf2
CY
1075*** New value nil for split-height-threshold inhibits vertical splitting
1076unless there's no other window.
59b5d020 1077
b350bdf2 1078*** New option split-width-threshold controls horizontal splitting.
426e6ba0 1079
b350bdf2 1080*** A window can be split horizontally even when it's not full-width.
426e6ba0 1081
b350bdf2
CY
1082*** New option split-window-preferred-function can be set to a function
1083to override the default splitting mechanism of display-buffer.
2d105adf 1084
b350bdf2 1085** Minibuffer and completion changes
b9694062 1086+++
b350bdf2 1087*** A list of default values can be specified for the DEFAULT argument of
b9694062
JL
1088functions `read-from-minibuffer', `read-string', `read-command',
1089`read-variable', `read-buffer', `completing-read'. Elements of this list
1090are available for inserting into the minibuffer by typing `M-n'.
1091For empty input these functions return the first element of this list.
1092
90993beb 1093*** New function `read-regexp' uses the regexp history and some useful
4f75e082 1094regexp defaults (string at point, last Isearch/replacement regexp/string)
90993beb
JL
1095via M-n when reading a regexp in the minibuffer.
1096
b350bdf2
CY
1097*** minibuffer-local-must-match-filename-map is now named
1098minibuffer-local-filename-must-match-map.
66dc1ca2 1099
b350bdf2
CY
1100*** `all-completions' may now return the base size in the last cdr.
1101Since this means the returned list is not properly nil-terminated, this
1102is an incompatible change and is thus enabled by the new variable
1103completion-all-completions-with-base-size.
66dc1ca2 1104
b350bdf2
CY
1105*** The `require-match' argument to `completing-read' accepts a new value
1106`confirm-only'.
d03b9b31 1107
b350bdf2
CY
1108** Search and replacement changes
1109+++
1110*** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
1111+++
1112*** New function `match-substitute-replacement' returns the result of
1113`replace-match' without actually using it in the buffer.
c60d543d 1114
b350bdf2
CY
1115*** The new variable `replace-search-function' determines the function
1116to use for searching in query-replace and replace-string.
3ae459e5 1117
b350bdf2
CY
1118*** The new variable `replace-re-search-function' determines the
1119function to use for searching in `query-replace-regexp',
1120`replace-regexp', `query-replace-regexp-eval', and
1121`map-query-replace-regexp'.
4f4a84ec 1122
4f75e082
JL
1123*** New keymap `search-map' bound to `M-s' provides global bindings
1124for search related commands.
1125
1126*** New keymap `multi-query-replace-map' contains additonal keys bound
71554a21
JL
1127to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
1128
b350bdf2
CY
1129*** The variable `inhibit-changing-match-data', if non-nil, prevents
1130the search and match primitives from changing the match data.
967b2682 1131
b350bdf2 1132** File handling changes
8bf5c8a6 1133
b350bdf2
CY
1134*** set-file-modes is now interactive and can take the mode value in
1135symbolic notation thanks to auxiliary functions.
d9774611 1136
b350bdf2
CY
1137*** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
1138requires confirmation before opening a non-existent file.
1139
1140** Process changes
1141+++
1142*** The new function `start-file-process' is similar to `start-process',
1143but obeys file handlers. The file handler is chosen based on
1144`default-directory'. The functions `start-file-process-shell-command'
1145and `process-file-shell-command' are also new; they call internally
1146`start-file-process' and `process-file', respectively.
1147
1148*** The new function `process-lines' executes an external program and
1149returns its output as a list of lines.
63571b5a 1150
d82c3d44
GM
1151** Character code, representation, and charset changes.
1152
0caa490b 1153The character code space is now 0x0..0x3FFFFF with no gap.
d82c3d44
GM
1154Characters of code 0x0..0x10FFFF are Unicode characters of the same code points.
1155Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit bytes.
1156
0caa490b 1157Generic characters no longer exist.
d82c3d44 1158
b350bdf2
CY
1159In buffers and strings, characters are represented by UTF-8 byte
1160sequences in a multibyte buffer/string.
d82c3d44 1161
b350bdf2
CY
1162The concept of a charset has changed. A single character may belong
1163to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets
1164unicode, iso-8859-1, iso-8859-3, etc).
d82c3d44
GM
1165
1166*** The functions `encode-char' and `decode-char' now accept any character sets.
1167
1168*** The function `define-charset' now accepts a completely different
1169form of arguments (old-style arguments still work).
1170
d82c3d44
GM
1171*** The value of the function `char-charset' depends on the current
1172priorities of charsets.
1173
d82c3d44
GM
1174*** The function get-char-code-property now accepts many Unicode base
1175character properties. They are `name', `general-category',
1176`canonical-combining-class', `bidi-class', `decomposition',
1177`decimal-digit-value', `digit-value', `numeric-value', `mirrored',
1178`old-name', `iso-10646-comment', `uppercase', `lowercase', and
1179`titlecase'.
1180
b350bdf2
CY
1181*** The functions `modify-syntax-entry' and `modify-category-entry' now
1182accept a cons of characters as the first argument, and modify all
1183entries in that range of characters.
d82c3d44 1184
b350bdf2
CY
1185+++
1186*** `translation-table-for-input' is now obsolete.
d82c3d44 1187
b350bdf2 1188*** New functions:
d82c3d44 1189
b350bdf2
CY
1190**** `characterp' returns t if and only if the argument is a character.
1191This replaces `char-valid-p', which is now obsolete.
d82c3d44 1192
b350bdf2 1193**** `max-char' returns the maximum character code (currently #x3FFFFF).
d82c3d44 1194
b350bdf2
CY
1195**** `define-charset-alias' defines an alias of a charset.
1196
1197**** `set-charset-priority' sets priorities of charsets.
1198
1199**** `charset-priority-list' returns a prioritized list of charsets.
1200
1201**** `unibyte-string' makes a unibyte string from bytes.
1202
1203**** `define-char-code-property' defines a character code property.
1204
1205**** `char-code-property-description' returns the description string of
1206a character code property.
1207
1208*** New variables:
1209
7082ceb2
CY
1210**** file-local-variables-alist stores an alist of file-local
1211variables defined in the current buffer.
1212
b350bdf2
CY
1213**** `find-word-boundary-function-table' is a char-table of functions to
1214search for a word boundary.
1215
1216**** `char-script-table' is a char-table of script names.
1217
1218**** `char-width-table' is a char-table of character widths.
1219
1220**** `print-charset-text-property' controls how to handle `charset' text
1221property on printing a string.
1222
1223**** `printable-chars' is a char-table of printable characters.
d82c3d44 1224
505d8756 1225** Code conversion changes
d82c3d44
GM
1226
1227*** The new function `define-coding-system' should be used to define a
1228coding system instead of `make-coding-system' (which is now obsolete).
1229
1230*** The functions `encode-coding-region' and `decode-coding-region'
1231have an optional 4th argument to specify where the result of
1232conversion should go.
1233
1234*** The functions `encode-coding-string' and `decode-coding-string'
1235have an optional 4th argument specifying a buffer to store the result
1236of conversion.
1237
b350bdf2 1238*** The functions `set-coding-priority' and `make-coding-system' are obsolete.
d82c3d44 1239
b350bdf2 1240*** New functions:
d82c3d44 1241
b350bdf2
CY
1242**** `with-coding-priority' executes Lisp code using the specified
1243coding system priority order.
d82c3d44 1244
b350bdf2
CY
1245**** `check-coding-systems-region' checks if the text in the region is
1246encodable by the specified coding systems.
d82c3d44 1247
b350bdf2 1248**** `coding-system-aliases' returns a list of aliases of a coding system.
d82c3d44 1249
b350bdf2
CY
1250**** `coding-system-charset-list' returns a list of charsets supported
1251by a coding system.
d82c3d44 1252
b350bdf2
CY
1253**** `coding-system-priority-list' returns a list of coding systems
1254ordered by their priorities.
1255
1256**** `set-coding-system-priority' sets priorities of coding systems.
d82c3d44
GM
1257
1258** There is a new input method, Robin, different from Quail.
0caa490b 1259It has three functionalities:
d82c3d44
GM
1260 i) a simple input method (converts an ASCII sequence into a string).
1261ii) converts an existing buffer substring into another string
1262iii) reverse conversion (each character produced by a
1263robin rule can hold the original ASCII sequence as a char-code-property)
1264
1265*** The new function `robin-define-package' defines a Robin package.
1266
1267*** The new function `robin-modify-package' modifies an existing Robin package.
1268
1269*** The new function `robin-use-package' starts using a Robin package
1270as an input method.
1271
888d7d86
KH
1272*** The new function `string-to-unibyte' is like `string-as-unibyte'
1273but signals an error if STRING contains a non-ASCII, non-eight-bit
1274character.
1275
505d8756 1276** Changes related to the new font backend
2b7a2553 1277
b19aa6dd
GM
1278Which font backends to use can be specified by the X resource "FontBackend".
1279For instance, to use both X core fonts and Xft fonts:
2b7a2553 1280
b19aa6dd 1281Emacs.FontBackend: x,xft
2b7a2553 1282
b19aa6dd
GM
1283If this resource is not set, Emacs tries to use all font backends
1284available on your graphic device.
d82c3d44
GM
1285
1286*** New frame parameter `font-backend' specifies a list of
1287font-backends supported by the frame's graphic device. On X, they are
1288currently `x' and `xft'.
1289
b350bdf2
CY
1290*** The function `set-fontset-font' now accepts a script name as the
1291second argument, and has an optional 5th argument to control how to
1292set the font.
d82c3d44 1293
b350bdf2 1294*** New functions:
d82c3d44 1295
b350bdf2 1296**** `fontp' checks if the argument is a font-spec or font-entity.
d82c3d44 1297
b350bdf2 1298**** `font-spec' creates a new font-spec object.
d54b8954 1299
b350bdf2 1300**** `font-get' returns a font property value.
d82c3d44 1301
b350bdf2 1302**** `font-put' sets a font property value.
d82c3d44 1303
b350bdf2 1304**** `font-face-attributes' returns a plist of face attributes set by a font.
d82c3d44 1305
b350bdf2 1306**** `list-fonts' returns a list of font-entities matching a font spec.
d82c3d44 1307
b350bdf2 1308**** `font-font' returns the font-entity best matching the given font spec.
d82c3d44 1309
b350bdf2 1310**** `list-families' returns a list of family names of available fonts.
d82c3d44 1311
b350bdf2
CY
1312**** `font-xlfd-name' returns an XLFD name of a given font spec, font
1313entity, or font object.
1314
1315**** `clear-font-cache' clears all font caches.
d82c3d44 1316
b350bdf2 1317** Changes related to multiple-terminal (multi-tty) support
24cdde13 1318
b12f6e85
SM
1319*** $TERM is now set to `dumb' for subprocesses. If you want to know the
1320$TERM inherited by Emacs you will have to look inside initial-environment.
1321
6168122d
SM
1322*** $DISPLAY is now dynamically inherited from the frame's `display'.
1323
b350bdf2 1324*** The `window-system' variable is now frame-local. The new
24cdde13 1325`initial-window-system' variable contains the `window-system' value
bbe3eb99
GM
1326for the first frame. `window-system' is also now a function that
1327takes a frame argument.
24cdde13 1328
b350bdf2
CY
1329*** The `keyboard-translate-table' variable and the terminal and
1330keyboard coding systems are now terminal-local.
1331
24cdde13
GM
1332*** You can specify a terminal device (`tty' parameter) and a terminal
1333type (`tty-type' parameter) to `make-terminal-frame'.
1334
24cdde13
GM
1335*** The function `make-frame-on-display' now works during a tty
1336session, and `make-frame-on-tty' works during a graphical session.
1337
419f8f49
SM
1338*** A new data type for terminals with functions: `get-device-terminal',
1339`terminal-parameters', `terminal-parameter', `set-terminal-parameter'.
24cdde13 1340
b350bdf2
CY
1341*** Function key sequences are now mapped using `local-function-key-map',
1342a new variable. This inherits from the global variable function-key-map,
1343which is not used directly any more.
92cd6a7c 1344
b350bdf2 1345*** New hooks:
da406961 1346
7082ceb2
CY
1347**** before-hack-local-variables-hook is called after setting new
1348variable file-local-variables-alist, and before actually applying the
1349file-local variables.
1350
b350bdf2
CY
1351**** `suspend-tty-functions' and `resume-tty-functions' are called
1352after a tty frame has been suspended or resumed, respectively. The
1353functions are called with the terminal id of the frame being
1354suspended/resumed as a parameter.
da406961 1355
b350bdf2
CY
1356**** The special hook `delete-terminal-functions' is called before
1357deleting a terminal.
82866ad5 1358
b350bdf2 1359*** New functions:
24cdde13 1360
b350bdf2 1361**** `environment'
24cdde13 1362
b350bdf2 1363**** `make-frame-on-tty' creates a new frame on another tty device.
24cdde13 1364
b350bdf2 1365**** `delete-tty'
9f44d41a 1366
b350bdf2 1367**** `suspend-tty'
ea2e3ef4 1368
b350bdf2 1369**** `resume-tty'.
8d371994 1370
b350bdf2 1371*** `initial-environment' holds the environment inherited from Emacs's parent.
8d371994 1372
b350bdf2 1373** Redisplay changes
8d371994 1374
b350bdf2
CY
1375*** For underlined characters, the distance between the underline and
1376the baseline is controlled by a new variable, `underline-minimum-offset'.
0a963185 1377
b350bdf2
CY
1378*** You can now pass the value of the `invisible' property to
1379invisible-p to check whether it would cause the text to be invisible.
1380Convenient when checking invisibility of text with no buffer position
1381(e.g. in before/after-strings).
c69b0314 1382
b350bdf2 1383*** Non-breaking space is now displayed as whitespace.
9f44d41a 1384
b350bdf2 1385*** `clear-image-cache' can be told to flush only images of a specific file.
9f44d41a 1386
0c8b58e9
CY
1387*** `vertical-motion' can now be given a goal column.
1388It now accepts a cons cell (COLS . LINES) in its first argument, which
1389says to stop, where possible, at a pixel x-position equal to COLS
1390times the default column width.
1391
b350bdf2 1392** Miscellaneous new functions
9f44d41a 1393
b350bdf2
CY
1394*** `format-seconds' converts a number of seconds into a readable
1395string of days, hours, etc.
9f44d41a 1396
b350bdf2 1397*** `apply-partially' performs a "curried" application of a function.
abf13a8b 1398
b350bdf2
CY
1399*** `read-shell-command' does what its name says, with completion. It
1400uses the minibuffer-local-shell-command-map for that.
b2b387f9 1401
b350bdf2
CY
1402*** `buffer-swap-text' swaps text between two buffers. This can be
1403useful for modes such as tar-mode, archive-mode, RMAIL.
967b2682 1404
b350bdf2
CY
1405*** `read-color' reads a color name using the minibuffer.
1406
1407*** `face-all-attributes' returns an alist describing all the basic
1408attributes of a given face.
1409
1410*** `window-full-width-p' returns t if a window is as wide as its
1411frame.
1412
1413*** `split-string-and-unquote' does (what?)
1414
1415*** `combine-and-quote-strings' does (what?)
1416
1417*** `image-refresh' refreshes all images associated with a given image
1418specification.
64639e26 1419
b350bdf2 1420*** The two new functions `looking-at-p' and `string-match-p' can do
45595a4f
RS
1421the same matching as `looking-at' and `string-match' without changing
1422the match data.
89835619 1423
81efacf9
CY
1424*** The two new functions `make-serial-process' and
1425`serial-process-configure' provide a Lisp interface to the new serial
1426port support (see Emacs changes, above).
1427
b350bdf2
CY
1428** Miscellaneous new variables
1429
1430*** `this-command-keys-shift-translated' is non-nil if the key
1431sequence invoking the current command was found by shift-translation.
1432
1433*** `window-point-insertion-type' determines the insertion-type of the
1434marker used for window-point.
1435
1436*** bookmark provides `bookmark-make-record-function' so special major
1437modes like Info can teach bookmark.el how to save and restore the
1438relevant data.
1439
1440*** `next-error-recenter' specifies how next-error should recenter the
1441visited source file. Its value can be a number (for example, 0 for
1442top line, -1 for bottom line), or nil for no recentering.
1443
1444*** `fill-forward-paragraph-function' specifies which function the
1445filling code should use to find paragraph boundaries.
1446
1447*** `custom-note-var-changed' tells Custom to treat the change in a
1448certain variable as having been made within Custom.
1449
9bae34bf 1450\f
0bfd685e 1451* New Packages for Lisp Programming in Emacs 23.1
efeb796b 1452
b350bdf2
CY
1453** The new package avl-tree.el deals with the AVL tree data structure.
1454
1455** The new package check-declare.el verifies the accuracy of
1456declare-function macros (see Lisp Changes, above).
d445b3f8 1457
20202f5e 1458** find-cmd.el can build `find' commands using lisp syntax.
6dfcbe31 1459
babc4609
JL
1460** The package misearch.el has been added. It allows Isearch to search
1461through multiple buffers. A variable `multi-isearch-next-buffer-function'
1462defines the function to call to get the next buffer to search in the series
1463of multiple buffers. Top-level commands `multi-isearch-buffers',
1464`multi-isearch-buffers-regexp', `multi-isearch-files' and
1465`multi-isearch-files-regexp' accept a single argument that specifies
1466a list of buffers/files to search for a string/regexp.
9097e8af 1467
b350bdf2
CY
1468** The new major mode `special-mode' is intended as a parent for
1469major modes such as those that set the "'mode-class 'special" property.
d53a60a6 1470
05197f40 1471\f
a933dad1 1472----------------------------------------------------------------------
5b87ad55 1473This file is part of GNU Emacs.
a933dad1 1474
ab73e885 1475GNU Emacs is free software: you can redistribute it and/or modify
5b87ad55 1476it under the terms of the GNU General Public License as published by
ab73e885
GM
1477the Free Software Foundation, either version 3 of the License, or
1478(at your option) any later version.
5b87ad55
GM
1479
1480GNU Emacs is distributed in the hope that it will be useful,
1481but WITHOUT ANY WARRANTY; without even the implied warranty of
1482MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1483GNU General Public License for more details.
a933dad1 1484
5b87ad55 1485You should have received a copy of the GNU General Public License
ab73e885 1486along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a933dad1 1487
05197f40 1488\f
a933dad1
DL
1489Local variables:
1490mode: outline
1491paragraph-separate: "[ \f]*$"
1492end:
ab5796a9 1493
a533413c 1494arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2