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