(display_mode_element): 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
GM
29** The default X toolkit is now Gtk+, rather than Lucid.
30
2b7a2553
GM
31** The new configuration option "--enable-font-backend" enables new code
32for handling fonts by multiple backends (the old font handling codes
33still exist). This requires the freetype and fontconfig libraries, and
34supports local fonts (fonts installed on the machine where Emacs is running).
35Additionally, the Xft library can be used for antialiasing support.
36Fontconfig-like font names (e.g. monospace-12) are also accepted.
37
1abe3a1e
DN
38** The new configuration option "--with-dbus" enables D-Bus language
39bindings for Emacs.
40
15f02f65
GM
41** The Mac Carbon port is no longer supported.
42Instead, use... [what?]
43
9d3cc9b2
GM
44** configure now checks for libgif before libungif when searching for
45a GIF library.
b5ac89f8 46
36e625ec
GM
47** Support for systems without alloca has been removed.
48
07e5c0b0
DN
49** Support for Sun windows has been removed.
50
bb9f7948
EZ
51** Support for many obsolete platforms has been removed.
52See the list at the end of etc/MACHINES for details.
53
48a8be40
GM
54** The `emacstool' utility has been removed.
55
a46ee55c
GM
56** The configure options `--with-gcc', `--without-gcc' have been removed.
57Configure will use gcc by default. Set the CC environment variable if
58you need control over which C compiler is used.
59
60** The configure option `--with-gtk' has been removed. Gtk is now the
61default toolkit, but you can use --with-x-toolkit=gtk if necessary.
4e5cdb4f 62\f
6dadd99f
NR
63* Changes in Emacs 23.1
64
780d7bb9 65** Emacs now supports using both X displays and ttys in one session.
1abe3a1e
DN
66Start the server (M-x server-start). Then `emacsclient -t' creates a
67tty frame connected to the running emacs server. You can also use any
68number of different ttys. `emacsclient -c' creates a new X11 frame on
69the current $DISPLAY or a tty frame if $DISPLAY is not set.
780d7bb9
RS
70
71You can test for the presence of this feature in your Lisp code by
72testing for the `multi-tty' feature.
73
d82c3d44
GM
74** The Emacs character set is now a superset of Unicode.
75(It has about four times the code space, which should be plenty).
76
77The internal encoding used for buffers and strings is now
78Unicode-based and called `utf-8-emacs'. utf-8-emacs is backwards
79compatible with the UTF-8 encoding of Unicode. The `emacs-mule'
80coding system can still read and write data in the old internal encoding.
81
82Since the internal encoding is also used by default for byte-compiled
83files -- i.e. the normal coding system for byte-compiled Lisp files is
84now utf-8-Emacs -- Lisp containing non-ASCII characters which is
85compiled by Emacs 23 can't be read by earlier versions of Emacs. Files
86compiled by Emacs 20, 21, or 22 are loaded correctly as emacs-mule
87(whether or not they contain multibyte characters), which makes loading
88them somewhat slower than Emacs 23-compiled files. Thus it may be worth
89recompiling existing .elc files which don't need to be shared with older
90Emacsen.
91
d82c3d44
GM
92** There are assorted new coding systems/aliases -- see M-x list-coding-systems.
93
94** There is a new charset implementation with many new charsets.
95See M-x list-character-sets. New charsets can be defined conveniently
96as tables of unicodes.
97
98The dimension of a charset is now 1, 2, 3, or 4, and the size of each
99dimension is no longer limited to 94 or 96.
100
101A dynamic charset priority list is used to infer the charset of
102characters for display.
103
104** There are new Chinese-GBK, Chinese-GB18030, Khmer, and TaiViet language
105environments.
106
7b476dbe
JD
107** Emacs now supports the XEmbed specification.
108You can embed Emacs in another application on X11. The new command line option
109--parent-id is used to pass the parent window id to Emacs. See
110http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
111for details about XEmbed.
112
251ad2de
TTN
113** Emacs comes with a new set of icons for Mac OS X.
114OS-X-style icons (an application icon and a relevant document icon)
115were contributed by Kentaro Ohkouchi.
116Source files for these icons can be found in Emacs.app/Contents/Resources.
1518e9a1 117PNG versions are available as etc/images/icons/emacs*_mac.png.
251ad2de 118
f664fee9
MC
119** Built-in functions (subr) can now have an interactive specification
120that is not a prompt string. If the `intspec' parameter of a `DEFUN'
121starts with a `(', the string is evaluated as a Lisp form.
122
123** set-file-modes is now interactive and can take the mode value in
124symbolic notation thanks to auxiliary functions.
125
90ab5c62
SM
126** split-window-preferred-function specifies whether display-buffer should
127split windows vertically or horizontally.
128
24cdde13
GM
129** Emacsclient has been extended to support opening a new terminal
130frame. Its behavior has been changed to open a new Emacs frame by
131default. Use the -c option to get the old behavior of opening files in
132the currently selected Emacs frame.
133
c0dadae9
MC
134** The refcards are now shipped as PDF files.
135
795a2a94
GM
136** Emacs now supports the SVG image format through librsvg2.
137
a2b84f35
DN
138** transient-mark-mode is now enabled by default.
139
75f6af19 140** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
0a963185
SM
141requires confirmation before opening a non-existent file.
142
6dadd99f
NR
143** If the gpm mouse server is running and t-mouse-mode enabled, Emacs uses a
144Unix socket in a GNU/Linux console to talk to server, rather than faking events
145using the client program mev. This C level approach provides mouse
146highlighting, and help echoing in the minibuffer.
147
c2e8590b
TTN
148** The new variable next-error-recenter specifies how next-error should
149recenter the visited source file. Its value can be a number (for example,
1500 for top line, -1 for bottom line), or nil for no recentering.
151
1abe3a1e
DN
152** New command recenter-top-bottom moves the current line to window
153center, top and bottom on successive invokations.
154
eb28688c
GM
155** C-l is bound to the new command recenter-top-bottom, rather than recenter.
156
d87b5ced 157** The mode-line displays a `@' if the default-directory for the current buffer
1f2e1c75 158is on a remote machine, or a hyphen otherwise.
6c5d503f 159
c9447ae1
GM
160** The mode-line displays a mode menu when mouse-1 is clicked on a minor mode,
161in the same way as it already did for major modes.
162
de3054d5 163** The new command balance-windows-area balances windows both vertically
62e3c31f 164and horizontally.
d466e9fc
SM
165
166** The new command close-display-connection can be used to close a connection
167to a remote display, e.g. because the display is about to become unreachable.
6c5d503f
MA
168
169** The command shell prompts for the default directory, when it is
170called with a prefix, and the default directory is a remote file name.
de3054d5 171This is because some file name handlers (like ange-ftp) are not able to
6c5d503f 172run processes remotely.
aff2ba04
RS
173
174** The new command `display-time-world' starts an updating time display
175using several time zones, in a buffer.
c4c9b6f9 176
5c4a15b3
GM
177** The new function `format-seconds' converts a number of seconds into a
178readable string of days, hours, etc.
179
9f871ce2
GM
180** The new variables `before-init-time' and `after-init-time' record the
181value of `current-time' before and after Emacs loads the init files.
c4c9b6f9
GM
182
183** The new function `emacs-uptime' returns the uptime of an Emacs instance.
184
b3cf10d7
JL
185** The new function `emacs-init-time' returns the duration of the
186Emacs initialization.
187
d82c3d44
GM
188** The minor modes unify-8859-on-encoding-mode, unify-8859-on-decoding-mode
189are obsolete.
190
6dadd99f 191\f
0bfd685e 192* Startup Changes in Emacs 23.1
21f7b9d8 193
56e1896b
JL
194** New user option `initial-buffer-choice' specifies what to display
195after starting Emacs: startup screen, *scratch* buffer, visiting a
196file or directory.
197
aa5310e4
DK
198** New alias `argv' for `command-line-args-left'
199This is a convenience alias, so that one can write `(pop argv)'
200inside of --eval command line arguments in order to access
201following arguments.
f8fd7ed3
GM
202
203** The abbrev file is no longer read at startup in batch mode.
c44da964 204\f
0bfd685e 205* Incompatible Editing Changes in Emacs 23.1
b58cb59f 206
117907d4
JL
207+++
208** In Dired-x, all command guesses for ! are now added to the default
209list accessible by M-n instead of pushing all guesses temporarily into
210the history list.
211
406c0f12 212\f
0bfd685e 213* Editing Changes in Emacs 23.1
406c0f12 214
59b5d020
JL
215+++
216** C-M-% now shows replacement as it would look in the buffer, with
217`\N' and `\&' substituted according to the match. Old behavior can be
218restored by customizing `query-replace-show-replacement'.
219
1ac03a31
JL
220+++
221** M-q now fills the region if the region is active and
222`transient-mark-mode' is turned on. Otherwise, it fills the current
ecde850a 223paragraph.
1ac03a31 224
ecde850a 225+++
dc868f13
JL
226** M-$ now checks spelling of the region if the region is active and
227`transient-mark-mode' is turned on. Otherwise, it checks spelling of the
228word at point.
229
6dd697d9
DN
230** TAB now indents the region if the region is active and
231`transient-mark-mode' is turned on.
232
d03b9b31
RS
233** `use-empty-active-region' controls whether an empty active region
234in Transient Mark mode should make commands operate on that empty region.
235
24cdde13
GM
236** C-z now invokes `suspend-frame', C-x C-c now invokes
237`save-buffers-kill-terminal'.
238
a151f82c
SS
239** New command kill-matching-buffers kills buffers whose name matches a regexp.
240
63571b5a
RS
241** You can disable kill ring commands from accessing the primary selection
242by setting `x-select-enable-primary' to nil.
243
244** If `select-active-regions' is t, setting the mark automatically
245makes the new region into the primary selection (for interaction with
246other window applications). If you enable this, you might want to bind
247`mouse-yank-primary' to Mouse-2.
539f5bda 248
4496b02b
RS
249** If `yank-pop-change-selection' is t, rotating the kill ring
250also updates the selection or clipboard to the current yank,
251just as M-w would do so with the text it copies to the kill ring.
252
297b8ccd
JL
253** Minibuffer changes:
254
dc2f6c05
JL
255*** In C-x d, if you type M-n you get the visited file name of the
256current buffer.
257
117907d4
JL
258*** In Dired, a list of commands for ! extracted from mailcap according to
259file extensions are added to the default list accessible by M-n.
260
261*** A list of regexp default values is available via M-n for `occur',
262`keep-lines', `flush-lines' and `how-many'. This list includes the active
263region in transient-mark-mode, the word under the cursor, the last isearch
264regexp, the last isearch string and the last replacement regexp.
265
297b8ccd
JL
266*** isearch started in the minibuffer searches in the minibuffer history.
267Reverse isearch commands (C-r, C-M-r) search in previous minibuffer
268history elements, and forward isearch commands (C-s, C-M-s) search in
269next history elements. When the reverse search reaches the first history
270element, it wraps to the last history element, and the forward search
271wraps to the first history element. When the search is terminated, the
272history element containing the search string becomes the current.
273
0bfd685e
GM
274\f
275* New Modes and Packages in Emacs 23.1
0091c67e 276
2e282009
GM
277** FIXME add details of new packages imported from lisp/gnus.
278
1816bda7
MC
279** The package doc-view.el has been added. It supports viewing of PDF,
280PostScript and DVI documents inside an Emacs buffer by converting the
281document to a set of PNG images first. One can also search for a
282regular expression in the document. The commentary of the file explains
283its usage.
284
a2e0b5dd
GM
285** The nXML package has been added.
286[FIXME someone who uses this, please write a brief description.]
287
ddc961c5 288** A new game called `bubbles' has been added.
a0818148 289
dcd6e8d7 290** minibuffer-indicate-depth-mode shows the minibuffer depth in the prompt.
3f7194ed 291
15f3eb73
MO
292** Remember Mode (remember.el) is now included with Emacs. It is a
293mode for quickly jotting down things to remember. Included with
294remember.el is a backend that can save notes to a Diary file. Please
295consult the Remember Manual for usage details.
296
9264ee6a
MA
297** D-Bus language bindings for Elisp are provided by the package
298dbus.el and by extensions to the C modules of Emacs. D-Bus is an
299inter-process communication mechanism for applications residing on the
300same host, based on messages. See the manual for further details.
c154c0be 301
c6588a85
MO
302** EasyPG is now part of the Emacs distribution. It is an all-in-one
303GnuPG interface which includes GnuPG keyring browser, cryptographic
304operations on regions and files, and automatic encryption of *.gpg
305files. See the EasyPG Assistant User's Manual for further details.
0bfd685e
GM
306\f
307* Changes in Specialized Modes and Packages in Emacs 23.1
61d244ca 308
d82c3d44
GM
309** New minor mode Auto Composition Mode composes characters automatically
310when they are displayed. This mode is globally on by default.
311
e8cbfb8d
DN
312** ChangeLog now has function bound to C-c C-f that finds the file in
313the current log entry.
314
e047f448
SM
315** abbrev was rewritten in Elisp and extended with more flexibility.
316*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
317 abbrev-table-p.
318*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
319*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
320 extra arguments for arbitrary properties.
321*** New variable `abbrev-minor-mode-table-alist'.
322*** `local-abbrev-table' can hold a list of abbrev-tables.
323*** Abbrevs have now the following special properties:
79415279 324 `:count', `:system', `:enable-function', `:case-fixed'.
e047f448
SM
325*** Abbrev-tables have now the following special properties:
326 `:parents', `:case-fixed', `:enable-function', `:regexp',
327 `abbrev-table-modiff'.
328
0253fffa
MR
329** Help mode.
330*** New macro `with-help-window' should set up help windows better
331than `with-output-to-temp-buffer' with `print-help-return-message'.
332*** New option `help-window-select' permits to customize whether help
333window shall be automatically selected when invoking help.
334*** New variable `help-window-point-marker' permits to specify new
b0d2d4e8 335position of point in help window (for example in `view-lossage').
0253fffa
MR
336
337** view-remove-frame-by-deleting is now by default t
b0d2d4e8 338since users found iconification of view-mode frames distracting.
0253fffa 339
bafbec39
JL
340** Isearch mode
341
342*** New command `isearch-occur' bound to `M-s o' in isearch mode
343runs `occur' with the current search string.
344
345*** isearch can now search through multiple ChangeLog files.
12bbb989
JL
346When running isearch in a ChangeLog file, if the search fails,
347then another C-s tries searching the previous ChangeLog,
348if there is one (e.g. go from ChangeLog to ChangeLog.12).
349
9097e8af
RS
350This is enabled if isearch-buffers-multi is non-nil.
351
4c24d241
GM
352*** The part of an isearch that failed to match is highlighted in `isearch-fail'
353face.
354
c3bb6fdb
SM
355** smerge-refine highlights word-level details of changes in conflict.
356It's used automatically as you move through conflicts, see smerge-auto-refine.
357
25e50a58
DN
358** Diff mode
359
360*** diff-refine-hunk highlights word-level details of changes in a diff hunk.
361It's used automatically as you move through hunks, see
362diff-auto-refine. It is bound to `C-c C-b'.
363
e7940cb5
DN
364*** diff-add-change-log-entries-other-window iterates through the diff
365buffer and tries to create ChangeLog entries for each change.
366It is bound to `C-x 4 A'.
c3bb6fdb 367
e6a01e4e 368** archive-mode has basic support to browse Rar archives.
c3bb6fdb 369
24cdde13
GM
370** talk.el has been extended for multiple tty support.
371
813fb3fe
SM
372** compilation-auto-jump-to-first-error tells `compile' to jump to
373the first error encountered during compilations.
374
b68769f2 375** In the `copyright' package, you can specify your copyright holders' names.
b649d2e4
SM
376Only copyright lines with holders matching copyright-names-regexp will be
377considered for update.
378
e7ce8577
GM
379** eldoc highlights the function argument under point
380with the face `eldoc-highlight-function-argument'.
381
ef6d86b5
MR
382** hide-ifdef-mode permits to shadow ifdef-blocks instead of hiding them.
383See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
384
b68769f2 385+++
8d5cc579 386** defcustom accepts new keyword arguments, `:safe' and `:risky', which
b68769f2
GM
387set a variable's `safe-local-variable' and `risky-local-variable' property.
388
b0d2d4e8
FP
389** Etags changes.
390*** The --members option is now the default.
391
392Use --no-members if you want the old default behaviour of not tagging
393struct members in C, members variables in C++ and variables in PHP.
394
56dada42 395** VC
397c4757
DN
396*** Clicking on the VC mode-line entry now pops the VC menu.
397
9372a958 398*** The VC mode-line entry now has a tooltip that explains the VC file status.
cb223bba 399
082c5622
DN
400*** VC now supports applying VC operations to a set of files at a time.
401
4a11b6b5
ER
402This enables VC to work much more effectively with changeset-oriented
403version-control systems such as Subversion, GNU Arch, Mercurial, and
404Bzr. VC will now pass a multiple-file commit to these systems
405as a single changeset.
406
b58a65fa
TTN
407*** In VC Annotate mode, you can type V to toggle the annotation visibility.
408
f3ff0fe9
DN
409*** In VC Annotate mode, you can type f to show the file revision on
410the current line.
411
93a142e1
DN
412** log-edit now has a command bound to C-c C-d to show the diff for
413the files involved.
414
5d503af9
SM
415** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
416
332de56f
GM
417** The appearance of superscript and subscript in TeX is more customizable.
418See the documentation of the variables: tex-fontify-script,
419tex-font-script-display, tex-suscript-height-ratio, and
420tex-suscript-height-minimum.
421
2793c9bb
RW
422** BibTeX mode:
423
c5578d5f
RW
424*** New command `bibtex-initialize' (re)initializes BibTeX buffers.
425
2793c9bb
RW
426*** New `bibtex-entry-format' options `whitespace', `braces', and
427`string', disabled by default.
428
429*** New variable `bibtex-cite-matcher-alist' contains rules to
0f3cd6b2 430identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
2793c9bb 431
c5578d5f 432*** Command `bibtex-url' allows multiple URLs per entry.
2793c9bb 433
cc213f24
MA
434+++
435** Tramp
436
437*** New connection methods.
438The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
439been introduced. There are also new so-called gateway methods
440"tunnel" and "socks".
441
442*** Multihop syntax has been removed.
443The pseudo-method "multi" has been removed. Instead of, multi hops
444can be specified by the new variable `tramp-default-proxies-alist'.
445
446*** More default settings.
447Default values can be set via the variables `tramp-default-user',
448`tramp-default-user-alist' and `tramp-default-host'.
449
450*** Connection information is cached.
451In order to reduce connection setup, information about used
452connections are kept persistent in a file. The name of this file is
453defined in the variable `tramp-persistency-file-name'.
454
455*** Control of remote processes.
456Running processes on a remote host can be controlled by settings in
457`tramp-remote-path' and `tramp-remote-process-environment'.
458
459*** Success of remote copy is checked.
460When the variable `file-precious-flag' is set, the success of a remote
461file copy is checked via the file's checksum.
462
d15f7b68
GM
463** Miscellaneous programming mode changes
464
da26ea8d
GM
465*** The file etc/emacs.py now supports both Python 2 and 3, meaning
466that either version can be used as inferior Python by python.el.
c3f01f42 467
4c24d241
GM
468*** Python mode now has `pdbtrack' functionality. When using pdb to
469debug a Python program, pdbtrack notices the pdb prompt and displays
470the source file and line that the program is stopped at, much the same
471way as gud-mode does for debugging C programs with gdb.
472
d15f7b68
GM
473*** The variable `fortran-line-length' can change the fixed-form line-length.
474
a9f480e8
GM
475*** In Fortran mode, M-; is now bound to the standard comment-dwim,
476rather than fortran-indent-comment.
477
b68769f2
GM
478+++
479*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
2fb6c6be 480
cf944fa4
RS
481** Gnus package
482
483*** The Gnus package has been updated
484
485*** There are many news features, bug fixes and improvements.
486
487See the file GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
488
d15f7b68
GM
489** Miscellaneous
490
491*** comint-mode uses `start-file-process' now (see Lisp Changes).
cc213f24
MA
492If `default-directory' is a remote file name, subprocesses are started
493on the corresponding remote system.
494
d15f7b68 495*** C-x C-q in dired-mode now runs the command wdired-change-to-wdired-mode,
40aa8257
JL
496and C-x C-q in wdired-mode exits it with asking a question about
497saving changes.
d15f7b68 498
4596901f
GM
499*** The new command `eshell/info' runs info in an eshell buffer.
500
1752e205
GM
501*** The pcmpl-unix package supports hostname completion for ssh and scp.
502
3cf86f00
GM
503*** WoMan tries to add locale-specific manual page directories to the
504search path. This can be disabled by setting `woman-locale' to nil.
505
4d1e89e3
GM
506*** The new variable `ffap-rfc-directories' specifies a list of local
507directories in which `ffap-rfc' will first search for RFCs.
508
0bfd685e
GM
509\f
510* Changes in Emacs 23.1 on non-free operating systems
8ab314f9 511
672f99b6
JR
512---
513** IPv6 is supported on MS-Windows.
514Emacs now supports IPv6 on Windows XP and later, and earlier versions
515of Windows with third party IPv6 stacks installed. Previously IPv6 was
516supported on other platforms, but not on Windows due to using the winsock
5171.1 header file, even though Emacs was linking to the winsock 2 library.
518
3280c5c5
JR
519** More keys available on MS-Windows.
520Keys normally associated with IMEs, and some exotic keys not normally found
521on standard keyboards have been given names so they can be bound to functions
522inside Emacs. If there are keys on your keyboard that have not been exposed
523to Emacs in the past, try C-h k to see if they are available now.
524
525Emacs can now bind functions to the extra buttons for media player and
526browser control present on some keyboards. These buttons are disabled
527by default, since enabling them prevents their system-wide use when
528Emacs has focus. To enable them, set the variable
529w32-pass-multimedia-buttons to nil. See the doc string of that variable
530for the list of extra keys that are available.
0bfd685e
GM
531\f
532* Incompatible Lisp Changes in Emacs 23.1
8ec65cd7 533
d82c3d44
GM
534** The behavior of map-char-table has changed. It may call the
535specified function with a cons (FROM . TO) as a key if characters in
536that range have the same value.
537
538** The value of the function `charset-id' is now always 0.
539
540** The functions `register-char-codings' and `coding-system-spec'
541have been removed.
542
543** Many codepage related functions have been removed. They are:
544 cp-make-coding-systems-for-codepage, cp-charset-for-codepage,
545 cp-language-for-codepage, cp-offset-for-codepage,
546 cp-supported-codepages
547You don't need them anymore because coding systems created by these
548functions are supported from the start now.
549
03605a28
MA
550+++
551** The function `dired-call-process' has been removed.
552
777ea444
GM
553** The variable `byte-compile-warnings' can now be a list starting with `not',
554meaning to disable the specified warnings. The meaning of this list
555may therefore be the reverse of what you expect (of course, this is
556only an issue if you make use of the new `not' syntax). Rather than
557checking/manipulating elements directly, use the new functions
558`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
559`byte-compile-enable-warning.'
560
69df9d6d
GM
561** `mode-name' is no longer guaranteed to be a string.
562Use `(format-mode-line mode-name)' to ensure a string value.
563
0bfd685e
GM
564\f
565* Lisp Changes in Emacs 23.1
8ab314f9 566
64663f06 567** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
d82c3d44 568
50bfa18a 569** `beginning-of-defun-function' now takes one argument, the count
d82c3d44 570 given to `beginning-of-defun'.
50bfa18a 571
39d0bf74
RS
572** The variable `inhibit-changing-match-data', if non-nil, prevents the
573search and match primitives from changing the match data.
574
59b5d020
JL
575+++
576** New function `match-substitute-replacement' returns the result of
577`replace-match' without actually using it in the buffer.
578
2d105adf
RS
579** If a local hook function has a non-nil `permanent-local-hook'
580property, then `kill-all-local-variables' does not remove it from
581the local value of the hook variable. This means it remains
582even if you change major modes.
583
b9694062
JL
584+++
585** A list of default values can be specified for the DEFAULT argument of
586functions `read-from-minibuffer', `read-string', `read-command',
587`read-variable', `read-buffer', `completing-read'. Elements of this list
588are available for inserting into the minibuffer by typing `M-n'.
589For empty input these functions return the first element of this list.
590
66dc1ca2
RS
591** `custom-note-var-changed' tells Custom to treat the change in a certain
592variable as having been made within Custom.
593
ab6198b2
SM
594** `frame-inherited-parameters' lets new frames inherit parameters from
595the selected frame.
66dc1ca2 596
c60d543d 597** Commands should use `use-region-p' to test whether there is
d03b9b31
RS
598an active region that they should operate on.
599
c60d543d
RS
600** `region-active-p' returns non-nil when Transient Mark mode
601is enabled and there is an active region. This is NOT the best function
602to use to test whether a command should operate on the region instead
603of the usual behavior -- for that, use `use-region-p'.
604
4f4a84ec
SM
605** New keymap `input-decode-map' overrides like key-translation-map, but
606applies before function-key-map. Also it is terminal-local contrary to
607key-translation-map. Terminal-specific key-sequences are generally added to
608this map rather than to function-key-map now.
609
967b2682
GM
610** The new macro `declare-function' suppresses compiler warnings about
611undefined functions. The new `check-declare' package verifies that such
612statements are accurate (i.e. the functions are actually defined in
613the specified files).
614
d9774611
RS
615** The new function `read-color' reads a color name using the minibuffer.
616
833547aa
RS
617** The new function `face-all-attributes' returns an alist
618describing all the basic attributes of a given face.
619
63571b5a
RS
620** `interprogram-paste-function' can now return one string or a list
621of strings. In the latter case, Emacs puts the second and following
622strings on the kill ring.
623
d82c3d44
GM
624** Character code, representation, and charset changes.
625
626The character code space is now 0x0..0x3FFFFF with no gap.
627Characters of code 0x0..0x10FFFF are Unicode characters of the same code points.
628Characters of code 0x3FFF80..0x3FFFFF are raw 8-bit bytes.
629
630Generic characters no longer exist.
631
632In buffer and string, characters are represented by UTF-8 byte
633sequence in a multibyte buffer/string.
634
635The concept of a charset has changed. A single character may belong to
636multiple charsets (e.g. a-grave, U+00E0, belongs to charsets unicode,
637iso-8859-1, iso-8859-3, etc).
638
639*** The new function `characterp' returns t if and only if the argument
640is a character.
641
642*** The new function `max-char' returns the maximum character code
643(currently it is #x3FFFFF).
644
645*** The functions `encode-char' and `decode-char' now accept any character sets.
646
647*** The function `define-charset' now accepts a completely different
648form of arguments (old-style arguments still work).
649
650*** The new function `define-charset-alias' defines an alias of a charset.
651
652*** The value of the function `char-charset' depends on the current
653priorities of charsets.
654
655*** The new function `charset-priority-list' returns the list of
656charsets ordered by priority.
657
658*** The new function `set-charset-priority' sets priorities of charsets.
659
660*** The new function `unibyte-charset' returns the current unibyte
661charset. The unibyte charset determines how unibyte/multibyte
662conversion is done.
663
664*** The new function `set-unibyte-charset' sets the unibyte charset.
665
666*** The new function `unibyte-string' make a unibyte string from bytes.
667
668*** The new function `define-char-code-property' defines a character
669code property.
670
671*** The new function `char-code-property-description' returns the
672description string of a character code property.
673
674*** The function get-char-code-property now accepts many Unicode base
675character properties. They are `name', `general-category',
676`canonical-combining-class', `bidi-class', `decomposition',
677`decimal-digit-value', `digit-value', `numeric-value', `mirrored',
678`old-name', `iso-10646-comment', `uppercase', `lowercase', and
679`titlecase'.
680
681*** The new variable `find-word-boundary-function-table' is a
682char-table of functions to search for a word boundary.
683
684*** The new variable `char-script-table' is a char-table of script names.
685
686*** The new variable `char-width-table' is a char-table of character widths.
687
688*** The new variable `print-charset-text-property' controls how to
689handle `charset' text property on printing a string.
690
691*** The new variable `printable-chars' is a char-table defining if a
692character is printable or not.
693
694*** The functions `modify-syntax-entry' and `modify-category-entry' now
695accepts a cons of characters as the first argument, and modify all
696entries in that range of characters.
697
698*** The functions `char-bytes', `chars-in-region', and `char-valid-p' are
699obsolete.
700
701** Code conversion changes.
702
703*** The new function `define-coding-system' should be used to define a
704coding system instead of `make-coding-system' (which is now obsolete).
705
706*** The functions `encode-coding-region' and `decode-coding-region'
707have an optional 4th argument to specify where the result of
708conversion should go.
709
710*** The functions `encode-coding-string' and `decode-coding-string'
711have an optional 4th argument specifying a buffer to store the result
712of conversion.
713
714*** The new function `with-coding-priority' executes the body part with
715the specified coding system priority order.
716
717*** The new function `check-coding-systems-region' checks if the text
718in the region is encodable by the specified coding systems.
719
720*** The new function `coding-system-aliases' returns a list of aliases
721of a coding system.
722
723*** The new function `coding-system-charset-list' returns a list of
724charsets supported by a coding system.
725
726*** The new function `coding-system-priority-list' returns a list of
727coding systems ordered by their priorities.
728
729*** The new function `set-coding-system-priority' sets priorities of
730coding systems.
731
732*** The functions `set-coding-priority' and `make-coding-system' are obsolete.
733
734** There is a new input method, Robin, different from Quail.
735It has three functionalities:
736 i) a simple input method (converts an ASCII sequence into a string).
737ii) converts an existing buffer substring into another string
738iii) reverse conversion (each character produced by a
739robin rule can hold the original ASCII sequence as a char-code-property)
740
741*** The new function `robin-define-package' defines a Robin package.
742
743*** The new function `robin-modify-package' modifies an existing Robin package.
744
745*** The new function `robin-use-package' starts using a Robin package
746as an input method.
747
748** Composition changes.
749
750*** New functions and variables `auto-composition-mode' and
751`global-auto-composition-mode' toggles the new minor mode Auto
752Composition Mode locally and globally.
753
754*** New variable `auto-composition-function' is a function used in
755Auto Composition Mode to compose characters. The default value is the
756function `auto-compose-chars'.
757
2b7a2553
GM
758** Changes related to the new font backend.
759
b19aa6dd
GM
760Which font backends to use can be specified by the X resource "FontBackend".
761For instance, to use both X core fonts and Xft fonts:
2b7a2553 762
b19aa6dd 763Emacs.FontBackend: x,xft
2b7a2553 764
b19aa6dd
GM
765If this resource is not set, Emacs tries to use all font backends
766available on your graphic device.
d82c3d44
GM
767
768*** New frame parameter `font-backend' specifies a list of
769font-backends supported by the frame's graphic device. On X, they are
770currently `x' and `xft'.
771
772*** New function `fontp' checks if the argument is a font-spec or font-entity.
773
774*** New function `font-spec' creates a new font-spec object.
775
776*** New function `font-get' returns a font property value.
777
778*** New function `font-put' sets a font property value.
779
780*** New function `list-fonts' returns a list of font-entities matching
781the given specification.
782
783*** New function `list-families' returns a list of family names of
784available fonts.
785
786*** New function `font-font' returns a font-entity best matching with
787the given specification.
788
789*** New function `font-xlfd-name' returns an XLFD name of a given font
790(font-spec, font-entity, or font-object).
791
792*** New function `clear-font-cache' clears all font caches.
793
794*** The function `set-fontset-font' now accepts a script name as the
795second argument, and has an optional 5th argument to control how to
796set the font.
797
24cdde13
GM
798** Changes related to multiple tty support.
799
b12f6e85
SM
800*** $TERM is now set to `dumb' for subprocesses. If you want to know the
801$TERM inherited by Emacs you will have to look inside initial-environment.
802
6168122d
SM
803*** $DISPLAY is now dynamically inherited from the frame's `display'.
804
24cdde13
GM
805*** The `window-system' variable has been made frame-local. The new
806`initial-window-system' variable contains the `window-system' value
807for the first frame.
808
809*** You can specify a terminal device (`tty' parameter) and a terminal
810type (`tty-type' parameter) to `make-terminal-frame'.
811
812*** The new function `make-frame-on-tty' allows you to create a new
813frame on another tty device interactively.
814
815*** The function `make-frame-on-display' now works during a tty
816session, and `make-frame-on-tty' works during a graphical session.
817
da406961 818*** New functions: `delete-tty', `suspend-tty', `resume-tty'.
24cdde13 819
419f8f49
SM
820*** A new data type for terminals with functions: `get-device-terminal',
821`terminal-parameters', `terminal-parameter', `set-terminal-parameter'.
24cdde13 822
1816bda7 823*** New hooks: `suspend-tty-functions' and `resume-tty-functions'
92cd6a7c 824are called after a tty frame has been suspended or resumed,
de3054d5 825respectively. The functions are called with the terminal id of the frame
92cd6a7c
DN
826being suspended/resumed as a parameter.
827
01ff458e 828*** New function: `environment'.
da406961 829
4f4a84ec 830*** New variable: `local-function-key-map'.
01ff458e
SM
831This in addition to the global function-key-map variable that
832already existed. The global variable is not used directly any more;
833instead, the local-function-key-map is initialized so as to inherit from
834function-key-map.
da406961 835
82866ad5
SM
836*** `initial-environment' holds the environment inherited from Emacs's parent.
837
24cdde13
GM
838*** The `keyboard-translate-table' variable and the terminal and
839keyboard coding systems have been made terminal-local.
840
1aa423e9
SM
841*** In addition to the global function-key-map, Emacs has terminal-local
842local-function-key-map variables, and uses them instead of the
24cdde13
GM
843global keymaps to set up translations and function key sequences
844relevant to a specific terminal device.
845
846
90ab5c62
SM
847** You can now also pass the value of the `invisible' property to invisible-p
848to check whether it would cause the text to be invisible. Convenient when
849checking invisibility of text which has no buffer position
850(e.g. in before/after-strings).
9f44d41a 851
ea2e3ef4
RS
852** Non-breaking space now acts as whitespace.
853
41bd52f7 854+++
8d371994
RS
855** In `condition-case', a handler can specify "let the debugger run first".
856
857You do this by writing `debug' in the list of conditions to be handled,
858like this:
859
860 (condition-case nil
861 (foo bar)
862 ((debug error) nil))
863
0a963185
SM
864** The `require-match' argument to `completing-read' accepts a new value
865`confirm-only'.
866
c69b0314
SM
867+++
868** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
869
9f44d41a
RS
870** New function `window-full-width-p' returns t if a window is as wide
871as its frame.
872
873** The new function `split-string-and-unquote' does (what?)
874
875** The new function `combine-and-quote-strings' does (what?)
876
877** The new function `image-refresh' refreshes all images associated
878with a given image specification.
879
abf13a8b
CY
880+++
881** New variable `user-emacs-directory'.
882Use this instead of "~/.emacs.d".
883
b2b387f9 884+++
0f3cd6b2 885** The new function `start-file-process' is similar to `start-process',
b2b387f9 886but obeys file handlers. The file handler is chosen based on
6dbe7eb4
MA
887`default-directory'. The functions `start-file-process-shell-command'
888and `process-file-shell-command' are also new; they call internally
0f3cd6b2 889`start-file-process' and `process-file', respectively.
b2b387f9 890
967b2682
GM
891** The new function `process-lines' executes an external program and
892returns its output as a list of lines.
893
64639e26 894+++
41bd52f7
MA
895** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
896IDENTIFICATION specifies which part of the remote identifier has to be
897returned. With CONNECTED passed non-nil, it is checked whether a
898remote connection has been established already.
64639e26 899
45595a4f
RS
900** The two new functions `looking-at-p' and `string-match-p' can do
901the same matching as `looking-at' and `string-match' without changing
902the match data.
89835619
SM
903
904** The interactive-form of a function can be added post-facto via the
905`interactive-form' symbol property. Mostly useful to add complex interactive
906forms to subroutines.
9bae34bf 907\f
0bfd685e 908* New Packages for Lisp Programming in Emacs 23.1
efeb796b 909
9097e8af
RS
910** The package isearch-multi.el has been added. It implements a new mode
911`isearch-buffers-minor-mode' that allows isearch to search through
912multiple buffers. In this mode a new variable
913`isearch-buffers-next-buffer-function' defines the function to call
914to get the next buffer to search in the series of multiple buffers.
915
d53a60a6
TTN
916** The new package avl-tree.el deals with the AVL tree data structure.
917
05197f40 918\f
a933dad1 919----------------------------------------------------------------------
5b87ad55 920This file is part of GNU Emacs.
a933dad1 921
5b87ad55
GM
922GNU Emacs is free software; you can redistribute it and/or modify
923it under the terms of the GNU General Public License as published by
64be3a42 924the Free Software Foundation; either version 3, or (at your option)
5b87ad55
GM
925any later version.
926
927GNU Emacs is distributed in the hope that it will be useful,
928but WITHOUT ANY WARRANTY; without even the implied warranty of
929MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
930GNU General Public License for more details.
a933dad1 931
5b87ad55
GM
932You should have received a copy of the GNU General Public License
933along with GNU Emacs; see the file COPYING. If not, write to the
934Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
935Boston, MA 02110-1301, USA.
a933dad1 936
05197f40 937\f
a933dad1
DL
938Local variables:
939mode: outline
940paragraph-separate: "[ \f]*$"
941end:
ab5796a9 942
a533413c 943arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2