(isearch-mode-map): Bind `M-s r' to `isearch-toggle-regexp'
[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
346region in transient-mark-mode, the word under the cursor, the last isearch
347regexp, the last isearch string and the last replacement regexp.
348
297b8ccd
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
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
f45acc9d
JL
412*** New keymap `search-map' bound to `M-s' provides global bindings
413for search related commands: `M-s o' for `occur', `M-s h r' for
414`highlight-regexp' and other hi-lock commands on the `M-s h' prefix.
415
09e18d03
CY
416*** C-l is bound to the new command recenter-top-bottom, rather than recenter.
417This moves the current line to window center, top and bottom on
418successive invokations.
15f3eb73 419
09e18d03 420*** scroll-preserve-screen-position also preserves the column position.
c154c0be 421
09e18d03
CY
422*** If `yank-pop-change-selection' is t, rotating the kill ring also
423updates the selection or clipboard to the current yank, just as M-w
424would do so with the text it copies to the kill ring.
425
426+++
427*** C-M-% now shows replacement as it would look in the buffer, with
428`\N' and `\&' substituted according to the match. Old behavior can be
429restored by customizing `query-replace-show-replacement'.
430
431*** The command shell prompts for the default directory, when it is
432called with a prefix and the default directory is a remote file name.
433This is because some file name handlers (like ange-ftp) are not able to
434run processes remotely.
435
436*** The new command kill-matching-buffers kills buffers whose name
437matches a regexp.
438
b350bdf2
CY
439*** The new commands `pp-macroexpand-expression' and
440`pp-macroexpand-last-sexp' pretty-print macro expansions.
8f377a4b 441
09e18d03
CY
442\f
443* New Modes and Packages in Emacs 23.1
e11910e2 444
09e18d03
CY
445** FIXME add details of new packages imported from lisp/gnus.
446[Maybe some information from doc/misc/gnus-coding.texi can be reused]
c06c430f 447
e11910e2
GM
448** Auto Composition Mode is a minor mode that composes characters
449automatically when they are displayed. It is globally on by default.
450It uses `auto-composition-function' (default `auto-compose-chars').
451
09e18d03 452** Bubbles, a new game, is similar to SameGame.
f6b26818 453
7ef39c6e
GM
454** bug-reference.el provides clickable links to bug reports.
455
b350bdf2 456** copyright.el provides utilities for updating copyright notices in files.
09e18d03
CY
457
458** dbus.el provides D-Bus language bindings.
459D-Bus is an inter-process communication mechanism for applications
b350bdf2 460residing on the same host. See the manual for details.
09e18d03 461
b350bdf2
CY
462** Doc View Mode allows viewing of PDF, PostScript and DVI documents.
463One can also search for a regular expression in the document. For
464details, see the commentary in doc-view.el.
09e18d03 465
b350bdf2
CY
466** EasyPG provides an interface to the GNU Privacy Guard (GnuPG).
467It includes a GnuPG keyring browser, cryptographic operations on
468regions and files, and automatic encryption of *.gpg files. For
469details, see the EasyPG Assistant User's Manual.
09e18d03
CY
470
471** json.el is a library for parsing and generating JSON
472(JavaScript Object Notation), a lightweight data-interchange format.
473
474** linum.el is a new minor mode to display line numbers for the
475current buffer.
476
4b4eb083
CY
477** mairix.el is an interface to mairix, a free tool for indexing and
478searching locally stored mail. It allows you to query mairix and
479display the search results with Rmail, Gnus and VM. Note that there
480is an existing Gnus back end, nnmairix.el, which should be used with
481Maildir/MH setups.
482
09e18d03
CY
483** minibuffer-indicate-depth-mode shows the minibuffer depth in the prompt.
484
485** nXML Mode
486This is a new mode for editing XML documents. It allows a schema to
487be associated with the XML document being edited, using Relax NG as
488the schema language. The schema is used to provide two key features:
489
490*** Continuous validation. nXML validates as you type, highlighting
491any invalid parts of your document.
492
493*** Completion. nXML can assist you in entering an element name,
494attribute name or data value by using information about what is
495allowed by the schema in that context.
496
497** proced.el provides a Dired-like interface for operating on processes.
498Proced makes an Emacs buffer containing a listing of the current
499processes (using ps(1)). You can use the normal Emacs commands to
500move around in this buffer, and special Proced commands to operate on
501the processes listed.
502
503** Remember Mode is a mode for jotting down things to remember.
504Notes can be saved to a Diary file. For details, see the Remember
505Manual.
506
507** RST mode is a major mode for editing ReSTructured-Text files.
c2d0b538 508
12f165e9
CY
509** Visual Line mode provides support for editing by visual lines.
510It turns on word-wrapping in the current buffer, and rebinds C-a, C-e,
511and C-k to commands that operate by visual lines instead of logical
512lines. This is a more reliable replacement for longlines-mode.
513
c934813f
GM
514** A new `whitespace' package has been installed, and the pre-existing one
515renamed to `old-whitespace'.
2f56f788
VJL
516Now, besides reporting bogus blanks, whitespace package has a minor mode and a
517global minor mode to visualize blanks (TAB, (HARD) SPACE and NEWLINE). The
518visualization is made via faces and/or display table. Also it is possible to
519select which kind of blanks should be visualized, for example, trailing blanks,
520leading blanks, spaces, tabs, newlines, etc.
c934813f 521
0c68a24b
MA
522** xesam.el is an implementation of Xesam, an interface to (desktop)
523search engines like Beagle, Strigi, and Tracker. The Xesam API
524requires D-Bus for communication.
525
09e18d03
CY
526** zeroconf.el offers service discovery and service publishing
527interfaces according to the zeroconf specification. It communicates
528with Avahi, a zeroconf implementation, via D-Bus messages on systems
529which have installed this software.
530
531\f
532* Changes in Specialized Modes and Packages in Emacs 23.1
533
355b422f
VJL
534** Diff mode
535*** New function `diff-show-trailing-blanks'.
536
09e18d03 537** Abbrev has been rewritten in Elisp and extended with more flexibility.
e047f448 538*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
a3709a8c 539 abbrev-table-p, abbrev-insert, abbrev-table-menu.
e047f448
SM
540*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
541*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
542 extra arguments for arbitrary properties.
543*** New variable `abbrev-minor-mode-table-alist'.
544*** `local-abbrev-table' can hold a list of abbrev-tables.
545*** Abbrevs have now the following special properties:
79415279 546 `:count', `:system', `:enable-function', `:case-fixed'.
e047f448
SM
547*** Abbrev-tables have now the following special properties:
548 `:parents', `:case-fixed', `:enable-function', `:regexp',
549 `abbrev-table-modiff'.
550
09e18d03
CY
551** Apropos
552*** `apropos-library' describes the elements defined in a given library.
553*** Set `apropos-compact-layout' is you want a more compact (but wider) layout.
0253fffa 554
09e18d03 555** Archive Mode has basic support to browse Rar archives.
0253fffa 556
09e18d03 557** BibTeX mode
bafbec39 558
09e18d03 559*** New command `bibtex-initialize' (re)initializes BibTeX buffers.
bafbec39 560
09e18d03
CY
561*** New `bibtex-entry-format' options `whitespace', `braces', and
562`string', disabled by default.
12bbb989 563
09e18d03
CY
564*** New variable `bibtex-cite-matcher-alist' contains rules to
565identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
9097e8af 566
09e18d03 567*** Command `bibtex-url' allows multiple URLs per entry.
4c24d241 568
09e18d03 569** Calendar and diary
320bc739 570
09e18d03
CY
571+++
572*** There is a new date style, `iso', essentially year/month/day.
573The variable `european-calendar-style' is obsolete - use `calendar-date-style'.
574Similarly, the commands `american-calendar' and `european-calendar'
575should be replaced by `calendar-set-date-style'.
c3bb6fdb 576
09e18d03
CY
577+++
578*** The calendar namespace has been rationalized.
579All functions and variables now begin with a `calendar-', `diary-', or
580`holiday-' prefix. The various calendar systems have secondary
581prefixes, eg `calendar-french-'. The old names you are likely to use
582directly still exist, for the time being, as aliases, but please start
583using the new names.
584
e889393b
GM
585*** The whitespace in the calendar layout can be customized.
586See the variables:
587calendar-left-margin, calendar-intermonth-spacing, calendar-column-width,
588calendar-day-header-width, and calendar-day-digit-width.
589
590*** Text (e.g. ISO weeks) can be displayed between the calendar months.
591See the variables calendar-intermonth-header and calendar-intermonth-text.
592
09e18d03
CY
593*** The function `holiday-chinese' computes holidays on the Chinese calendar.
594It has been used to add items to the list `holiday-oriental-holidays'.
595
596*** `diary-remind' accepts a negative number -DAYS as a shorthand for
597the list (1 2 ... DAYS).
24cdde13 598
a6b85944
CY
599** Change Log mode
600
601*** The new command C-c C-f (change-log-find-file) finds the file
602associated with the current log entry.
603
604*** The new command C-c C-c (change-log-goto-source) goes to the
605source code associated with a log entry.
606
76be286d
DN
607** Compile and grep modes
608
609*** The mode-line entry for the *compilation* and *grep* buffer is color coded.
610It has different colors for to show that: (a) the command is still
611running, (b) successful completion, (c) error.
612
613*** compilation-auto-jump-to-first-error tells `compile' to jump to
813fb3fe
SM
614the first error encountered during compilations.
615
0b22a5e1
DN
616*** The `cc' alias for C++ files in `grep-file-aliases' has been
617improved. `hh' can be used to match C++ header files and `cchh' both
618C++ sources and headers.
619
09e18d03 620** Custom
b68769f2 621+++
09e18d03 622*** defcustom accepts new keyword arguments, `:safe' and `:risky', which
b68769f2
GM
623set a variable's `safe-local-variable' and `risky-local-variable' property.
624
09e18d03 625** Diff mode
38b627ce 626
09e18d03
CY
627*** diff-refine-hunk highlights word-level details of changes in a diff hunk.
628It's used automatically as you move through hunks, see
7381be9d 629diff-auto-refine-mode. It is bound to `C-c C-b'.
b58a65fa 630
09e18d03
CY
631*** diff-add-change-log-entries-other-window iterates through the diff
632buffer and tries to create ChangeLog entries for each change.
633It is bound to `C-x 4 A'.
f3ff0fe9 634
71554a21
JL
635** Dired
636
637*** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode,
638and C-x C-q in wdired-mode exits it with asking a question about
639saving changes.
640
d1949cd5
JL
641*** `&' runs the command `dired-do-async-shell-command' that executes
642the command asynchronously without the need to manually add ampersand
643to the end of the command. Its output appears in the buffer `*Async Shell
644Command*'.
645
6d9f0d00
JL
646*** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names.
647When a new user option `dired-isearch-filenames' is non-nil, then even
648ordinary Isearch started with `C-s' and `C-M-s' matches only at file names
649in the Dired buffer.
650
cc3236e1
JL
651*** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files.
652They visit the first marked file in the sequence and display the usual Isearch
653prompt for a string or a regexp where all Isearch commands are available.
654
71554a21
JL
655*** `Q' in Dired provides two new keys for multi-file replacement.
656The upper case key `Y' replaces all remaining matches in all remaining files
657with no more questions. The upper case key `N' stops doing replacements
658in the current file and skips to the next file. These multi-file keys
659are available for all commands that use `tags-query-replace'
660including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp',
661`reftex-query-replace-document'.
662
09e18d03
CY
663** Fortran
664*** The variable `fortran-line-length' can change the fixed-form line-length.
117d3cc5 665
09e18d03
CY
666*** In Fortran mode, M-; is now bound to the standard comment-dwim,
667rather than fortran-indent-comment.
76be286d 668
09e18d03
CY
669+++
670*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
b592c357 671
09e18d03 672** Gnus
6653c6b7 673
09e18d03
CY
674*** The Gnus package has been updated
675There are many news features, bug fixes and improvements; see the file
676GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
db86064f 677
09e18d03
CY
678*** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for
679saving articles drafts and ~/.newsrc.eld. These file may not be read
680correctly in Emacs 22 and below. If you want to Gnus across different Emacs
681versions, you may set `mm-auto-save-coding-system' to `emacs-mule'.
15947a44 682
09e18d03
CY
683** Help mode
684*** New macro `with-help-window' should set up help windows better
685than `with-output-to-temp-buffer' with `print-help-return-message'.
686*** New option `help-window-select' permits to customize whether help
687window shall be automatically selected when invoking help.
688*** New variable `help-window-point-marker' permits to specify new
689position of point in help window (for example in `view-lossage').
15947a44 690
09e18d03 691** Isearch
15947a44 692
f45acc9d
JL
693*** New command `isearch-highlight-regexp' bound to `M-s h r'
694in isearch mode runs `highlight-regexp' (`hi-lock-face-buffer')
695with the current search string as its regexp argument.
696
09e18d03
CY
697*** New command `isearch-occur' bound to `M-s o' in isearch mode
698runs `occur' with the current search string.
15947a44 699
09e18d03
CY
700*** isearch can now search through multiple ChangeLog files.
701When running isearch in a ChangeLog file, if the search fails,
702then another C-s tries searching the previous ChangeLog,
703if there is one (e.g. go from ChangeLog to ChangeLog.12).
babc4609 704This is enabled if multi-isearch-search is non-nil.
93a142e1 705
babc4609 706*** Two new commands to start Isearch on a list of marked buffers
cc3236e1
JL
707for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and
708`M-s a M-C-s'.
15947a44 709
09e18d03
CY
710*** The part of an isearch that failed to match is highlighted in `isearch-fail'
711face.
5d503af9 712
09e18d03
CY
713*** `C-h C-h' in isearch mode displays isearch-specific Help screen,
714`C-h b' displays all isearch key bindings, `C-h k' displays the full
715documentation of the given isearch key sequence, `C-h m' displays
716documentation of isearch mode. All the rest Help commands exit isearch mode
717and execute their global definitions.
332de56f 718
09e18d03
CY
719*** When started in the minibuffer, Isearch searches in the minibuffer
720history. See `Minibuffer changes', above.
2793c9bb 721
09e18d03
CY
722** Python
723*** The file etc/emacs.py now supports both Python 2 and 3, meaning
724that either version can be used as inferior Python by python.el.
c5578d5f 725
09e18d03
CY
726*** Python mode now has `pdbtrack' functionality. When using pdb to
727debug a Python program, pdbtrack notices the pdb prompt and displays
728the source file and line that the program is stopped at, much the same
729way as gud-mode does for debugging C programs with gdb.
2793c9bb 730
09e18d03 731** T-mouse Mode
2793c9bb 732
09e18d03
CY
733*** If the gpm mouse server is running and t-mouse-mode is enabled,
734Emacs uses a Unix socket in a GNU/Linux console to talk to server,
735rather than faking events using the client program mev. This C level
736approach provides mouse highlighting and help echoing in the
737minibuffer.
2793c9bb 738
cc213f24
MA
739+++
740** Tramp
741
742*** New connection methods.
743The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
744been introduced. There are also new so-called gateway methods
745"tunnel" and "socks".
746
747*** Multihop syntax has been removed.
748The pseudo-method "multi" has been removed. Instead of, multi hops
749can be specified by the new variable `tramp-default-proxies-alist'.
750
751*** More default settings.
752Default values can be set via the variables `tramp-default-user',
753`tramp-default-user-alist' and `tramp-default-host'.
754
755*** Connection information is cached.
756In order to reduce connection setup, information about used
757connections are kept persistent in a file. The name of this file is
758defined in the variable `tramp-persistency-file-name'.
759
760*** Control of remote processes.
761Running processes on a remote host can be controlled by settings in
762`tramp-remote-path' and `tramp-remote-process-environment'.
763
764*** Success of remote copy is checked.
765When the variable `file-precious-flag' is set, the success of a remote
766file copy is checked via the file's checksum.
767
7cba69f2
MA
768*** Passwords can be read from an authentification file.
769Tramp uses the package `auth-source' to read passwords from a file, if
770necessary.
771
289aee1c 772** VC and related modes
95d8772f 773
09e18d03
CY
774*** VC now supports applying VC operations to a set of files at a time.
775This enables VC to work much more effectively with changeset-oriented
776version-control systems such as Subversion, GNU Arch, Mercurial, Git
777and Bzr. VC will now pass a multiple-file commit to these systems as
778a single changeset.
d15f7b68 779
09e18d03 780*** vc-dir is a new command that displays file names and their VC
289aee1c
DN
781status. It allows to apply various VC operations to a file, a
782directory or a set of files/directories.
c3f01f42 783
09e18d03 784*** Clicking on the VC mode-line entry now pops the VC menu.
4c24d241 785
09e18d03 786*** The VC mode-line entry now has a tooltip that explains the VC file status.
d15f7b68 787
09e18d03
CY
788*** In VC Annotate mode, for VC systems that support changesets, you can
789see the diff for the whole changeset (not only for the current file)
e86fa02b 790by typing the D key.
a9f480e8 791
e86fa02b 792*** In VC Annotate mode, you can type v to toggle the annotation visibility.
2fb6c6be 793
09e18d03
CY
794*** In VC Annotate mode, you can type f to show the file revision on
795the current line.
d5d381e2 796
e86fa02b
DN
797*** In VC Annotate mode, for VC systems that support changesets, you
798can see the diff for the whole changeset (not only for the current
799file) by typing the D key or using the "Show changeset diff of
800revision at line" menu entry.
801
09e18d03
CY
802*** Asynchronous VC commands display [Waiting...] in the mode-line
803of the corresponding buffer as long as the asynchronous process is
804active.
cf944fa4 805
09e18d03
CY
806*** Log entries can be modified using the key "e" in log-view.
807For now only CVS, RCS, SCCS and SVN support this functionality.
808This is done by the `modify-change-comment' backend function.
143cecdb 809
09e18d03
CY
810*** In log-view-mode, for VC systems that support changesets, you can
811see the diff for the whole changeset (not only for the current file)
812by typing the D key or using the "Changeset Diff" menu entry.
cf944fa4 813
289aee1c
DN
814*** In Log Edit mode, C-c C-d now shows the diff for the files involved.
815
816*** vc-git supports the "git grep" command.
817
09e18d03
CY
818*** VC Support for Meta-CVS has been removed for lack of maintainer able
819to update it to the new VC.
cf944fa4 820
d15f7b68
GM
821** Miscellaneous
822
823*** comint-mode uses `start-file-process' now (see Lisp Changes).
cc213f24
MA
824If `default-directory' is a remote file name, subprocesses are started
825on the corresponding remote system.
826
09e18d03
CY
827*** Eldoc highlights the function argument under point
828with the face `eldoc-highlight-function-argument'.
4596901f 829
09e18d03 830*** In Etags, the --members option is now the default.
fffa137c 831Use --no-members if you want the old default behavior of not tagging
09e18d03 832struct members in C, members variables in C++ and variables in PHP.
1752e205 833
09e18d03
CY
834*** The `gdb' command only works with the graphical interface now.
835Use `gud-gdb' if you want the (old) text command mode.
836
837*** goto-address.el provides two new minor modes, goto-address-mode and
838goto-address-prog-mode, which buttonize URLS and email addresses.
839
840*** The new command `eshell/info' runs info in an eshell buffer.
3cf86f00 841
4d1e89e3
GM
842*** The new variable `ffap-rfc-directories' specifies a list of local
843directories in which `ffap-rfc' will first search for RFCs.
844
09e18d03
CY
845*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
846See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
847
848*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
849
850*** Info displays breadcrumbs in the header of the page.
851See Info-breadcrumbs-depth to control it.
852
d2c98acc 853*** net-utils has an `iwconfig' command, similar to the existing `ifconfig'.
b7bfcc8a 854It is used to configure wireless interfaces.
d2c98acc 855
09e18d03
CY
856*** The pcmpl-unix package supports hostname completion for ssh and scp.
857
858*** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
859
860*** smerge-refine highlights word-level details of changes in conflict.
7381be9d
TTN
861It's used automatically as you move through conflicts, see
862smerge-auto-refine-mode.
09e18d03
CY
863
864*** talk.el has been extended for multiple tty support.
865
866*** A new command `display-time-world' has been added to the Time
867package. It creates a buffer with an updating time display using
868several time zones.
869
870*** The appearance of superscript and subscript in TeX is more customizable.
871See the documentation of the variables: tex-fontify-script,
872tex-font-script-display, tex-suscript-height-ratio, and
873tex-suscript-height-minimum.
874
875*** view-remove-frame-by-deleting is now by default t
876since users found iconification of view-mode frames distracting.
877
878*** WoMan tries to add locale-specific manual page directories to the
879search path. This can be disabled by setting `woman-locale' to nil.
880
0bfd685e
GM
881\f
882* Changes in Emacs 23.1 on non-free operating systems
8ab314f9 883
203553fd
JPW
884** Case is now considered significant in completion on MS-Windows.
885The default value of `completion-ignore-case' is now nil on
886MS-Windows, the same as it is for other operating systems. The
887variable doesn't apply to reading a file name -- in that case Emacs
888heeds `read-file-name-completion-ignore-case' instead.
889
672f99b6
JR
890---
891** IPv6 is supported on MS-Windows.
892Emacs now supports IPv6 on Windows XP and later, and earlier versions
2660a9da 893of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was
672f99b6
JR
894supported on other platforms, but not on Windows due to using the winsock
8951.1 header file, even though Emacs was linking to the winsock 2 library.
896
0d22595d 897---
6e344060
JR
898** Busy cursor (hourglass) now displays on MS-Windows.
899When Emacs is busy, an hourglass mouse cursor is displayed on Windows.
2660a9da
JR
900In Emacs 22 only X supported the busy cursor.
901
902---
903** Battery status is available on MS-Windows
904Emacs can now display the battery status in the mode-line when enabled with
905display-battery-mode or from the Options menu. More verbose battery
906information is also available with the command `battery'. In Emacs 22
907battery status was supported only on GNU/Linux and Mac.
6e344060 908
3280c5c5
JR
909** More keys available on MS-Windows.
910Keys normally associated with IMEs, and some exotic keys not normally found
911on standard keyboards have been given names so they can be bound to functions
912inside Emacs. If there are keys on your keyboard that have not been exposed
913to Emacs in the past, try C-h k to see if they are available now.
914
915Emacs can now bind functions to the extra buttons for media player and
916browser control present on some keyboards. These buttons are disabled
917by default, since enabling them prevents their system-wide use when
918Emacs has focus. To enable them, set the variable
0caa490b 919w32-pass-multimedia-buttons to nil. See the doc string of that variable
3280c5c5 920for the list of extra keys that are available.
2660a9da 921
0bfd685e
GM
922\f
923* Incompatible Lisp Changes in Emacs 23.1
8ec65cd7 924
fd9440c5 925** Variables cannot be both buffer-local and frame-local any more.
a9b08254 926
fc944cd4 927** `functionp' returns nil for special forms.
65f81a0b 928I.e., it only returns t for objects that can be passed to `funcall'.
fc944cd4 929
d82c3d44
GM
930** The behavior of map-char-table has changed. It may call the
931specified function with a cons (FROM . TO) as a key if characters in
932that range have the same value.
933
b350bdf2
CY
934** Process changes
935+++
936*** The function `dired-call-process' has been removed.
03605a28 937+++
b350bdf2
CY
938*** The multibyteness of process filters is now determined by the
939coding-system used for decoding. The functions
940`process-filter-multibyte-p' and `set-process-filter-multibyte' are
941obsolete.
03605a28 942
777ea444 943** The variable `byte-compile-warnings' can now be a list starting with `not',
0caa490b 944meaning to disable the specified warnings. The meaning of this list
777ea444 945may therefore be the reverse of what you expect (of course, this is
0caa490b 946only an issue if you make use of the new `not' syntax). Rather than
777ea444
GM
947checking/manipulating elements directly, use the new functions
948`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
949`byte-compile-enable-warning.'
950
69df9d6d
GM
951** `mode-name' is no longer guaranteed to be a string.
952Use `(format-mode-line mode-name)' to ensure a string value.
953
b350bdf2
CY
954** Internationalization changes
955
956*** The value of the function `charset-id' is now always 0.
957
958*** The functions `register-char-codings' and `coding-system-spec'
959have been removed.
960
961*** The cpXXX coding systems are now supported automatically.
962The functions cp-...-codepage, which you had to use in Emacs 22 to
963enable support for these coding systems, have been deleted.
964
965*** The following features have been removed. They were used for
85a1f98d
GM
966displaying various scripts with specific fonts, and are no longer
967needed now that OpenType font support is available:
968
b350bdf2 969**** `devanagari' and `devan-util', and all associated devanagari-* and
85a1f98d
GM
970dev-* functions and variables (formerly used for Devanagari script).
971
b350bdf2 972**** `kannada' and `knd-util', and all associated kannada-* and knd-*
85a1f98d
GM
973functions and variables (formerly used for Kannada script).
974
b350bdf2 975**** `malayalam' and `mlm-util', and all associated malayalam-* and
85a1f98d
GM
976mlm-* functions and variables (formerly used for Malayalam script).
977
b350bdf2 978**** `tamil' and `tml-util, and all associated tamil-* and tml-*
85a1f98d 979functions and variables (formerly used for Tamil script).
6a6b4d7d 980
0bfd685e
GM
981\f
982* Lisp Changes in Emacs 23.1
8ab314f9 983
b350bdf2
CY
984+++
985** New variable `user-emacs-directory'.
986Use this instead of "~/.emacs.d".
43f8b275 987
b350bdf2
CY
988** If a local hook function has a non-nil `permanent-local-hook'
989property, `kill-all-local-variables' does not remove it from the local
990value of the hook variable; it remains even if you change major modes.
09e18d03 991
b350bdf2
CY
992** `frame-inherited-parameters' lets new frames inherit parameters from
993the selected frame.
09e18d03 994
b350bdf2
CY
995** New keymap `input-decode-map' overrides like key-translation-map, but
996applies before function-key-map. Also it is terminal-local contrary to
997key-translation-map. Terminal-specific key-sequences are generally added to
998this map rather than to function-key-map now.
09e18d03 999
b350bdf2 1000** `ignore-errors' is now a standard macro (does not require the CL package).
09e18d03 1001
b350bdf2
CY
1002** `interprogram-paste-function' can now return one string or a list
1003of strings. In the latter case, Emacs puts the second and following
1004strings on the kill ring.
09e18d03 1005
b350bdf2
CY
1006+++
1007** In `condition-case', a handler can specify "let the debugger run first".
1008You do this by writing `debug' in the list of conditions to be handled,
1009like this:
09e18d03 1010
b350bdf2
CY
1011 (condition-case nil
1012 (foo bar)
1013 ((debug error) nil))
09e18d03 1014
b350bdf2 1015** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
09e18d03 1016
b350bdf2
CY
1017** `beginning-of-defun-function' now takes one argument, the count
1018given to `beginning-of-defun'.
09e18d03 1019
b350bdf2
CY
1020+++
1021** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
1022IDENTIFICATION specifies which part of the remote identifier has to be
1023returned. With CONNECTED passed non-nil, it is checked whether a
1024remote connection has been established already.
09e18d03 1025
b350bdf2
CY
1026** The new macro `declare-function' suppresses compiler warnings about
1027undefined functions.
a1562258 1028
b350bdf2 1029** Changes to interactive function handling
8ba31f36 1030
b350bdf2
CY
1031*** The new interactive spec code ^ says to first call
1032handle-shift-selection if shift-select-mode is non-nil, before reading
1033the command arguments. This is used for shift-selection (see above).
e2947429 1034
b350bdf2
CY
1035*** Built-in functions can now have an interactive specification that
1036is not a prompt string. If the `intspec' parameter of a `DEFUN'
1037starts with a `(', the string is evaluated as a Lisp form.
e2947429 1038
b350bdf2
CY
1039*** The interactive-form of a function can be added post-facto via the
1040`interactive-form' symbol property. Mostly useful to add complex
1041interactive forms to subroutines.
d87be1df 1042
b350bdf2 1043** Region changes
3ae459e5 1044
b350bdf2
CY
1045*** Commands should use `use-region-p' to test whether there is
1046an active region that they should operate on.
3ae459e5 1047
b350bdf2
CY
1048*** `region-active-p' returns non-nil when Transient Mark mode is
1049enabled and there is an active region. This is NOT the best function
1050to use to test whether a command should operate on the region instead
1051of the usual behavior -- for that, use `use-region-p'.
58555d81 1052
b350bdf2
CY
1053*** If a command sets `transient-mark-mode' to (only . OLDVAL), that
1054means to activate transient-mark-mode temporarily, until the next
1055unshifted point motion command or mark deactivation. Afterwards,
1056reset transient-mark-mode to the value OLDVAL. The values `only' and
1057`identity', introduced in Emacs 22, are now deprecated.
e5c4079c 1058
b350bdf2 1059** Emacs session information
13cda5f9 1060
b350bdf2
CY
1061*** The new variables `before-init-time' and `after-init-time' record the
1062value of `current-time' before and after Emacs loads the init files.
a2bc5bdd 1063
b350bdf2 1064*** The new function `emacs-uptime' returns the uptime of an Emacs instance.
d82c3d44 1065
b350bdf2
CY
1066*** The new function `emacs-init-time' returns the duration of the
1067Emacs initialization.
50bfa18a 1068
b350bdf2 1069** Changes affecting display-buffer
39d0bf74 1070
b350bdf2
CY
1071*** New value nil for split-height-threshold inhibits vertical splitting
1072unless there's no other window.
59b5d020 1073
b350bdf2 1074*** New option split-width-threshold controls horizontal splitting.
426e6ba0 1075
b350bdf2 1076*** A window can be split horizontally even when it's not full-width.
426e6ba0 1077
b350bdf2
CY
1078*** New option split-window-preferred-function can be set to a function
1079to override the default splitting mechanism of display-buffer.
2d105adf 1080
b350bdf2 1081** Minibuffer and completion changes
b9694062 1082+++
b350bdf2 1083*** A list of default values can be specified for the DEFAULT argument of
b9694062
JL
1084functions `read-from-minibuffer', `read-string', `read-command',
1085`read-variable', `read-buffer', `completing-read'. Elements of this list
1086are available for inserting into the minibuffer by typing `M-n'.
1087For empty input these functions return the first element of this list.
1088
90993beb
JL
1089*** New function `read-regexp' uses the regexp history and some useful
1090regexp defaults (string at point, last isearch/replacement regexp/string)
1091via M-n when reading a regexp in the minibuffer.
1092
b350bdf2
CY
1093*** minibuffer-local-must-match-filename-map is now named
1094minibuffer-local-filename-must-match-map.
66dc1ca2 1095
b350bdf2
CY
1096*** `all-completions' may now return the base size in the last cdr.
1097Since this means the returned list is not properly nil-terminated, this
1098is an incompatible change and is thus enabled by the new variable
1099completion-all-completions-with-base-size.
66dc1ca2 1100
b350bdf2
CY
1101*** The `require-match' argument to `completing-read' accepts a new value
1102`confirm-only'.
d03b9b31 1103
b350bdf2
CY
1104** Search and replacement changes
1105+++
1106*** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
1107+++
1108*** New function `match-substitute-replacement' returns the result of
1109`replace-match' without actually using it in the buffer.
c60d543d 1110
b350bdf2
CY
1111*** The new variable `replace-search-function' determines the function
1112to use for searching in query-replace and replace-string.
3ae459e5 1113
b350bdf2
CY
1114*** The new variable `replace-re-search-function' determines the
1115function to use for searching in `query-replace-regexp',
1116`replace-regexp', `query-replace-regexp-eval', and
1117`map-query-replace-regexp'.
4f4a84ec 1118
71554a21
JL
1119*** The new keymap `multi-query-replace-map' contains additonal keys bound
1120to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
1121
b350bdf2
CY
1122*** The variable `inhibit-changing-match-data', if non-nil, prevents
1123the search and match primitives from changing the match data.
967b2682 1124
b350bdf2 1125** File handling changes
8bf5c8a6 1126
b350bdf2
CY
1127*** set-file-modes is now interactive and can take the mode value in
1128symbolic notation thanks to auxiliary functions.
d9774611 1129
b350bdf2
CY
1130*** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
1131requires confirmation before opening a non-existent file.
1132
1133** Process changes
1134+++
1135*** The new function `start-file-process' is similar to `start-process',
1136but obeys file handlers. The file handler is chosen based on
1137`default-directory'. The functions `start-file-process-shell-command'
1138and `process-file-shell-command' are also new; they call internally
1139`start-file-process' and `process-file', respectively.
1140
1141*** The new function `process-lines' executes an external program and
1142returns its output as a list of lines.
63571b5a 1143
d82c3d44
GM
1144** Character code, representation, and charset changes.
1145
0caa490b 1146The character code space is now 0x0..0x3FFFFF with no gap.
d82c3d44
GM
1147Characters of code 0x0..0x10FFFF are Unicode characters of the same code points.
1148Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit bytes.
1149
0caa490b 1150Generic characters no longer exist.
d82c3d44 1151
b350bdf2
CY
1152In buffers and strings, characters are represented by UTF-8 byte
1153sequences in a multibyte buffer/string.
d82c3d44 1154
b350bdf2
CY
1155The concept of a charset has changed. A single character may belong
1156to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets
1157unicode, iso-8859-1, iso-8859-3, etc).
d82c3d44
GM
1158
1159*** The functions `encode-char' and `decode-char' now accept any character sets.
1160
1161*** The function `define-charset' now accepts a completely different
1162form of arguments (old-style arguments still work).
1163
d82c3d44
GM
1164*** The value of the function `char-charset' depends on the current
1165priorities of charsets.
1166
d82c3d44
GM
1167*** The function get-char-code-property now accepts many Unicode base
1168character properties. They are `name', `general-category',
1169`canonical-combining-class', `bidi-class', `decomposition',
1170`decimal-digit-value', `digit-value', `numeric-value', `mirrored',
1171`old-name', `iso-10646-comment', `uppercase', `lowercase', and
1172`titlecase'.
1173
b350bdf2
CY
1174*** The functions `modify-syntax-entry' and `modify-category-entry' now
1175accept a cons of characters as the first argument, and modify all
1176entries in that range of characters.
d82c3d44 1177
b350bdf2
CY
1178+++
1179*** `translation-table-for-input' is now obsolete.
d82c3d44 1180
b350bdf2 1181*** New functions:
d82c3d44 1182
b350bdf2
CY
1183**** `characterp' returns t if and only if the argument is a character.
1184This replaces `char-valid-p', which is now obsolete.
d82c3d44 1185
b350bdf2 1186**** `max-char' returns the maximum character code (currently #x3FFFFF).
d82c3d44 1187
b350bdf2
CY
1188**** `define-charset-alias' defines an alias of a charset.
1189
1190**** `set-charset-priority' sets priorities of charsets.
1191
1192**** `charset-priority-list' returns a prioritized list of charsets.
1193
1194**** `unibyte-string' makes a unibyte string from bytes.
1195
1196**** `define-char-code-property' defines a character code property.
1197
1198**** `char-code-property-description' returns the description string of
1199a character code property.
1200
1201*** New variables:
1202
1203**** `find-word-boundary-function-table' is a char-table of functions to
1204search for a word boundary.
1205
1206**** `char-script-table' is a char-table of script names.
1207
1208**** `char-width-table' is a char-table of character widths.
1209
1210**** `print-charset-text-property' controls how to handle `charset' text
1211property on printing a string.
1212
1213**** `printable-chars' is a char-table of printable characters.
d82c3d44 1214
505d8756 1215** Code conversion changes
d82c3d44
GM
1216
1217*** The new function `define-coding-system' should be used to define a
1218coding system instead of `make-coding-system' (which is now obsolete).
1219
1220*** The functions `encode-coding-region' and `decode-coding-region'
1221have an optional 4th argument to specify where the result of
1222conversion should go.
1223
1224*** The functions `encode-coding-string' and `decode-coding-string'
1225have an optional 4th argument specifying a buffer to store the result
1226of conversion.
1227
b350bdf2 1228*** The functions `set-coding-priority' and `make-coding-system' are obsolete.
d82c3d44 1229
b350bdf2 1230*** New functions:
d82c3d44 1231
b350bdf2
CY
1232**** `with-coding-priority' executes Lisp code using the specified
1233coding system priority order.
d82c3d44 1234
b350bdf2
CY
1235**** `check-coding-systems-region' checks if the text in the region is
1236encodable by the specified coding systems.
d82c3d44 1237
b350bdf2 1238**** `coding-system-aliases' returns a list of aliases of a coding system.
d82c3d44 1239
b350bdf2
CY
1240**** `coding-system-charset-list' returns a list of charsets supported
1241by a coding system.
d82c3d44 1242
b350bdf2
CY
1243**** `coding-system-priority-list' returns a list of coding systems
1244ordered by their priorities.
1245
1246**** `set-coding-system-priority' sets priorities of coding systems.
d82c3d44
GM
1247
1248** There is a new input method, Robin, different from Quail.
0caa490b 1249It has three functionalities:
d82c3d44
GM
1250 i) a simple input method (converts an ASCII sequence into a string).
1251ii) converts an existing buffer substring into another string
1252iii) reverse conversion (each character produced by a
1253robin rule can hold the original ASCII sequence as a char-code-property)
1254
1255*** The new function `robin-define-package' defines a Robin package.
1256
1257*** The new function `robin-modify-package' modifies an existing Robin package.
1258
1259*** The new function `robin-use-package' starts using a Robin package
1260as an input method.
1261
888d7d86
KH
1262*** The new function `string-to-unibyte' is like `string-as-unibyte'
1263but signals an error if STRING contains a non-ASCII, non-eight-bit
1264character.
1265
505d8756 1266** Changes related to the new font backend
2b7a2553 1267
b19aa6dd
GM
1268Which font backends to use can be specified by the X resource "FontBackend".
1269For instance, to use both X core fonts and Xft fonts:
2b7a2553 1270
b19aa6dd 1271Emacs.FontBackend: x,xft
2b7a2553 1272
b19aa6dd
GM
1273If this resource is not set, Emacs tries to use all font backends
1274available on your graphic device.
d82c3d44
GM
1275
1276*** New frame parameter `font-backend' specifies a list of
1277font-backends supported by the frame's graphic device. On X, they are
1278currently `x' and `xft'.
1279
b350bdf2
CY
1280*** The function `set-fontset-font' now accepts a script name as the
1281second argument, and has an optional 5th argument to control how to
1282set the font.
d82c3d44 1283
b350bdf2 1284*** New functions:
d82c3d44 1285
b350bdf2 1286**** `fontp' checks if the argument is a font-spec or font-entity.
d82c3d44 1287
b350bdf2 1288**** `font-spec' creates a new font-spec object.
d54b8954 1289
b350bdf2 1290**** `font-get' returns a font property value.
d82c3d44 1291
b350bdf2 1292**** `font-put' sets a font property value.
d82c3d44 1293
b350bdf2 1294**** `font-face-attributes' returns a plist of face attributes set by a font.
d82c3d44 1295
b350bdf2 1296**** `list-fonts' returns a list of font-entities matching a font spec.
d82c3d44 1297
b350bdf2 1298**** `font-font' returns the font-entity best matching the given font spec.
d82c3d44 1299
b350bdf2 1300**** `list-families' returns a list of family names of available fonts.
d82c3d44 1301
b350bdf2
CY
1302**** `font-xlfd-name' returns an XLFD name of a given font spec, font
1303entity, or font object.
1304
1305**** `clear-font-cache' clears all font caches.
d82c3d44 1306
b350bdf2 1307** Changes related to multiple-terminal (multi-tty) support
24cdde13 1308
b12f6e85
SM
1309*** $TERM is now set to `dumb' for subprocesses. If you want to know the
1310$TERM inherited by Emacs you will have to look inside initial-environment.
1311
6168122d
SM
1312*** $DISPLAY is now dynamically inherited from the frame's `display'.
1313
b350bdf2 1314*** The `window-system' variable is now frame-local. The new
24cdde13 1315`initial-window-system' variable contains the `window-system' value
bbe3eb99
GM
1316for the first frame. `window-system' is also now a function that
1317takes a frame argument.
24cdde13 1318
b350bdf2
CY
1319*** The `keyboard-translate-table' variable and the terminal and
1320keyboard coding systems are now terminal-local.
1321
24cdde13
GM
1322*** You can specify a terminal device (`tty' parameter) and a terminal
1323type (`tty-type' parameter) to `make-terminal-frame'.
1324
24cdde13
GM
1325*** The function `make-frame-on-display' now works during a tty
1326session, and `make-frame-on-tty' works during a graphical session.
1327
419f8f49
SM
1328*** A new data type for terminals with functions: `get-device-terminal',
1329`terminal-parameters', `terminal-parameter', `set-terminal-parameter'.
24cdde13 1330
b350bdf2
CY
1331*** Function key sequences are now mapped using `local-function-key-map',
1332a new variable. This inherits from the global variable function-key-map,
1333which is not used directly any more.
92cd6a7c 1334
b350bdf2 1335*** New hooks:
da406961 1336
b350bdf2
CY
1337**** `suspend-tty-functions' and `resume-tty-functions' are called
1338after a tty frame has been suspended or resumed, respectively. The
1339functions are called with the terminal id of the frame being
1340suspended/resumed as a parameter.
da406961 1341
b350bdf2
CY
1342**** The special hook `delete-terminal-functions' is called before
1343deleting a terminal.
82866ad5 1344
b350bdf2 1345*** New functions:
24cdde13 1346
b350bdf2 1347**** `environment'
24cdde13 1348
b350bdf2 1349**** `make-frame-on-tty' creates a new frame on another tty device.
24cdde13 1350
b350bdf2 1351**** `delete-tty'
9f44d41a 1352
b350bdf2 1353**** `suspend-tty'
ea2e3ef4 1354
b350bdf2 1355**** `resume-tty'.
8d371994 1356
b350bdf2 1357*** `initial-environment' holds the environment inherited from Emacs's parent.
8d371994 1358
b350bdf2 1359** Redisplay changes
8d371994 1360
b350bdf2
CY
1361*** For underlined characters, the distance between the underline and
1362the baseline is controlled by a new variable, `underline-minimum-offset'.
0a963185 1363
b350bdf2
CY
1364*** You can now pass the value of the `invisible' property to
1365invisible-p to check whether it would cause the text to be invisible.
1366Convenient when checking invisibility of text with no buffer position
1367(e.g. in before/after-strings).
c69b0314 1368
b350bdf2 1369*** Non-breaking space is now displayed as whitespace.
9f44d41a 1370
b350bdf2 1371*** `clear-image-cache' can be told to flush only images of a specific file.
9f44d41a 1372
0c8b58e9
CY
1373*** `vertical-motion' can now be given a goal column.
1374It now accepts a cons cell (COLS . LINES) in its first argument, which
1375says to stop, where possible, at a pixel x-position equal to COLS
1376times the default column width.
1377
b350bdf2 1378** Miscellaneous new functions
9f44d41a 1379
b350bdf2
CY
1380*** `format-seconds' converts a number of seconds into a readable
1381string of days, hours, etc.
9f44d41a 1382
b350bdf2 1383*** `apply-partially' performs a "curried" application of a function.
abf13a8b 1384
b350bdf2
CY
1385*** `read-shell-command' does what its name says, with completion. It
1386uses the minibuffer-local-shell-command-map for that.
b2b387f9 1387
b350bdf2
CY
1388*** `buffer-swap-text' swaps text between two buffers. This can be
1389useful for modes such as tar-mode, archive-mode, RMAIL.
967b2682 1390
b350bdf2
CY
1391*** `read-color' reads a color name using the minibuffer.
1392
1393*** `face-all-attributes' returns an alist describing all the basic
1394attributes of a given face.
1395
1396*** `window-full-width-p' returns t if a window is as wide as its
1397frame.
1398
1399*** `split-string-and-unquote' does (what?)
1400
1401*** `combine-and-quote-strings' does (what?)
1402
1403*** `image-refresh' refreshes all images associated with a given image
1404specification.
64639e26 1405
b350bdf2 1406*** The two new functions `looking-at-p' and `string-match-p' can do
45595a4f
RS
1407the same matching as `looking-at' and `string-match' without changing
1408the match data.
89835619 1409
81efacf9
CY
1410*** The two new functions `make-serial-process' and
1411`serial-process-configure' provide a Lisp interface to the new serial
1412port support (see Emacs changes, above).
1413
b350bdf2
CY
1414** Miscellaneous new variables
1415
1416*** `this-command-keys-shift-translated' is non-nil if the key
1417sequence invoking the current command was found by shift-translation.
1418
1419*** `window-point-insertion-type' determines the insertion-type of the
1420marker used for window-point.
1421
1422*** bookmark provides `bookmark-make-record-function' so special major
1423modes like Info can teach bookmark.el how to save and restore the
1424relevant data.
1425
1426*** `next-error-recenter' specifies how next-error should recenter the
1427visited source file. Its value can be a number (for example, 0 for
1428top line, -1 for bottom line), or nil for no recentering.
1429
1430*** `fill-forward-paragraph-function' specifies which function the
1431filling code should use to find paragraph boundaries.
1432
1433*** `custom-note-var-changed' tells Custom to treat the change in a
1434certain variable as having been made within Custom.
1435
9bae34bf 1436\f
0bfd685e 1437* New Packages for Lisp Programming in Emacs 23.1
efeb796b 1438
b350bdf2
CY
1439** The new package avl-tree.el deals with the AVL tree data structure.
1440
1441** The new package check-declare.el verifies the accuracy of
1442declare-function macros (see Lisp Changes, above).
d445b3f8 1443
20202f5e 1444** find-cmd.el can build `find' commands using lisp syntax.
6dfcbe31 1445
babc4609
JL
1446** The package misearch.el has been added. It allows Isearch to search
1447through multiple buffers. A variable `multi-isearch-next-buffer-function'
1448defines the function to call to get the next buffer to search in the series
1449of multiple buffers. Top-level commands `multi-isearch-buffers',
1450`multi-isearch-buffers-regexp', `multi-isearch-files' and
1451`multi-isearch-files-regexp' accept a single argument that specifies
1452a list of buffers/files to search for a string/regexp.
9097e8af 1453
b350bdf2
CY
1454** The new major mode `special-mode' is intended as a parent for
1455major modes such as those that set the "'mode-class 'special" property.
d53a60a6 1456
05197f40 1457\f
a933dad1 1458----------------------------------------------------------------------
5b87ad55 1459This file is part of GNU Emacs.
a933dad1 1460
ab73e885 1461GNU Emacs is free software: you can redistribute it and/or modify
5b87ad55 1462it under the terms of the GNU General Public License as published by
ab73e885
GM
1463the Free Software Foundation, either version 3 of the License, or
1464(at your option) any later version.
5b87ad55
GM
1465
1466GNU Emacs is distributed in the hope that it will be useful,
1467but WITHOUT ANY WARRANTY; without even the implied warranty of
1468MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1469GNU General Public License for more details.
a933dad1 1470
5b87ad55 1471You should have received a copy of the GNU General Public License
ab73e885 1472along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a933dad1 1473
05197f40 1474\f
a933dad1
DL
1475Local variables:
1476mode: outline
1477paragraph-separate: "[ \f]*$"
1478end:
ab5796a9 1479
a533413c 1480arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2