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