Remove --- and +++ lines from NEWS file.
[bpt/emacs.git] / etc / NEWS
CommitLineData
29b7722a 1GNU Emacs NEWS -- history of user-visible changes.
5b87ad55 2
893db5bc 3Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5b87ad55 4See the end of the file for license conditions.
a933dad1 5
893db5bc 6Please send Emacs bug reports to bug-gnu-emacs@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 16
adce950d 17\f
aa701ce8
CY
18* Installation Changes in Emacs 23.2
19
2233cfb0 20** New configure options for Emacs developers.
aa701ce8 21These are not new features; only the configure flags are new.
2233cfb0 22
aa701ce8
CY
23*** --enable-profiling builds Emacs with profiling enabled.
24This might not work on all platforms.
2233cfb0 25
aa701ce8
CY
26*** --enable-checking[=OPTIONS] builds emacs with extra runtime checks.
27
45980501
GM
28** `make install' now consistently ignores umask, creating a
29world-readable install.
30
26e533e2 31** Emacs compiles with Gconf support, if it is detected.
96639030 32Use the configure option --without-gconf to disable this.
8ecd59ca 33This is used by the `font-use-system-font' feature (see below).
96639030 34
f9245b5d 35* Startup Changes in Emacs 23.2
2233cfb0 36
96639030
CY
37** The command-line option -Q (--quick) also inhibits loading X resources.
38However, if Emacs is compiled with the Lucid or Motif toolkit, X
39resource settings for the graphical widgets are still applied.
40On Windows, the -Q option causes Emacs to ignore Registry settings,
41but environment variables set on the Registry are still honored.
2233cfb0 42
f9245b5d
CY
43*** The new variable `inhibit-x-resources' shows whether X resources
44were loaded.
8686ac71 45
96639030
CY
46** New command-line option -mm (--maximized) maximizes the initial frame.
47
f9245b5d 48* Changes in Emacs 23.2
fcb68f70 49
96639030 50** The maximum size of buffers (and the largest fixnum) is doubled.
2de9f71c
SM
51On typical 32bit systems, buffers can now be up to 512MB.
52
96639030
CY
53** The default value of `trash-directory' is now nil.
54This means that `move-file-to-trash' trashes files according to
d63a01ef
CY
55freedesktop.org specifications, the same method used by the Gnome,
56KDE, and XFCE desktops. (This change has no effect on Windows, which
57uses `system-move-file-to-trash' for trashing.)
58
e044e4fc 59** The pointer now becomes invisible when typing.
96639030 60Customize `make-pointer-invisible' to disable this feature.
e044e4fc 61
96639030 62** Font changes
2233cfb0 63
96639030
CY
64*** Emacs can use the system default monospaced font in Gnome.
65To enable this feature, set `font-use-system-font' to non-nil (it is
66nil by default). If the system default changes, Emacs changes also.
67This feature requires Gconf support, which is automatically included
68at compile-time if configure detects the gconf libraries (you can
69disable this with the configure option --without-gconf).
2233cfb0 70
96639030
CY
71*** On X11, Emacs reacts to Xft changes made by configuration tools,
72via the XSETTINGS mechanism. This includes antialias, hinting,
73hintstyle, RGBA, DPI and lcdfilter changes.
f4fcbe98 74
96639030
CY
75** Killing a buffer with a running process now asks for confirmation.
76To remove this query, remove `process-kill-buffer-query-function' from
77`kill-buffer-query-functions', or set the appropriate process flag
78with `set-process-query-on-exit-flag'.
100b6355 79
34481ea1 80** File-local variable changes
2233cfb0 81
34481ea1
CY
82*** Specifying a minor mode as a local variables enables that mode,
83unconditionally. The previous behavior, toggling the mode, was
84neither reliable nor generally desirable.
85
4d4e9522 86*** There are new commands for adding and removing file-local variables:
34481ea1
CY
87`add-file-local-variable', `delete-file-local-variable',
88`add-file-local-variable-prop-line', and
89`delete-file-local-variable-prop-line'.
90
4d4e9522 91*** There are new commands for adding and removing directory-local variables,
34481ea1
CY
92and copying them to and from file-local variable lists:
93`add-dir-local-variable', `delete-dir-local-variable',
94`copy-dir-locals-to-file-locals',
82941b5e
JL
95`copy-dir-locals-to-file-locals-prop-line' and
96`copy-file-locals-to-dir-locals'.
97
96639030 98** Internationalization changes
2233cfb0 99
96639030
CY
100*** Unibyte sessions are now considered obsolete.
101This refers to the EMACS_UNIBYTE environment variable as well as the
102--unibyte, --multibyte, --no-multibyte, and --no-unibyte command line
103arguments. Customizing enable-multibyte-characters and setting
104default-enable-multibyte-characters are also deprecated.
2233cfb0 105
96639030
CY
106*** New coding system `utf-8-hfs'.
107This is suitable for default-file-name-coding-system on Mac OS X; see
108international/ucs-normalize.el.
109
110** Function arguments in *Help* buffers are now shown in upper-case.
111Customize `help-downcase-arguments' to t to show them in lower-case.
3c736e33 112
2233cfb0
CY
113** New command `async-shell-command', bound globally to `M-&'.
114This executes the command asynchronously, similar to calling `M-!' and
115manually adding an ampersand to the end of the command. With `M-&',
116you don't need the ampersand. The output appears in the buffer
117`*Async Shell Command*'.
118
119** When running in a new enough xterm (newer than version 242), Emacs
120asks xterm what the background color is and it sets up faces
121accordingly for a dark background if needed (the current default is to
122consider the background light).
123
05197f40 124\f
0badeef4
GM
125* Editing Changes in Emacs 23.2
126
96639030 127** Kill-ring and selection changes
2233cfb0 128
f9245b5d
CY
129*** If `select-active-regions' is t, any active region automatically
130becomes the primary selection (for interaction with other window
131applications). If you enable this, you might want to bind
132`mouse-yank-primary' to Mouse-2.
2233cfb0 133
96639030
CY
134*** When `save-interprogram-paste-before-kill' is non-nil, the kill
135commands save the interprogram-paste selection into the kill ring
136before doing anything else. This avoids losing the selection.
2233cfb0 137
96639030
CY
138*** When `kill-do-not-save-duplicates' is non-nil, identical
139subsequent kills are not duplicated in the `kill-ring'.
f9245b5d 140
96639030 141** Completion changes
0badeef4 142
51ef56c4 143*** The new command `completion-at-point' provides mode-sensitive completion.
2233cfb0 144
51ef56c4 145*** tab-always-indent set to `complete' lets TAB do completion as well.
2233cfb0 146
96639030 147*** The new completion-style `initials' is available.
f9245b5d 148For instance, this can complete M-x lch to list-command-history.
2233cfb0 149
96639030
CY
150*** The new variable `completions-format' determines how completions
151are displayed in the *Completions* buffer. If you set it to
152`vertical', completions are sorted vertically in columns.
153
96639030 154** The default value of `blink-matching-paren-distance' is increased.
40e93a2c 155
96639030
CY
156** M-n provides more default values in the minibuffer for commands
157that read file names. These include the file name at point (when ffap
158is loaded without ffap-bindings), the file name on the current line
159(in Dired buffers), and the directory names of adjacent Dired windows
160(for Dired commands that operate on several directories, such as copy,
161rename, or diff).
7d371eac 162
96639030
CY
163** M-r is bound to the new `move-to-window-line-top-bottom'.
164This moves point to the window center, top and bottom on successive
165invocations, in the same spirit as the C-l (recenter-top-bottom)
166command.
216349f8 167
96639030
CY
168** The new variable `recenter-positions' determines the default
169cycling order of C-l (`recenter-top-bottom').
0116abbd 170
26e533e2
CY
171** The abbrevs file is now a file named abbrev_defs in
172user-emacs-directory; but the old location, ~/.abbrev_defs, is used if
173that file exists.
2233cfb0 174
0badeef4 175\f
009c963c
MA
176* Changes in Specialized Modes and Packages in Emacs 23.2
177
1e7d4475
SM
178** The bookmark menu has a narrowing search via bookmark-bmenu-search.
179
26e533e2 180** Calc
2233cfb0 181
26e533e2
CY
182*** The Calc settings file is now a file named calc.el in
183user-emacs-directory; but the old location, ~/.calc.el, is used if
184that file exists.
2233cfb0 185
26e533e2
CY
186*** Graphing commands (`g f' etc.) now work on MS-Windows, if you have
187the native Windows port of Gnuplot version 3.8 or later installed.
d10c031a 188
f9245b5d 189** Calendar and diary
2233cfb0 190
f9245b5d
CY
191*** Fancy diary display is now the default.
192If you prefer the simple display, customize `diary-display-function'.
2233cfb0 193
f9245b5d 194*** The diary's fancy display now enables view-mode.
2233cfb0 195
f9245b5d
CY
196*** The command `calendar-current-date' accepts an optional argument
197giving an offset from today.
198
199** Desktop
2233cfb0 200
f9245b5d
CY
201*** The default value for `desktop-buffers-not-to-save' is nil.
202This means Desktop will try restoring all buffers, when you restart
203your Emacs session. Also, `desktop-buffers-not-to-save' is only
204effective for buffers that have no associated file. If you want to
205exempt buffers that do correspond to files, customize the value of
206`desktop-files-not-to-save' instead.
207
2b3489a7 208** Dired
2233cfb0 209
4102856c
CY
210*** The new variable `dired-auto-revert-buffer', if non-nil, causes
211Dired buffers to be reverted automatically on revisiting them.
2b3489a7 212
aefcadb6 213** DocView
2233cfb0 214
0a745733 215*** When `doc-view-continuous' is non-nil, scrolling a line
aefcadb6
JL
216on the page edge advances to the next/previous page.
217
2233cfb0
CY
218** Elint
219
220*** Elint now uses compilation-mode.
221
222*** Elint can now scan individual files and whole directories,
223and can be run in batch mode.
224
225*** Elint does a more thorough initialization, and recognizes more built-in
226functions and variables. Customize `elint-scan-preloaded' if you want
227to sacrifice some accuracy for a faster startup.
228
229*** Elint attempts some basic understanding of featurep and (f)boundp tests.
230
231*** Customize `elint-ignored-warnings' to suppress some warnings.
232
49f073bd 233** GDB-UI
70e013b4 234
da14b7ca 235*** Toolbar functionality for reverse debugging. Display of STL
f492f32f 236collections as watch expressions. These features require GDB 7.0 or later.
ee047ec4 237
a601d313 238** Grep
2233cfb0 239
26e533e2 240*** A new command `zrgrep' searches recursively in gzipped files.
a601d313 241
9f18817f
JL
242** Info
243
244*** The new command `Info-virtual-index' bound to "I" displays a menu of
245matched topics found in the index.
246
f38fd73d
JL
247*** The new command `info-finder' replaces finder.el with a virtual Info
248manual that generates an Info file which gives the same information
249through a menu structure.
250
2233cfb0
CY
251** LaTeX mode now provides completion (via completion-at-point).
252
cec84921
CY
253** Message mode is now the default mode for composing mail.
254
255The default for `mail-user-agent' is now message-user-agent, so the
256C-x m (`compose-mail') command uses Message mode instead of Mail mode.
257
258Message mode has been included in Emacs, as part of the Gnus package,
259for several years. It provides several features that are absent in
260Mail mode, such as MIME handling.
261
262*** If the user has not customized mail-user-agent, `compose-mail'
263checks for Mail mode customizations, and issues a warning if these
264customizations are found. This alerts users who may otherwise be
265unaware that their mail configuration has changed.
266
267To disable this check, set compose-mail-user-agent-warnings to nil.
268
c5347676
GM
269** The default value of mail-interactive is t, since Emacs 23.1.
270(This was not announced at the time.) It means that when sending mail,
271Emacs will wait for the process sending mail to return. If you
272experience delays when sending mail, you may wish to set this to nil.
273
93bff749
CY
274** nXML mode is now the default for editing XML files.
275
2233cfb0
CY
276** pcomplete provides a new command `pcomplete-std-completion' which
277is similar to `pcomplete' but using the standard completion UI code.
278
f2608df3 279** Shell (and other comint modes)
2233cfb0 280
f2608df3 281*** M-s is no longer bound to `comint-next-matching-input'.
2233cfb0 282
f2608df3
CY
283*** M-r is now bound to `comint-history-isearch-backward-regexp'.
284This starts an incremental search of the comint/shell input history.
2233cfb0 285
f2608df3 286*** ansi-color is now enabled by default in Shell mode.
93bff749
CY
287To disable it, set ansi-color-for-comint-mode to nil.
288
93bff749 289** Tramp
2233cfb0 290
93bff749
CY
291*** New connection methods "rsyncc", "imap" and "imaps".
292On systems which support GVFS-Fuse, Tramp offers also the new
293connection methods "dav", "davs", "obex" and "synce".
8525a1d6 294
3c3bf6ce 295** VC and related modes
2233cfb0 296
b4e813ca
DN
297*** When using C-x v v or C-x v i on a unregistered file that is in a
298directory not controlled by any VCS, ask the user what VC backend to
299use to create a repository, create a new repository and register the
300file.
2233cfb0 301
c0c035fa
CY
302*** New command `vc-root-print-log', bound to `C-x v L'.
303This displays a `*vc-change-log*' buffer showing the history of the
304version-controlled directory tree as a whole.
2233cfb0 305
ef7b27ef
CY
306*** New command `vc-root-diff', bound to `C-x v D'.
307This is similar to `vc-diff', but compares the entire directory tree
308of the current VC directory with its working revision.
2233cfb0 309
c0c035fa
CY
310*** `C-x v l' and `C-x v L' do not show the full log by default.
311The number of entries shown can be chosen interactively with a prefix
312argument, or by customizing vc-log-show-limit. The `*vc-change-log*'
313buffer now contains buttons at the end of the buffer, which can be
314used to increase the number of entries shown. RCS, SCCS, and CVS do
315not support this feature.
2233cfb0 316
d1e4c403
DN
317*** vc-annotate supports annotations through file copies and renames,
318it displays the old names for the files and it can show logs/diffs for
319the corresponding lines. Currently only Git and Mercurial take
320advantage of this feature.
2233cfb0 321
662c5698
DN
322*** The log command in vc-annotate can display a single log entry
323instead of redisplaying the full log. The RCS, CVS and SCCS VC
324backends do not support this.
2233cfb0 325
3c3bf6ce 326*** When a file is not found, VC will not try to check it out of RCS anymore.
2233cfb0 327
c0c035fa 328*** Diff and log operations can be used from Dired buffers.
8de724f3 329
e05b6a4e
DN
330*** vc-git changes
331
46a4f27f
GM
332**** The short log format for git makes use of the graph display,
333so it's not supported on git versions earlier than 1.5.6.
334
46a4f27f
GM
335**** vc-dir uses the --relative option of git, and so requires at least
336git version 1.5.5.
fcc70817 337
f492f32f
GM
338**** Support for operating with stashes has been added to vc-dir:
339the stash list is displayed in the *vc-dir* header, stashes can be
340created, removed, applied and their content displayed.
6b4df8a6 341
4dfb3b9c
DN
342*** vc-bzr supports operating with shelves: the shelve list is
343displayed in the *vc-dir* header, shelves can be created, removed and applied.
2233cfb0 344
31764e15
SM
345*** log-edit-strip-single-file-name controls whether or not single filenames
346are stripped when copying text from the ChangeLog to the *VC-Log* buffer.
347
9f18817f 348** Miscellaneous
2233cfb0 349
c585bf32
JL
350*** Interactively `multi-isearch-buffers' and `multi-isearch-buffers-regexp'
351read buffer names to search, one by one, ended with RET. With a prefix
352argument, they ask for a regexp, and search in buffers whose names match
353the specified regexp. Interactively `multi-isearch-files' and
354`multi-isearch-files-regexp' read file names to search, one by one,
355ended with RET. With a prefix argument, they ask for a wildcard, and
356search in file buffers whose file names match the specified wildcard.
2233cfb0 357
59ffcfc4 358*** Autorevert Tail mode now works also for remote files.
2233cfb0 359
3b0788f6 360*** The new eshell built-in commands `su' and `sudo' support Tramp.
2233cfb0
CY
361Thus, they change `default-directory' to reflect the new user id, and
362let commands run under that user's permissions. This works even when
9bbd0cac 363`default-directory' is already remote. Calling the external commands
2233cfb0
CY
364is possible via `*su' or `*sudo', respectively.
365
366** Obsolete packages
367
368*** sym-comp.el is now obsolete, superseded by completion-at-point.
369
370*** lucid.el and levents.el are now obsolete.
a91e1f6b 371
af077012
SY
372\f
373* New Modes and Packages in Emacs 23.2
374
cec84921
CY
375** CEDET (the Collection of Emacs Development Tools) is now in Emacs.
376This is a collection of packages to aid with using Emacs as an IDE
377(integrated development environment):
378
379*** The Semantic package allows the use of parsers to intelligently
380edit and navigate source code. Parsers for C/C++, Java, Javascript,
381and several other languages are included by default, and Semantic can
382also interface with external tools such as GNU Global and GNU Idutils.
383
384To enable Semantic, use the global minor mode `semantic-mode'.
385See the Semantic manual for details.
386
387*** EDE (Emacs Development Environment) is a package for managing code
388projects, including features such as automatic Makefile generation.
389
390To enable EDE, use the minor mode `global-ede-mode'.
391See the EDE manual for details.
392
393*** SRecode is a library for recoding Semantic tags back into source
394code. It is currently used by some parts of Semantic and EDE; in the
395future, it may be used for code generation features.
396
397*** The EIEIO library implements a subset of the Common Lisp Object
398System (CLOS). It is used by the other CEDET packages.
399
e1ada222 400** mpc.el is a front end for the Music Player Daemon. Run it with M-x mpc.
96639030 401
0de9f8b7
SM
402** htmlfontify.el turns a fontified Emacs buffer into an HTML page.
403
304fe7fa 404** js.el is a new major mode for JavaScript files.
0822135e 405
3d994264
TZ
406** imap-hash.el is a new library to address IMAP mailboxes as hashtables.
407
0822135e 408\f
b3429475
GM
409* Incompatible Lisp Changes in Emacs 23.2
410
b6f94db5
CY
411** The Lisp reader turns integers that are too large/small into floats.
412For instance, on machines where `536870911' is the largest integer,
413reading `536870912' gives the floating-point object `536870912.0'.
300ad19d
CY
414
415This change only concerns the Lisp reader; it does not affect how
416actual integer objects overflow.
b6f94db5 417
b3429475
GM
418** Several obsolete functions removed.
419The functions have been obsolete since Emacs 19, and are unlikely to
420be in use:
421
422 time-stamp-month-dd-yyyy, time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy
423 time-stamp-dd-mon-yy, time-stamp-yy/mm/dd, time-stamp-yyyy/mm/dd,
424 time-stamp-yyyy-mm-dd, time-stamp-yymmdd, time-stamp-hh:mm:ss,
425 time-stamp-hhmm, baud-rate
426
b3429475
GM
427** Support for generating Emacs 18 compatible bytecode (by setting
428the variable `byte-compile-compatibility') has been removed.
429
f492f32f
GM
430** In image-mode.el `image-mode-maybe' is obsolete.
431Instead, you can either use `image-mode' (which displays an image file
432as the actual image initially), or `image-mode-as-text' (when you want
433to display an image file as text initially). `image-mode-as-text' is a
434combination of a non-image mode from `auto-mode-alist' (or Fundamental
435mode) and `image-minor-mode'. `image-minor-mode' provides a `C-c C-c'
436key binding to toggle image display.
9b9debd1
JL
437`image-toggle-display-text' removes image properties.
438`image-toggle-display-image' adds image properties.
f492f32f 439`image-toggle-display' toggles between `image-mode-as-text' and `image-mode'.
9b9debd1 440
b3429475 441\f
0822135e 442* Lisp changes in Emacs 23.2
2233cfb0 443
901c830b
CY
444** All the default-FOO variables that hold the default value of the FOO
445variable, are now declared obsolete.
4fcc3d32 446
901c830b
CY
447** read-key is a function halfway between read-event and read-key-sequence.
448It reads a single key, but obeys input and escape sequence decoding.
528c56e2 449
96639030 450** Frame parameter changes
2233cfb0 451
96639030
CY
452*** You can give the `fullscreen' frame parameter the value `maximized'.
453This maximizes the frame.
2233cfb0 454
96639030
CY
455*** The new frame parameter `sticky' makes Emacs frames sticky in
456virtual desktops.
457
901c830b 458** Completion changes
2233cfb0 459
901c830b 460*** completion-base-size is obsoleted by completion-base-position.
d5e63715
SM
461This change causes a few backward incompatibilities, mostly with
462choose-completion-string-functions where the `mini-p' argument has
463been replaced by a `base-position' argument, and where the `base-size'
464argument is now always nil.
2233cfb0 465
901c830b
CY
466*** New function `completion-in-region' to use the standard completion
467facilities on a particular region of text.
2233cfb0 468
901c830b 469*** The 4th arg to all-completions (aka hide-spaces) is declared obsolete.
2233cfb0 470
901c830b
CY
471*** completion-annotate-function specifies how to compute annotations
472for completions displayed in *Completions*.
473
474** Minibuffer changes
2233cfb0 475
901c830b
CY
476*** read-file-name-predicate is obsolete. It was used to pass the predicate
477to read-file-name-internal because read-file-name-internal abused its `pred'
478argument to pass the current directory, but this hack is not needed
479any more.
480
481** Changes to file-manipulation functions
2233cfb0 482
901c830b 483*** `delete-directory' has an optional parameter RECURSIVE.
2233cfb0 484
901c830b
CY
485*** New function `copy-directory', which copies a directory recursively.
486
9d28c33e
SM
487** called-interactively-p now takes one argument and replaces interactive-p
488which is now marked obsolete.
901c830b 489
ced10a4c
SM
490** New function set-advertised-calling-convention makes it possible
491to obsolete arguments as well as make some arguments mandatory.
838ff458 492
8cb95edf
SM
493** You can control which binding is preferentially shown in menus and
494docstrings by adding a `:advertised-binding' property to the corresponding
495command's symbol. That property can hold a single binding or a list
496of bindings.
497
901c830b 498** Network and process changes
2233cfb0 499
901c830b 500*** start-process-shell-command and start-file-process-shell-command
a126db16 501now only take a single `command' argument.
2233cfb0 502
f7704e26
CY
503*** The new variable `process-file-side-effects' should be set to nil
504if a `process-file' call does not change a remote file. This allows
505file name handlers such as Tramp to optimizations.
2233cfb0 506
f7704e26 507*** make-network-process can now also create `seqpacket' Unix sockets.
901c830b
CY
508
509** Loading changes
2233cfb0 510
901c830b 511*** eval-next-after-load is obsolete.
2233cfb0 512
901c830b
CY
513*** New hook `after-load-functions' run after loading an Elisp file.
514
515** Byte compilation changes
2233cfb0 516
901c830b
CY
517*** Changing the file-names generated by byte-compilation by redefining
518the function `byte-compile-dest-file' before loading bytecomp.el is obsolete.
519Instead, customize byte-compile-dest-file-function.
2233cfb0 520
901c830b
CY
521*** `byte-compile-warnings' has new members, `constants' and `suspicious'.
522
523** New macro with-silent-modifications to tweak text properties without
524affecting the buffer's modification state.
525
0822135e
CY
526** Hash tables have a new printed representation that is readable.
527The feature `hashtable-print-readable' identifies this new
528functionality.
3c736e33 529
4102856c 530** New functions for performing Unicode normalization:
3c736e33
KH
531ucs-normalize-NFD-region, ucs-normalize-NFD-string,
532ucs-normalize-NFC-region, ucs-normalize-NFC-string,
533ucs-normalize-NFKD-region, ucs-normalize-NFKD-string,
534ucs-normalize-NFKC-region, ucs-normalize-NFKC-string,
535ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFD-string,
536ucs-normalize-HFS-NFC-region, ucs-normalize-HFS-NFC-string.
94862c1b 537
197b67b1
GM
538** Face aliases can now be marked as obsolete, using the macro
539`define-obsolete-face-alias'.
14ad89e1 540
72030c76
GM
541** New function `window-full-height-p', analogous to the full-width version.
542
d3080264 543\f
f9245b5d
CY
544* Changes in Emacs 23.2 on non-free operating systems
545
f9245b5d
CY
546** On MS-Windows, `display-time' now displays the system load average
547as well as the time, as it does on GNU and Unix.
9f18817f 548
009c963c 549\f
0bfd685e 550* Installation Changes in Emacs 23.1
c58dccad 551
3f7194ed 552** The default X toolkit is now Gtk+, rather than Lucid.
09e18d03
CY
553The configure option `--with-gtk' has been removed. Gtk is now the
554default toolkit, but you can use --with-x-toolkit=gtk if necessary.
3f7194ed 555
09e18d03
CY
556** New font code.
557Fonts are handled by new code capable of dealing with multiple font
de9efca0 558backends. This uses the freetype and fontconfig libraries.
16e82271 559
09e18d03
CY
560*** Emacs now accepts font names supplied in the fontconfig format
561(e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12").
1abe3a1e 562
09e18d03
CY
563*** Added support for local fonts (fonts installed on the machine
564where Emacs is running).
565
566*** Added support for the Xft library for antialiasing.
567
568*** Added support for the otf library for complex text layout by
569OpenType fonts.
570
571*** Added support for the m17n library for text shaping.
15f02f65 572
09e18d03 573** Changes to image support
16e82271 574
09e18d03 575*** configure now checks for libgif before libungif when searching for
9d3cc9b2 576a GIF library.
16e82271 577
09e18d03
CY
578*** Emacs now supports the SVG image format through librsvg2.
579
fab17942
JR
580*** Emacs now supports multi-page TIFF images.
581
da14b7ca 582** New NeXTSTEP-based port.
3dcdb6ea 583This provides support for GNUstep (via the GNUstep libraries) and Mac
1e9b0fb2 584OS X (via the Cocoa libraries).
043023ca 585
2e538385 586Specify --with-ns to configure for this. By default, a self-contained
043023ca
CY
587app will be built (containing all lisp). To install/share lisp with
588other emacsen (e.g. X11 build) use --disable-ns-self-contained. See
589nextstep/README and nextstep/INSTALL in the Emacs source directory.
006a2cde
CY
590
591** Mac OS X is no longer supported via Carbon.
592Use the NeXTSTEP port, described above.
36e625ec 593
09e18d03
CY
594** The new configuration option "--with-dbus" enables D-Bus language
595bindings for Emacs.
07e5c0b0 596
bb9f7948
EZ
597** Support for many obsolete platforms has been removed.
598See the list at the end of etc/MACHINES for details.
16e82271 599
09e18d03 600*** Support for systems without alloca has been removed.
16e82271 601
09e18d03 602*** Support for Sun windows has been removed.
16e82271 603
2e0ef05b 604*** The `emacstool' utility has been removed.
09e18d03 605
006a2cde 606** The following platforms will be removed in a future Emacs version:
9bc072cc
CY
607If you are still using Emacs on one of these platforms, please email
608emacs-devel@gnu.org to inform the Emacs developers.
006a2cde 609
9bc072cc 610*** Old GNU/Linux systems based on libc version 5.
006a2cde 611
9bc072cc 612*** Old FreeBSD, NetBSD, and OpenBSD systems based on the COFF
da14b7ca 613executable format.
006a2cde
CY
614
615*** Solaris versions 2.6 and below.
616
32847230
CY
617*** Solaris on IBM RS6000 machines.
618
619*** UNIX System V (the original SysV, not later platforms based on it).
620
9bc072cc
CY
621*** Unixware on non-x86 machines.
622
32847230
CY
623*** Platforms not supporting shared libraries (i.e., requiring the
624NO_SHARED_LIBS compilation flag).
006a2cde 625
a46ee55c
GM
626** The configure options `--with-gcc', `--without-gcc' have been removed.
627Configure will use gcc by default. Set the CC environment variable if
628you need control over which C compiler is used.
629
09e18d03
CY
630** The refcards are now shipped as PDF files.
631
3b75ca8b
GM
632** The manuals are now licensed under the GNU Free Documentation License v1.3,
633or any later version.
634
09e18d03
CY
635** Emacs 23 comes with a new set of default icons.
636Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
637The Emacs 22 icon is available as `emacs22.png' in the same location.
4e5cdb4f 638\f
6dadd99f
NR
639* Changes in Emacs 23.1
640
09e18d03 641** Improved X Window System support
16e82271 642
09e18d03
CY
643*** Emacs now supports using both X displays and ttys in one session.
644With an Emacs server active (M-x server-start), `emacsclient -t'
645creates a tty frame connected to the running emacs server. You can
646use any number of different ttys. `emacsclient -c' creates a new X11
647frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set).
e390f3a3
JD
648There may be problems if a display exits unexpectedly and Emacs is compiled
649with Gtk+, see etc/PROBLEMS.
780d7bb9
RS
650
651You can test for the presence of this feature in your Lisp code by
652testing for the `multi-tty' feature.
16e82271
CY
653
654*** Emacs starts in the background, as a daemon, when given the
eab2ee89
DN
655--daemon command line argument. It disconnects from the terminal and
656starts the server. Clients can connect and create graphical or
657terminal frames using emacsclient.
16e82271 658
c569485c 659**** emacsclient starts emacs in daemon mode and connects to it when
82d0a250
DN
660--alternate-editor="" is used (or when the evironment variable
661ALTERNATE_EDITOR is set to "") and emacsclient cannot connect to an
c569485c
DN
662emacs server.
663
09e18d03 664*** The new command close-display-connection closes a connection to a
717c97e5 665remote display. There are some bugs for Gtk+. See etc/PROBLEMS.
d82c3d44 666
09e18d03
CY
667*** Emacs now supports the XEmbed specification.
668You can embed Emacs in another application on X11. The new command line
669option --parent-id is used to pass the parent window id to Emacs. See
7b476dbe
JD
670http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
671for details about XEmbed.
16e82271 672
09e18d03
CY
673*** Emacs can now set the frame opacity.
674The opacity of a frame can be controlled by setting the `alpha' frame
675parameter. This only takes effect on a compositing window manager for
920ab46c
SZ
676the X Window System, such as Compiz, Beryl and Compiz Fusion, on Mac
677OS X, or on Windows 2000 and later versions of Windows.
55f9bad5
GM
678
679The alpha parameter should be an integer between 0 (transparent) and
09e18d03
CY
680100 (opaque), or a float number between 0.0 and 1.0. It can also be a
681cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an
540f3092 682active frame and INACTIVE is the opacity of non-active frames.
55f9bad5 683
09e18d03
CY
684The variable `frame-alpha-lower-limit' defines a lower bound for the
685opacity; the default is 20.
55f9bad5 686
09e18d03 687** Internationalization changes
16e82271 688
09e18d03
CY
689*** The Emacs character set is now a superset of Unicode.
690(It has about four times the code space, which should be plenty).
0a963185 691
09e18d03 692The internal encoding used for buffers and strings is now
16e82271
CY
693Unicode-based and called `utf-8-emacs' (`emacs-internal' is an alias
694for this). This encoding is backward-compatible with Unicode's UTF-8
695encoding. The internal encoding previously used by Emacs,
696`emacs-mule', is still available for reading and writing files.
6dadd99f 697
09e18d03
CY
698During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files.
699As a result, byte-compiled files containing non-ASCII characters can't
700be read by earlier versions of Emacs. Files compiled by Emacs 20, 21,
16e82271
CY
701or 22 are loaded correctly as `emacs-mule' (whether or not they
702contain multibyte characters). This takes somewhat more time, so it
703may be worth recompiling existing .elc files which don't need to be
704shared with older Emacsen.
3ae459e5 705
09e18d03 706*** There are new coding systems/aliases; see M-x list-coding-systems.
c2e8590b 707
09e18d03
CY
708*** There is a new charset implementation with many new charsets.
709See M-x list-character-sets. New charsets can be defined conveniently
710as tables of unicodes.
1abe3a1e 711
09e18d03
CY
712*** There are new language environments for Chinese-GBK,
713Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu,
714Sinhala, and TaiViet.
16e82271 715
09e18d03
CY
716*** The minor modes unify-8859-on-encoding-mode and
717unify-8859-on-decoding-mode are obsolete.
16e82271 718
e94d0645
JL
719*** `ucs-insert' is bound to `C-x 8 RET' and in addition to hex numbers
720accepts numbers in hash notation (e.g. #o21430 for octal, or #10r8984 for
721decimal). It also accepts Unicode character names with completion.
16e82271 722
6d496c76
TZ
723*** The `cyrillic-translit' input method supports many new characters.
724Common typographical characters available from Unicode were added to
725`cyrillic-translit': punctuation marks, accented characters, fractions,
726and others.
727
09e18d03 728** Emacs now supports serial port access on GNU/Linux, Unix, and
81efacf9
CY
729Windows. The new command `serial-term' starts an interactive terminal
730on a serial port. The serial port can be configured at runtime with
731the mode-line mouse menu.
6c5d503f 732
09e18d03 733** Menu Bar changes
16e82271 734
09e18d03
CY
735*** In the Options menu, the "Set Default Font" item applies the
736selected font to the `default' face on all frames, not just the
737current frame. Furthermore, if Emacs is compiled with both GTK and
738Fontconfig support, the "Set Default Font" item uses the GTK font
739selection dialog instead of an Emacs pop-up menu.
16e82271 740
09e18d03
CY
741*** The font setting chosen by "Set Default Font" is saved if the
742"Save Options" item is used.
1b21ee06 743
b350bdf2
CY
744*** The Tools menu contains a new Encryption/Decryption submenu.
745This contains commands provided by EasyPG, the newly-included
746interface to GnuPG (see New Modes and Packages).
16e82271 747
81efacf9
CY
748*** In the Options menu, the "Truncate Long Lines in the Buffer" entry
749has been replaced with a submenu offering three different ways to
750handle long lines: truncation, continuation at the window edge, and
697f6b43 751the new word wrapping behavior (see Editing Changes, below).
16e82271 752
c1337511
DN
753*** Improvements to menus for major and minor modes
754More major and minor modes now have a mode specific menu, and existing
755mode menus have been improved to include more functionality.
756
09e18d03 757** Mode-line changes
16e82271 758
09e18d03
CY
759*** The mode-line displays a `@', instead of `-', if the
760default-directory for the current buffer is on a remote machine.
16e82271 761
09e18d03
CY
762*** The mode-line displays a mode menu when mouse-1 is clicked on a
763minor mode, in the same way as it already did for major modes.
16e82271 764
09e18d03
CY
765*** The `mode-line-emphasis' face is used to highlight certain
766mode-line information (e.g. waiting for a VC command to finish).
16e82271 767
c1337511 768*** The mode-line tooltips have been improved to provide more details.
16e82271 769
c1337511
DN
770*** The VC, line/colum number and minor mode indicators on the mode
771line are now interactive: mouse-1 can be used on them to pop up a menu.
772
b798e26a
GM
773** File deletion can make use of the Recycle Bin or system Trash folder.
774Set `delete-by-moving-to-trash' non-nil to use this. Deleted files
0956be4f 775and directories will then be sent to the Recycle Bin on Windows, and
b798e26a
GM
776to `trash-directory' on other systems.
777
09e18d03 778** Directory-local variables can now be defined.
fc0318c6
JL
779By default, Emacs looks in .dir-locals.el for directory-local
780variables. For more information, see `dir-locals-set-directory-class'
781and `dir-locals-set-class-variables'.
307f3501 782
b798e26a
GM
783** Emacs can now use `auth-source' for authentication.
784`smtpmail' and `url' (Tramp and Gnus also) use `auth-source' to obtain
785login names and passwords. The match, if found, is reported
786in *Messages* with the password blanked out.
787
788** `where-is-preferred-modifier' can specify your favorite modifier.
789
6dadd99f 790\f
0bfd685e 791* Startup Changes in Emacs 23.1
21f7b9d8 792
3063e326
JL
793** The option `inhibit-startup-screen' (with aliases to old names
794`inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit
795display of the initial message in the *scratch* buffer. If you don't
796want to display the initial message in the *scratch* buffer at startup,
797you can set the option `initial-scratch-message' to nil.
798
56e1896b
JL
799** New user option `initial-buffer-choice' specifies what to display
800after starting Emacs: startup screen, *scratch* buffer, visiting a
801file or directory.
802
aa5310e4
DK
803** New alias `argv' for `command-line-args-left'
804This is a convenience alias, so that one can write `(pop argv)'
805inside of --eval command line arguments in order to access
806following arguments.
f8fd7ed3
GM
807
808** The abbrev file is no longer read at startup in batch mode.
f36acfd9
EZ
809
810** Emacs now supports invocation by an X session manager.
811It can save a session and restore it later. See the documentation of
812the functions `emacs-session-save' and `emacs-session-restore'.
813(Actually, this feature was introduced with Emacs 22, but it was not
814documented.)
c44da964 815\f
0bfd685e 816* Incompatible Editing Changes in Emacs 23.1
b58cb59f 817
d1949cd5
JL
818** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&'
819on the regexp command prefix map.
820
117907d4
JL
821** In Dired-x, all command guesses for ! are now added to the default
822list accessible by M-n instead of pushing all guesses temporarily into
823the history list.
824
e94d0645
JL
825** In Isearch mode, a special case of typing `C-w' at the beginning of
826the minibuffer that toggles word search (i.e. using key sequences
827`C-s RET C-w' or `C-s M-e C-w') is obsolete. You can use the global key
828`M-s w' to start word search, or type `M-s w' in Isearch mode to
fd4c2a39
JL
829toggle word search. To start nonincremental word search you can now use
830`M-s w RET' and `M-s w C-r RET' instead of `C-s RET C-w' and `C-r RET C-w'.
e94d0645 831
45ad1cc5
JL
832** In Info, `Info-search' is unbound from `M-s' to allow using `M-s w'
833for word search as well as other search commands from the global prefix
834key `M-s'. `Info-search' is still bound to `s', and also incremental
835search commands `C-s', `C-M-s', `C-r', `C-M-r' are available for searching
836through multiple Info nodes, together with their nonincremental versions
837`C-s RET', `C-r RET', `C-M-s RET', `C-M-r RET', `M-s w RET'.
838
16e82271
CY
839** In Text mode, `center-line' and `center-paragraph' are rebound from
840`M-s' and `M-S' to global keys `M-o M-s' and `M-o M-S' on the global
841prefix map `M-o', which is intended for such formatting commands.
4e14951f 842
e405fa5f 843** The following input methods were removed in Emacs 22.2, but this was
9a930d75 844not advertised: danish-alt-postfix, esperanto-alt-postfix,
e405fa5f
RS
845finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix,
846norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix,
847and swedish-alt-postfix. Use the versions without "alt-", which are
848identical.
0b0914ae 849
406c0f12 850\f
0bfd685e 851* Editing Changes in Emacs 23.1
406c0f12 852
0c8b58e9
CY
853** The C-n and C-p line-motion commands now move by screen lines,
854taking continued lines and variable-width characters into account.
855Setting `line-move-visual' to nil reverts this to the previous
16e82271
CY
856behavior (i.e., motion by logical lines based on buffer contents
857alone).
0c8b58e9 858
09e18d03 859** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now
16e82271 860invokes `suspend-frame'. These changes are for compatibility with the
09e18d03 861new multi-tty support (see `Improved X Window System support' above).
3ae459e5 862
09e18d03 863** Mark changes
16e82271 864
3ae459e5 865*** Transient Mark mode is now on by default.
16e82271 866
3ae459e5 867*** mark-even-if-inactive now defaults to t
16e82271 868
b350bdf2
CY
869*** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without
870activating it.
16e82271 871
3ae459e5
CY
872*** When Transient Mark mode is on, M-q now fills the region if the
873region is active. Otherwise, it fills the current paragraph.
16e82271 874
3ae459e5
CY
875*** When Transient Mark mode is on, M-$ now checks spelling of the
876region if the region is active. Otherwise, it checks spelling of the
dc868f13 877word at point.
16e82271 878
3ae459e5
CY
879*** When Transient Mark mode is on, TAB now indents the region if the
880region is active.
16e82271
CY
881
882*** The variable `use-empty-active-region' controls whether an empty
883active region in Transient Mark mode should make commands operate on
884that empty region.
3ae459e5
CY
885
886** Temporarily active regions
16e82271 887
3ae459e5
CY
888*** The new variable shift-select-mode, non-nil by default, controls
889shift-selection. When Shift Select mode is on, shift-translated
890motion keys (e.g. S-left and S-down) activate and extend a temporary
891region, similar to mouse-selection.
16e82271 892
3ae459e5
CY
893*** Temporarily active regions, created using shift-selection or
894mouse-selection, are not necessarily deactivated in the next command.
895They are only deactivated after point motion commands that are not
896shift-translated, or after commands that would ordinarily deactivate
897the mark in Transient Mark mode (e.g., any command that modifies the
898buffer).
899
3307af6c 900** Minibuffer and completion changes
16e82271 901
206faa92
CY
902*** Emacs may ask for confirmation before opening a non-existent file
903or buffer. By default, Emacs requests confirmation if you type RET
904immediately after TAB, and the resulting input is not an existing file
905or buffer; this usually happens when the minibuffer input did not
906complete far enough and you entered RET by mistake. In that case,
907Emacs puts the message "[Confirm]" in the minibuffer; type RET again
908to create the file or buffer.
909
910The new variable confirm-nonexistent-file-or-buffer determines whether
911Emacs asks for confirmation. The default value is `after-completion'.
912If you change it to t, Emacs always asks for confirmation; if you
913change it to nil, Emacs never asks for confirmation.
16e82271 914
aea75a87
CY
915*** The rules for performing completion have been changed.
916When generating completion alternatives, Emacs now takes the
917minibuffer text after point, if any, into account: this text is
918treated as a substring of the remaining part of the completion
919alternative (i.e., the part not matched by the minibuffer text before
920point). If no completion alternatives are found this way, Emacs
921attempts to perform partial-completion. If still no completion
922alternatives are found, we fall back on the Emacs 22 rules for
923performing completion.
924
925The new variable `completion-styles' can be customized to choose your
926favorite completion style.
16e82271 927
d47a29c1
JL
928*** When M-n in the minibuffer reaches the end of the list of defaults,
929it adds the completion list to the end, so next M-n continues putting
930completion items to the minibuffer. The same principle applies to
931incremental search commands as well: C-s or C-M-s starts searching
932the default values and after the end of defaults they continue
933searching minibuffer completion items.
16e82271 934
09e18d03 935*** Minibuffer input of shell commands now comes with completion.
16e82271 936
09e18d03
CY
937*** In the `C-x d' (Dired) prompt, typing M-n gives the visited file
938name of the current buffer.
dc2f6c05 939
09e18d03
CY
940*** In the M-! (shell-command) prompt, M-n provides some default commands.
941These are guessed using the file extension of the current file, based
942on the file-handlers specified in the operating system's `mailcap'
943file. The ! command in Dired (dired-do-shell-command) works
944similarly, using the file displayed on the current line.
117907d4
JL
945
946*** A list of regexp default values is available via M-n for `occur',
947`keep-lines', `flush-lines' and `how-many'. This list includes the active
4f75e082
JL
948region in transient-mark-mode, the word under the cursor, the last Isearch
949regexp, the last Isearch string and the last replacement regexp.
16e82271 950
3353f870
CY
951*** When enable-recursive-minibuffers is non-nil, operations which use
952switch-to-buffer (such as C-x b and C-x C-f) do not fail any more when
953used in a minibuffer or a dedicated window. Instead, they fallback on
954using pop-to-buffer, which will use some other window. This change
955has no effect when enable-recursive-minibuffers is nil (the default).
16e82271 956
4f75e082
JL
957*** Isearch started in the minibuffer searches in the minibuffer history.
958Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer
959history elements, and forward Isearch commands (C-s, C-M-s) search in
297b8ccd
JL
960next history elements. When the reverse search reaches the first history
961element, it wraps to the last history element, and the forward search
962wraps to the first history element. When the search is terminated, the
963history element containing the search string becomes the current.
16e82271 964
6c897494
CY
965*** The variable read-file-name-completion-ignore-case overrides
966completion-ignore-case for file name completion.
16e82271 967
6c897494
CY
968*** The variable read-buffer-completion-ignore-case overrides
969completion-ignore-case for buffer name completion.
16e82271 970
3307af6c
CY
971*** The new command `minibuffer-force-complete' chooses one of the
972possible completions, rather than stopping at the common prefix.
16e82271 973
3307af6c
CY
974*** If `completion-auto-help' is `lazy', Emacs shows the completions
975buffer only on the second attempt to complete. This was already
976supported in `partial-completion-mode'.
6c897494 977
505d8756 978** Face changes
16e82271 979
b350bdf2
CY
980*** S-down-mouse-1 now pops up a menu for changing the font and text
981size of the default face in the current buffer. The face is changed
133c4dc5 982via face remapping (see Lisp changes, below).
16e82271 983
5f9e21a9
CY
984*** New commands to change the default face size in the current buffer.
985To increase it, type `C-x C-+' or `C-x C-='. To decrease it, type
986`C-x C--'. To restore the default (global) face size, type `C-x C-0'.
d59f7c45
CY
987These work via Text Scale mode, a new minor mode.
988
989The final key in the above commands may be repeated without the
990leading `C-x', e.g. `C-x C-= C-= C-=' increases the face height by
991three steps. Each step scales the height of the default face by the
992value of the variable `text-scale-mode-step'.
993
60959d23
CY
994*** The commands buffer-face-mode and buffer-face-set can be used to
995remap the default face in the current buffer. See "Buffer Face mode",
996under New Modes and Packages.
f20186fd 997
09e18d03 998** Primary selection changes
16e82271 999
b350bdf2
CY
1000*** You can disable kill ring commands from accessing the primary
1001selection by setting `x-select-enable-primary' to nil.
2e282009 1002
697f6b43
CY
1003** Continuation lines can now be wrapped at word boundaries
1004(word-wrapping). This is controlled by the new per-buffer variable
1005`word-wrap'. Word wrapping does not take place if continuation lines
1006are not shown, e.g. if truncate-lines is non-nil. The most convenient
1007way to enable word-wrapping is using the new minor mode Visual Line
1008mode; in addition to setting `word-wrap' to t, this rebinds some
1009editing commands to work on screen lines rather than text lines. See
1010New Modes and Packages, below.
85b1de32 1011
463c6766 1012** Window management changes
16e82271 1013
463c6766
CY
1014*** truncate-partial-width-windows now accepts integer values, which
1015specify a minimum window width for partial-width windows, below which
7d09b7a6 1016lines are truncated. The default has been changed to 50.
463c6766
CY
1017
1018*** The new command balance-windows-area balances windows both
1019vertically and horizontally.
16e82271 1020
8f5cee6a
MR
1021*** pop-to-buffer now always sets input focus when the popped-to window
1022is on a different frame.
1023
09e18d03 1024** Miscellaneous changes:
16e82271 1025
09e18d03
CY
1026*** C-l is bound to the new command recenter-top-bottom, rather than recenter.
1027This moves the current line to window center, top and bottom on
cdc0338e 1028successive invocations.
16e82271 1029
09e18d03 1030*** scroll-preserve-screen-position also preserves the column position.
16e82271 1031
09e18d03
CY
1032*** If `yank-pop-change-selection' is t, rotating the kill ring also
1033updates the selection or clipboard to the current yank, just as M-w
1034would do so with the text it copies to the kill ring.
16e82271 1035
09e18d03
CY
1036*** C-M-% now shows replacement as it would look in the buffer, with
1037`\N' and `\&' substituted according to the match. Old behavior can be
1038restored by customizing `query-replace-show-replacement'.
1039
1040*** The command shell prompts for the default directory, when it is
1041called with a prefix and the default directory is a remote file name.
1042This is because some file name handlers (like ange-ftp) are not able to
1043run processes remotely.
16e82271 1044
09e18d03
CY
1045*** The new command kill-matching-buffers kills buffers whose name
1046matches a regexp.
16e82271 1047
ae98e41f
CY
1048*** The value of comment-style now defaults to `indent'.
1049Thefore, comment-start markers are inserted at the current indentation
1050of the region to comment, rather than the leftmost column.
16e82271 1051
b350bdf2
CY
1052*** The new commands `pp-macroexpand-expression' and
1053`pp-macroexpand-last-sexp' pretty-print macro expansions.
16e82271 1054
018a960d
EZ
1055*** The new command `set-file-modes' allows to set file's mode bits.
1056The mode bits can be specified in symbolic notation, like with GNU
e6979067
DN
1057Coreutils, in addition to an octal number. `chmod' is a new
1058convenience alias for this function.
d334fa1e 1059
d2c52e26
EZ
1060*** `next-error-recenter' specifies how next-error should recenter the
1061visited source file. Its value can be a number (for example, 0 for
1062top line, -1 for bottom line), or nil for no recentering.
16e82271 1063
c594dbfa
CY
1064*** When typing in a password in the echo area, C-y yanks the current
1065kill into the password.
16e82271 1066
e02ec85e
EZ
1067*** Tooltip frame parameters `font' and `color' in `tooltip-frame-parameters'
1068are ignored. Customize the `tooltip' face instead.
16e82271 1069
53374291 1070*** `mkdir' is a new convenience alias for `make-directory'.
09e18d03
CY
1071\f
1072* New Modes and Packages in Emacs 23.1
e11910e2
GM
1073
1074** Auto Composition Mode is a minor mode that composes characters
1075automatically when they are displayed. It is globally on by default.
1076It uses `auto-composition-function' (default `auto-compose-chars').
1077
09e18d03 1078** Bubbles, a new game, is similar to SameGame.
60959d23
CY
1079
1080** Buffer Face mode is a minor mode for remapping the default face in
1081the current buffer. The variable `buffer-face-mode-face' specifies
1082the face to remap to. The command `buffer-face-set' prompts for a
1083face name, sets `buffer-face-mode-face' to it, and enables
1084buffer-face-mode. See "Face changes", under Editing Changes, for a
1085description of face remapping.
1086
18e4b9bd
JL
1087** butterfly flips the desired bit on the drive platter.
1088See http://xkcd.com/378/
f6b26818 1089
7ef39c6e
GM
1090** bug-reference.el provides clickable links to bug reports.
1091
09e18d03
CY
1092** dbus.el provides D-Bus language bindings.
1093D-Bus is an inter-process communication mechanism for applications
b350bdf2 1094residing on the same host. See the manual for details.
09e18d03 1095
85c78c0f 1096** DocView mode allows viewing of PDF, PostScript and DVI documents.
b350bdf2
CY
1097One can also search for a regular expression in the document. For
1098details, see the commentary in doc-view.el.
09e18d03 1099
4545a339
CY
1100PDF and DVI files are now opened in Doc View mode by default.
1101
1102In Postcript mode, C-c C-c launches Doc View minor mode for viewing
1103the postscript file.
5ed3edfa 1104
b350bdf2
CY
1105** EasyPG provides an interface to the GNU Privacy Guard (GnuPG).
1106It includes a GnuPG keyring browser, cryptographic operations on
1107regions and files, and automatic encryption of *.gpg files. For
1108details, see the EasyPG Assistant User's Manual.
09e18d03
CY
1109
1110** json.el is a library for parsing and generating JSON
1111(JavaScript Object Notation), a lightweight data-interchange format.
1112
1113** linum.el is a new minor mode to display line numbers for the
1114current buffer.
1115
4b4eb083
CY
1116** mairix.el is an interface to mairix, a free tool for indexing and
1117searching locally stored mail. It allows you to query mairix and
1118display the search results with Rmail, Gnus and VM. Note that there
1119is an existing Gnus back end, nnmairix.el, which should be used with
1120Maildir/MH setups.
1121
e94d0645 1122** minibuffer-depth-indicate-mode shows the minibuffer depth in the prompt.
09e18d03
CY
1123
1124** nXML Mode
1125This is a new mode for editing XML documents. It allows a schema to
1126be associated with the XML document being edited, using Relax NG as
1127the schema language. The schema is used to provide two key features:
1128
1129*** Continuous validation. nXML validates as you type, highlighting
1130any invalid parts of your document.
1131
1132*** Completion. nXML can assist you in entering an element name,
1133attribute name or data value by using information about what is
1134allowed by the schema in that context.
1135
efdd80c6
DN
1136** proced.el provides a Dired-like interface for operating on
1137processes. Proced makes an Emacs buffer containing a listing of the
1138current processes. You can use the normal Emacs commands to move
1139around in this buffer, and special Proced commands to operate on the
1140processes listed. It is currently only functional on GNU/Linux,
1141MS-Windows and Solaris.
09e18d03
CY
1142
1143** Remember Mode is a mode for jotting down things to remember.
1144Notes can be saved to a Diary file. For details, see the Remember
1145Manual.
1146
b1c3a827 1147** RST mode is a major mode for editing reStructuredText files.
c2d0b538 1148
17a937cc
CY
1149** Ruby mode is a major mode for Ruby files.
1150
12f165e9
CY
1151** Visual Line mode provides support for editing by visual lines.
1152It turns on word-wrapping in the current buffer, and rebinds C-a, C-e,
1153and C-k to commands that operate by visual lines instead of logical
1154lines. This is a more reliable replacement for longlines-mode.
697f6b43
CY
1155This can also be turned on using the menu bar, via
1156Options -> Line Wrapping in this Buffer -> Word Wrap
12f165e9 1157
0c68a24b
MA
1158** xesam.el is an implementation of Xesam, an interface to (desktop)
1159search engines like Beagle, Strigi, and Tracker. The Xesam API
1160requires D-Bus for communication.
1161
09e18d03
CY
1162** zeroconf.el offers service discovery and service publishing
1163interfaces according to the zeroconf specification. It communicates
1164with Avahi, a zeroconf implementation, via D-Bus messages on systems
1165which have installed this software.
1166
d332a7a4
GM
1167** There is a new `whitespace' package.
1168(The pre-existing one has been renamed to `old-whitespace'.)
1169Now, besides reporting bogus blanks, the whitespace package has a
1170minor mode and a global minor mode to visualize blanks (TAB, (HARD)
1171SPACE and NEWLINE). The visualization is made via faces and/or display
1172table. It can also indicate lines that extend beyond a given column,
1173trailing blanks, and empty lines at the start or end of a buffer.
1174See `whitespace-style' for more details. The `whitespace-action' option
1175specifies what to do when a buffer is visited, killed, or written.
4e5a8be9 1176
09e18d03
CY
1177\f
1178* Changes in Specialized Modes and Packages in Emacs 23.1
1179
1180** Abbrev has been rewritten in Elisp and extended with more flexibility.
16e82271 1181
e047f448 1182*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put,
da14b7ca 1183abbrev-table-p, abbrev-insert, abbrev-table-menu.
16e82271 1184
e047f448 1185*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'.
16e82271 1186
e047f448 1187*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take
da14b7ca 1188extra arguments for arbitrary properties.
16e82271 1189
e047f448 1190*** New variable `abbrev-minor-mode-table-alist'.
16e82271 1191
e047f448 1192*** `local-abbrev-table' can hold a list of abbrev-tables.
16e82271 1193
e047f448 1194*** Abbrevs have now the following special properties:
da14b7ca 1195`:count', `:system', `:enable-function', `:case-fixed'.
16e82271 1196
e047f448 1197*** Abbrev-tables have now the following special properties:
da14b7ca
JB
1198`:parents', `:case-fixed', `:enable-function', `:regexp',
1199`abbrev-table-modiff'.
e047f448 1200
09e18d03 1201** Apropos
16e82271 1202
09e18d03 1203*** `apropos-library' describes the elements defined in a given library.
16e82271 1204
09e18d03 1205*** Set `apropos-compact-layout' is you want a more compact (but wider) layout.
0253fffa 1206
09e18d03 1207** Archive Mode has basic support to browse Rar archives.
dfa2fb2a
CY
1208Note, however, that the free version of the unrar command only handles
1209versions 1 and 2 of the Rar format.
0253fffa 1210
09e18d03 1211** BibTeX mode
bafbec39 1212
09e18d03 1213*** New command `bibtex-initialize' (re)initializes BibTeX buffers.
bafbec39 1214
09e18d03
CY
1215*** New `bibtex-entry-format' options `whitespace', `braces', and
1216`string', disabled by default.
12bbb989 1217
09e18d03
CY
1218*** New variable `bibtex-cite-matcher-alist' contains rules to
1219identify cited keys in BibTeX entries, used by `bibtex-find-crossref'.
9097e8af 1220
09e18d03 1221*** Command `bibtex-url' allows multiple URLs per entry.
4c24d241 1222
3aa8040c
KF
1223** Bookmarks
1224
1225*** bookmark.el saves bookmarks in a pre-Emacs-23-incompatible file format
1226bookmark.el can read a .emacs.bmk file saved by an older Emacs, but an
1227older Emacs cannot read one saved by Emacs 23.
1228
09e18d03 1229** Calendar and diary
320bc739 1230
09e18d03
CY
1231*** There is a new date style, `iso', essentially year/month/day.
1232The variable `european-calendar-style' is obsolete - use `calendar-date-style'.
1233Similarly, the commands `american-calendar' and `european-calendar'
1234should be replaced by `calendar-set-date-style'.
c3bb6fdb 1235
09e18d03
CY
1236*** The calendar namespace has been rationalized.
1237All functions and variables now begin with a `calendar-', `diary-', or
1238`holiday-' prefix. The various calendar systems have secondary
1239prefixes, eg `calendar-french-'. The old names you are likely to use
1240directly still exist, for the time being, as aliases, but please start
1241using the new names.
1242
e889393b
GM
1243*** The whitespace in the calendar layout can be customized.
1244See the variables:
1245calendar-left-margin, calendar-intermonth-spacing, calendar-column-width,
1246calendar-day-header-width, and calendar-day-digit-width.
1247
1248*** Text (e.g. ISO weeks) can be displayed between the calendar months.
1249See the variables calendar-intermonth-header and calendar-intermonth-text.
1250
09e18d03
CY
1251*** The function `holiday-chinese' computes holidays on the Chinese calendar.
1252It has been used to add items to the list `holiday-oriental-holidays'.
1253
1254*** `diary-remind' accepts a negative number -DAYS as a shorthand for
1255the list (1 2 ... DAYS).
24cdde13 1256
a6b85944
CY
1257** Change Log mode
1258
1259*** The new command C-c C-f (change-log-find-file) finds the file
1260associated with the current log entry.
1261
1262*** The new command C-c C-c (change-log-goto-source) goes to the
1263source code associated with a log entry.
1264
76be286d 1265** Compile and grep modes
16e82271 1266
76be286d
DN
1267*** The mode-line entry for the *compilation* and *grep* buffer is color coded.
1268It has different colors for to show that: (a) the command is still
1269running, (b) successful completion, (c) error.
16e82271 1270
76be286d 1271*** compilation-auto-jump-to-first-error tells `compile' to jump to
813fb3fe 1272the first error encountered during compilations.
16e82271 1273
194894cb
CY
1274*** compilation-scroll-output accepts a new value, `first-error', which
1275says to stop auto scrolling at the first error that occurs.
16e82271 1276
0b22a5e1 1277*** The `cc' alias for C++ files in `grep-file-aliases' has been
2e538385 1278improved. `hh' can be used to match C++ header files and `cchh' both
0b22a5e1
DN
1279C++ sources and headers.
1280
d332a7a4
GM
1281** Copyright
1282
1283*** You can specify your copyright holders' names.
1284Only copyright lines with holders matching `copyright-names-regexp' are
1285considered for update.
1286
1287*** Copyrights can be at the end of the buffer.
1288This is controlled by `copyright-at-end-flag' (used by, e.g., change-log-mode).
1289
09e18d03 1290** Custom
16e82271 1291
09e18d03 1292*** defcustom accepts new keyword arguments, `:safe' and `:risky', which
b68769f2
GM
1293set a variable's `safe-local-variable' and `risky-local-variable' property.
1294
09e18d03 1295** Diff mode
16e82271 1296
09e18d03
CY
1297*** diff-refine-hunk highlights word-level details of changes in a diff hunk.
1298It's used automatically as you move through hunks, see
7381be9d 1299diff-auto-refine-mode. It is bound to `C-c C-b'.
16e82271 1300
09e18d03
CY
1301*** diff-add-change-log-entries-other-window iterates through the diff
1302buffer and tries to create ChangeLog entries for each change.
1303It is bound to `C-x 4 A'.
16e82271 1304
ac7020b3
DN
1305*** Turning on `whitespace-mode' in a diff buffer will show trailing
1306whitespace problems in the modified lines.
d332a7a4 1307
71554a21 1308** Dired
16e82271 1309
71554a21
JL
1310*** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode,
1311and C-x C-q in wdired-mode exits it with asking a question about
1312saving changes.
16e82271 1313
d1949cd5
JL
1314*** `&' runs the command `dired-do-async-shell-command' that executes
1315the command asynchronously without the need to manually add ampersand
1316to the end of the command. Its output appears in the buffer `*Async Shell
1317Command*'.
16e82271 1318
6d9f0d00 1319*** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names.
2cb5f8ed
JL
1320When a new user option `dired-isearch-filenames' is t, then even ordinary
1321Isearch started with `C-s' and `C-M-s' matches only at file names in the
1322Dired buffer. When `dired-isearch-filenames' is `dwim' then activation of
1323file name Isearch depends on the position of point - if point is on a file
1324name initially, then Isearch matches only file names, otherwise it matches
1325everywhere in the Dired buffer. You can toggle file names matching on or
1326off by typing `M-s f' in Isearch mode.
16e82271 1327
cc3236e1
JL
1328*** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files.
1329They visit the first marked file in the sequence and display the usual Isearch
1330prompt for a string or a regexp where all Isearch commands are available.
16e82271 1331
71554a21
JL
1332*** `Q' in Dired provides two new keys for multi-file replacement.
1333The upper case key `Y' replaces all remaining matches in all remaining files
1334with no more questions. The upper case key `N' stops doing replacements
1335in the current file and skips to the next file. These multi-file keys
1336are available for all commands that use `tags-query-replace'
1337including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp',
1338`reftex-query-replace-document'.
1339
09e18d03 1340** Fortran
16e82271 1341
77a00355
GM
1342*** The line length of fixed-form Fortran is not fixed at 72 any more.
1343Customize the variable `fortran-line-length' to change it.
117d3cc5 1344
09e18d03
CY
1345*** In Fortran mode, M-; is now bound to the standard comment-dwim,
1346rather than fortran-indent-comment.
76be286d 1347
09e18d03 1348*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax.
b592c357 1349
09e18d03 1350** Gnus
6653c6b7 1351
09e18d03
CY
1352*** The Gnus package has been updated
1353There are many news features, bug fixes and improvements; see the file
1354GNUS-NEWS or the node "No Gnus" in the Gnus manual for details.
db86064f 1355
09e18d03
CY
1356*** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for
1357saving articles drafts and ~/.newsrc.eld. These file may not be read
1358correctly in Emacs 22 and below. If you want to Gnus across different Emacs
1359versions, you may set `mm-auto-save-coding-system' to `emacs-mule'.
15947a44 1360
540f3092 1361*** Passwords are consistently loaded through `auth-source'
6d496c76
TZ
1362Gnus can use `auth-source' for POP and IMAP passwords. Also see that
1363`smtpmail' and `url' support `auth-source' for SMTP and HTTP/HTTPS/RSS
1364authentication respectively.
1365
09e18d03 1366** Help mode
16e82271 1367
09e18d03
CY
1368*** New macro `with-help-window' should set up help windows better
1369than `with-output-to-temp-buffer' with `print-help-return-message'.
8f5cee6a 1370
09e18d03
CY
1371*** New option `help-window-select' permits to customize whether help
1372window shall be automatically selected when invoking help.
8f5cee6a 1373
540f3092
GM
1374*** New variable `help-window-point-marker' permits one to specify a new
1375position for point in help window (for example in `view-lossage').
15947a44 1376
09e18d03 1377** Isearch
16e82271 1378
4f75e082
JL
1379*** New command `isearch-forward-word' bound globally to `M-s w' starts
1380incremental word search. New command `isearch-toggle-word' bound to the
1381same key `M-s w' in Isearch mode toggles word searching on or off
1382while Isearch is active.
1383
1384*** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch
1385mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current
1386search string as its regexp argument. The same key `M-s h r' and
1387other keys on the `M-s h' prefix are bound globally to the command
1388`highlight-regexp' and other hi-lock commands.
16e82271 1389
4f75e082
JL
1390*** New command `isearch-occur' bound to `M-s o' in Isearch mode
1391runs `occur' with the current search string. The same key `M-s o'
1392is bound globally to the command `occur'.
16e82271 1393
4f75e082
JL
1394*** Isearch can now search through multiple ChangeLog files.
1395When running Isearch in a ChangeLog file, if the search fails,
09e18d03 1396then another C-s tries searching the previous ChangeLog,
540f3092 1397if there is one (e.g. going from ChangeLog to ChangeLog.12).
babc4609 1398This is enabled if multi-isearch-search is non-nil.
93a142e1 1399
babc4609 1400*** Two new commands to start Isearch on a list of marked buffers
cc3236e1
JL
1401for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and
1402`M-s a M-C-s'.
16e82271 1403
3c241617
CY
1404*** The part of an Isearch that failed to match is highlighted in
1405`isearch-fail' face.
5d503af9 1406
4f75e082
JL
1407*** `C-h C-h' in Isearch mode displays isearch-specific Help screen,
1408`C-h b' displays all Isearch key bindings, `C-h k' displays the full
1409documentation of the given Isearch key sequence, `C-h m' displays
1410documentation of Isearch mode. All the rest Help commands exit Isearch mode
09e18d03 1411and execute their global definitions.
16e82271 1412
09e18d03
CY
1413*** When started in the minibuffer, Isearch searches in the minibuffer
1414history. See `Minibuffer changes', above.
2793c9bb 1415
66863844 1416** MH-E
1e9b0fb2 1417
d1d87851 1418*** Upgraded to MH-E version 8.2. See MH-E-NEWS for details.
66863844 1419
09e18d03
CY
1420** Python
1421*** The file etc/emacs.py now supports both Python 2 and 3, meaning
1422that either version can be used as inferior Python by python.el.
c5578d5f 1423
09e18d03
CY
1424*** Python mode now has `pdbtrack' functionality. When using pdb to
1425debug a Python program, pdbtrack notices the pdb prompt and displays
1426the source file and line that the program is stopped at, much the same
1427way as gud-mode does for debugging C programs with gdb.
2793c9bb 1428
1e9b0fb2
MA
1429** Recentf
1430
1431*** The default value of `recentf-keep' prevents from checking of
1432remote files, if there is no established connection to the
1433corresponding remote host.
1434
2d51ab64
GM
1435** Rmail
1436
b55b134f 1437*** Rmail no longer converts the messages to Babyl format.
33b43245
GM
1438Instead, it uses UNIX mbox format, both on disk and in Rmail buffers,
1439and does conversion and decoding when a message is displayed.
b55b134f 1440
33b43245 1441The first time you visit an Rmail file in Babyl format, Rmail
b55b134f
EZ
1442automatically converts it to mbox format. This is a one-time
1443conversion, but it can take a few minutes, depending on how fast is
1444your machine and on the size of the file. You should find the rest of
1445Rmail usage unaltered.
1446
80d634b8
RS
1447However, M-x set-rmail-inbox-list now lasts only for one session
1448because there is no way to save the list of inbox files in an
1449mbox-format file.
1450
329a643c
GM
1451Also, whereas with Babyl format M-x find-file would switch to Rmail
1452mode, with mbox format this is no longer the case (there being no way
bcf3f1f5
GM
1453to add an "-*- rmail-*-" cookie to an mbox file). Use C-u M-x rmail
1454instead.
329a643c 1455
33b43245
GM
1456If you have written any extensions to Rmail, they are likely to need
1457updating. Conceptually, the Rmail buffer that you see is no longer
1458just a narrowed portion of the whole. So you cannot access the whole
1459of a message (or message collection) by a simple save-restriction and
1460widen. Instead, there are two buffers: the rmail-buffer, and the
2e538385 1461rmail-view-buffer. The former is the buffer that you see, the latter
33b43245
GM
1462is invisible. Most of the time, the invisible `view' buffer contains
1463the full contents of the Rmail file, and the Rmail buffer contains a
1464decoded copy of the current message (with only a subset of the
2e538385 1465headers). In this state, Rmail is said to be `swapped'.
2d51ab64 1466
33b43245
GM
1467You may find the following functions useful:
1468
1469`rmail-get-header' and `rmail-set-header' get or set the value of a
1470message header, whether or not it is currently visible.
1471
1472`rmail-apply-in-message' is a general purpose function that calls a
1473function (with arguments) which you specify on the full text of a given
1474message. To further narrow to just the headers, search forward for "\n\n".
1475
33b43245 1476*** The new command `rmail-mime' displays MIME messages.
2e538385 1477It is bound to `v' in Rmail buffers and summaries. It displays plain
33b43245
GM
1478text and multipart messages in a temporary buffer, and offers buttons
1479to save attachments.
1480
763e01c4
EZ
1481*** The command `rmail-redecode-body' no longer accepts the optional arg RAW.
1482Since Rmail now holds messages in their original undecoded form in a
1483separate buffer, `rmail-redecode-body' no longer encodes the original
1484message, and therefore there should be no need to avoid encoding it.
1485
80d634b8
RS
1486*** The o command is now `rmail-output'. It is an all-purpose command
1487for copying messages from Rmail and appending them to files. It
1488handles Babyl-format files as well as mbox-format files, and it
1489handles both kinds properly when they are visited in Emacs. It always
1490copies the full headers of the message.
1491
80d634b8
RS
1492*** The C-o command is now `rmail-output-as-seen'. It uses
1493the message as displayed, appending it to an mbox file.
1494
2e538385
GM
1495*** The modified status of the Rmail buffer is reported in the mode-line.
1496Previously, this information was hidden.
1497
9721264a 1498** TeX modes
16e82271 1499
9721264a
MR
1500*** New option latex-indent-within-escaped-parens
1501permits to customize indentation of LaTeX environments delimited
1502by escaped parens.
1503
09e18d03 1504** T-mouse Mode
16e82271 1505
09e18d03
CY
1506*** If the gpm mouse server is running and t-mouse-mode is enabled,
1507Emacs uses a Unix socket in a GNU/Linux console to talk to server,
1508rather than faking events using the client program mev. This C level
1509approach provides mouse highlighting and help echoing in the
1510minibuffer.
2793c9bb 1511
cc213f24
MA
1512** Tramp
1513
1514*** New connection methods.
1515The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have
1516been introduced. There are also new so-called gateway methods
1517"tunnel" and "socks".
1518
cc2fc5a2
MA
1519*** IPv6 addresses.
1520IPv6 addresses are supported now as host names. They must be embedded
1521in square brackets, like in "/ssh:[::1]:".
1522
cc213f24 1523*** Multihop syntax has been removed.
540f3092 1524The pseudo-method "multi" has been removed. Instead, multi hops
cc213f24
MA
1525can be specified by the new variable `tramp-default-proxies-alist'.
1526
1527*** More default settings.
1528Default values can be set via the variables `tramp-default-user',
1529`tramp-default-user-alist' and `tramp-default-host'.
1530
1531*** Connection information is cached.
1532In order to reduce connection setup, information about used
540f3092 1533connections is kept persistently in a file. The name of this file is
cc213f24
MA
1534defined in the variable `tramp-persistency-file-name'.
1535
1536*** Control of remote processes.
1537Running processes on a remote host can be controlled by settings in
1538`tramp-remote-path' and `tramp-remote-process-environment'.
1539
1540*** Success of remote copy is checked.
1541When the variable `file-precious-flag' is set, the success of a remote
1542file copy is checked via the file's checksum.
1543
7cba69f2
MA
1544*** Passwords can be read from an authentification file.
1545Tramp uses the package `auth-source' to read passwords from a file, if
1546necessary.
1547
289aee1c 1548** VC and related modes
16e82271 1549
09e18d03
CY
1550*** VC now supports applying VC operations to a set of files at a time.
1551This enables VC to work much more effectively with changeset-oriented
1552version-control systems such as Subversion, GNU Arch, Mercurial, Git
1553and Bzr. VC will now pass a multiple-file commit to these systems as
1554a single changeset.
16e82271 1555
09e18d03 1556*** vc-dir is a new command that displays file names and their VC
289aee1c
DN
1557status. It allows to apply various VC operations to a file, a
1558directory or a set of files/directories.
16e82271 1559
614677a0
GM
1560*** VC switches are no longer appended, rather the first non-nil value is used.
1561(This was for the most part true in Emacs 22, but was not advertised).
1562This is because there is an increasing variety of VC systems, and they
1563do not all accept the same "common" options. For example, a CVS diff
1564command used to append the values of `vc-cvs-diff-switches',
1565`vc-diff-switches', and `diff-switches'. Now the first non-nil value
1566from that sequence is used. The special value `t' means "no switches".
16e82271 1567
09e18d03 1568*** Clicking on the VC mode-line entry now pops the VC menu.
16e82271 1569
09e18d03 1570*** The VC mode-line entry now has a tooltip that explains the VC file status.
2b69181c
DN
1571
1572*** In VC Annotate mode, the key bindings have changed to use lower
1573case keys instead of the upper case keys used in the past.
16e82271 1574
09e18d03
CY
1575*** In VC Annotate mode, for VC systems that support changesets, you can
1576see the diff for the whole changeset (not only for the current file)
ee0f0556
CY
1577by typing the D key. Using the "Show changeset diff of revision at
1578line" menu entry does the same thing.
16e82271 1579
e86fa02b 1580*** In VC Annotate mode, you can type v to toggle the annotation visibility.
16e82271 1581
09e18d03
CY
1582*** In VC Annotate mode, you can type f to show the file revision on
1583the current line.
16e82271 1584
09e18d03
CY
1585*** Asynchronous VC commands display [Waiting...] in the mode-line
1586of the corresponding buffer as long as the asynchronous process is
1587active.
16e82271 1588
09e18d03
CY
1589*** Log entries can be modified using the key "e" in log-view.
1590For now only CVS, RCS, SCCS and SVN support this functionality.
1591This is done by the `modify-change-comment' backend function.
16e82271 1592
09e18d03
CY
1593*** In log-view-mode, for VC systems that support changesets, you can
1594see the diff for the whole changeset (not only for the current file)
1595by typing the D key or using the "Changeset Diff" menu entry.
16e82271 1596
289aee1c
DN
1597*** In Log Edit mode, C-c C-d now shows the diff for the files involved.
1598
1599*** vc-git supports the "git grep" command.
16e82271 1600
540f3092 1601*** VC Support for Meta-CVS has been removed for lack of a maintainer able
09e18d03 1602to update it to the new VC.
cf944fa4 1603
d15f7b68
GM
1604** Miscellaneous
1605
1606*** comint-mode uses `start-file-process' now (see Lisp Changes).
cc213f24
MA
1607If `default-directory' is a remote file name, subprocesses are started
1608on the corresponding remote system.
16e82271 1609
09e18d03
CY
1610*** Eldoc highlights the function argument under point
1611with the face `eldoc-highlight-function-argument'.
16e82271 1612
09e18d03 1613*** In Etags, the --members option is now the default.
fffa137c 1614Use --no-members if you want the old default behavior of not tagging
09e18d03 1615struct members in C, members variables in C++ and variables in PHP.
16e82271 1616
09e18d03
CY
1617*** The `gdb' command only works with the graphical interface now.
1618Use `gud-gdb' if you want the (old) text command mode.
1619
1620*** goto-address.el provides two new minor modes, goto-address-mode and
1621goto-address-prog-mode, which buttonize URLS and email addresses.
1622
1623*** The new command `eshell/info' runs info in an eshell buffer.
3cf86f00 1624
4d1e89e3
GM
1625*** The new variable `ffap-rfc-directories' specifies a list of local
1626directories in which `ffap-rfc' will first search for RFCs.
16e82271 1627
09e18d03
CY
1628*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
1629See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
1630
1631*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'.
1632
1633*** Info displays breadcrumbs in the header of the page.
1634See Info-breadcrumbs-depth to control it.
1635
d2c98acc 1636*** net-utils has an `iwconfig' command, similar to the existing `ifconfig'.
b7bfcc8a 1637It is used to configure wireless interfaces.
d2c98acc 1638
09e18d03
CY
1639*** The pcmpl-unix package supports hostname completion for ssh and scp.
1640
1641*** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
1642
1643*** smerge-refine highlights word-level details of changes in conflict.
7381be9d
TTN
1644It's used automatically as you move through conflicts, see
1645smerge-auto-refine-mode.
09e18d03
CY
1646
1647*** talk.el has been extended for multiple tty support.
1648
1649*** A new command `display-time-world' has been added to the Time
1650package. It creates a buffer with an updating time display using
1651several time zones.
1652
1653*** The appearance of superscript and subscript in TeX is more customizable.
1654See the documentation of the variables: tex-fontify-script,
1655tex-font-script-display, tex-suscript-height-ratio, and
1656tex-suscript-height-minimum.
1657
1658*** view-remove-frame-by-deleting is now by default t
1659since users found iconification of view-mode frames distracting.
16e82271 1660
09e18d03
CY
1661*** WoMan tries to add locale-specific manual page directories to the
1662search path. This can be disabled by setting `woman-locale' to nil.
1663
0bfd685e
GM
1664\f
1665* Changes in Emacs 23.1 on non-free operating systems
8ab314f9 1666
203553fd
JPW
1667** Case is now considered significant in completion on MS-Windows.
1668The default value of `completion-ignore-case' is now nil on
1669MS-Windows, the same as it is for other operating systems. The
1670variable doesn't apply to reading a file name -- in that case Emacs
1671heeds `read-file-name-completion-ignore-case' instead.
1672
672f99b6
JR
1673** IPv6 is supported on MS-Windows.
1674Emacs now supports IPv6 on Windows XP and later, and earlier versions
2660a9da 1675of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was
672f99b6
JR
1676supported on other platforms, but not on Windows due to using the winsock
16771.1 header file, even though Emacs was linking to the winsock 2 library.
1678
6e344060
JR
1679** Busy cursor (hourglass) now displays on MS-Windows.
1680When Emacs is busy, an hourglass mouse cursor is displayed on Windows.
2660a9da
JR
1681In Emacs 22 only X supported the busy cursor.
1682
2660a9da
JR
1683** Battery status is available on MS-Windows
1684Emacs can now display the battery status in the mode-line when enabled with
1685display-battery-mode or from the Options menu. More verbose battery
1686information is also available with the command `battery'. In Emacs 22
1687battery status was supported only on GNU/Linux and Mac.
6e344060 1688
3280c5c5
JR
1689** More keys available on MS-Windows.
1690Keys normally associated with IMEs, and some exotic keys not normally found
1691on standard keyboards have been given names so they can be bound to functions
1692inside Emacs. If there are keys on your keyboard that have not been exposed
1693to Emacs in the past, try C-h k to see if they are available now.
1694
1695Emacs can now bind functions to the extra buttons for media player and
1696browser control present on some keyboards. These buttons are disabled
1697by default, since enabling them prevents their system-wide use when
1698Emacs has focus. To enable them, set the variable
0caa490b 1699w32-pass-multimedia-buttons to nil. See the doc string of that variable
3280c5c5 1700for the list of extra keys that are available.
2660a9da 1701
4a263588 1702** BDF fonts no longer supported on MS-Windows.
2e538385 1703The font backend was completely rewritten for this release. The focus
4a263588
JR
1704on Windows has been getting acceptable performance and full unicode
1705support, including complex script shaping for native Windows fonts. A
1706rewrite of the BDF font support has not happened due to lack of time
1707and developers. If demand still exists for such a backend even with
1708the improved language support for native Windows fonts, future
1709development in this direction will most likely be based on the
1710freetype library, giving access to a wider range of font formats.
1711
0bfd685e
GM
1712\f
1713* Incompatible Lisp Changes in Emacs 23.1
8ec65cd7 1714
fd9440c5 1715** Variables cannot be both buffer-local and frame-local any more.
a9b08254 1716
fc944cd4 1717** `functionp' returns nil for special forms.
65f81a0b 1718I.e., it only returns t for objects that can be passed to `funcall'.
fc944cd4 1719
d82c3d44
GM
1720** The behavior of map-char-table has changed. It may call the
1721specified function with a cons (FROM . TO) as a key if characters in
1722that range have the same value.
1723
b350bdf2 1724** Process changes
16e82271 1725
b350bdf2 1726*** The function `dired-call-process' has been removed.
16e82271 1727
b350bdf2
CY
1728*** The multibyteness of process filters is now determined by the
1729coding-system used for decoding. The functions
1730`process-filter-multibyte-p' and `set-process-filter-multibyte' are
1731obsolete.
03605a28 1732
777ea444 1733** The variable `byte-compile-warnings' can now be a list starting with `not',
0caa490b 1734meaning to disable the specified warnings. The meaning of this list
777ea444 1735may therefore be the reverse of what you expect (of course, this is
0caa490b 1736only an issue if you make use of the new `not' syntax). Rather than
777ea444
GM
1737checking/manipulating elements directly, use the new functions
1738`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and
1739`byte-compile-enable-warning.'
1740
69df9d6d
GM
1741** `mode-name' is no longer guaranteed to be a string.
1742Use `(format-mode-line mode-name)' to ensure a string value.
1743
53ed745a
CY
1744** The function x-font-family-list has been removed.
1745Use the new function font-family-list (see Lisp Changes, below).
1746
b350bdf2
CY
1747** Internationalization changes
1748
1749*** The value of the function `charset-id' is now always 0.
16e82271 1750
b350bdf2
CY
1751*** The functions `register-char-codings' and `coding-system-spec'
1752have been removed.
16e82271 1753
b350bdf2
CY
1754*** The cpXXX coding systems are now supported automatically.
1755The functions cp-...-codepage, which you had to use in Emacs 22 to
1756enable support for these coding systems, have been deleted.
16e82271 1757
b350bdf2 1758*** The following features have been removed. They were used for
85a1f98d
GM
1759displaying various scripts with specific fonts, and are no longer
1760needed now that OpenType font support is available:
1761
b350bdf2 1762**** `devanagari' and `devan-util', and all associated devanagari-* and
85a1f98d
GM
1763dev-* functions and variables (formerly used for Devanagari script).
1764
b350bdf2 1765**** `kannada' and `knd-util', and all associated kannada-* and knd-*
85a1f98d
GM
1766functions and variables (formerly used for Kannada script).
1767
b350bdf2 1768**** `malayalam' and `mlm-util', and all associated malayalam-* and
85a1f98d
GM
1769mlm-* functions and variables (formerly used for Malayalam script).
1770
b350bdf2 1771**** `tamil' and `tml-util, and all associated tamil-* and tml-*
85a1f98d 1772functions and variables (formerly used for Tamil script).
6a6b4d7d 1773
2d2db320
KH
1774*** The meaning of NAME argument of `set-fontset-font' is changed.
1775Previously nil is accepted as the default fontset. Now, nil is for
1776the fontset of the selected frame and t is for the default fontset.
1777
1778*** The meaning of FONTSET argument of `print-fontset' is changed.
1779Now, nil is for the fontset of the selected frame and t is for the
1780default fontset.
1781
16e82271
CY
1782** If a function in write-region-annotate-functions returns with a
1783different buffer current, Emacs no longer kills that buffer
1784automatically. This behavior existed in previous versions of Emacs,
1785but was undocumented. To kill a buffer after write-region, give the
1786variable `write-region-post-annotation-function' a buffer-local value
1787of `kill-buffer'.
1788
55504ada 1789** The variable temp-file-name-pattern has been removed.
f4150f61
CY
1790This variable was only used by call-process-region, which now uses
1791temporary-file-directory instead.
1792
52456e59
CY
1793** The COUNT and SYSTEM-FLAG arguments to define-abbrev have been
1794removed. The function now takes extra arguments for specifying
1795arbitrary abbrev properties.
1796
7841339b
AM
1797** end-of-defun-function is now guaranteed to work only when called
1798from the start of a defun. It must now leave point exactly at the end
1799of defun, since `end-of-defun' now itself moves forward over
1800whitespace after calling it.
1801
0bfd685e
GM
1802\f
1803* Lisp Changes in Emacs 23.1
8ab314f9 1804
b8afe7e4
EZ
1805** The new variable `generate-autoload-cookie' controls the magic comment
1806string used by `update-file-autoloads' to find autoloaded forms. The
1807variable `generated-autoload-file' similarly controls the name of the
1808file where `update-file-autoloads' writes the calls to `autoload'.
1809The default values are ";;;###autoload" and `loaddefs.el',
1810respectively.
1811
a20878b6 1812** New primitives `list-system-processes' and `process-attributes'
5d692341
EZ
1813let Lisp programs access the processes that are running on the local
1814machine. See the doc strings of these functions for more details.
1815Not all platforms support accessing this information; on those that
1816don't, these primitives will return nil.
1817
b350bdf2
CY
1818** New variable `user-emacs-directory'.
1819Use this instead of "~/.emacs.d".
43f8b275 1820
b350bdf2
CY
1821** If a local hook function has a non-nil `permanent-local-hook'
1822property, `kill-all-local-variables' does not remove it from the local
1823value of the hook variable; it remains even if you change major modes.
09e18d03 1824
b350bdf2
CY
1825** `frame-inherited-parameters' lets new frames inherit parameters from
1826the selected frame.
09e18d03 1827
b350bdf2
CY
1828** New keymap `input-decode-map' overrides like key-translation-map, but
1829applies before function-key-map. Also it is terminal-local contrary to
1830key-translation-map. Terminal-specific key-sequences are generally added to
1831this map rather than to function-key-map now.
09e18d03 1832
b350bdf2 1833** `ignore-errors' is now a standard macro (does not require the CL package).
09e18d03 1834
b350bdf2
CY
1835** `interprogram-paste-function' can now return one string or a list
1836of strings. In the latter case, Emacs puts the second and following
1837strings on the kill ring.
09e18d03 1838
b350bdf2
CY
1839** In `condition-case', a handler can specify "let the debugger run first".
1840You do this by writing `debug' in the list of conditions to be handled,
1841like this:
09e18d03 1842
b350bdf2
CY
1843 (condition-case nil
1844 (foo bar)
1845 ((debug error) nil))
09e18d03 1846
b350bdf2 1847** clone-indirect-buffer now runs the clone-indirect-buffer-hook.
09e18d03 1848
7841339b
AM
1849** `beginning-of-defun-function' now takes one argument, the count given to
1850`beginning-of-defun'. (N.B. `end-of-defun-function' doesn't take any
1851arguments.)
09e18d03 1852
b350bdf2
CY
1853** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED.
1854IDENTIFICATION specifies which part of the remote identifier has to be
1855returned. With CONNECTED passed non-nil, it is checked whether a
1856remote connection has been established already.
09e18d03 1857
b350bdf2
CY
1858** The new macro `declare-function' suppresses compiler warnings about
1859undefined functions.
a1562258 1860
b350bdf2 1861** Changes to interactive function handling
8ba31f36 1862
b350bdf2
CY
1863*** The new interactive spec code ^ says to first call
1864handle-shift-selection if shift-select-mode is non-nil, before reading
1865the command arguments. This is used for shift-selection (see above).
e2947429 1866
b350bdf2
CY
1867*** Built-in functions can now have an interactive specification that
1868is not a prompt string. If the `intspec' parameter of a `DEFUN'
1869starts with a `(', the string is evaluated as a Lisp form.
e2947429 1870
b350bdf2
CY
1871*** The interactive-form of a function can be added post-facto via the
1872`interactive-form' symbol property. Mostly useful to add complex
1873interactive forms to subroutines.
d87be1df 1874
b350bdf2 1875** Region changes
3ae459e5 1876
b350bdf2
CY
1877*** Commands should use `use-region-p' to test whether there is
1878an active region that they should operate on.
3ae459e5 1879
b350bdf2 1880*** `region-active-p' returns non-nil when Transient Mark mode is
71b605b8
CY
1881enabled and the mark is active. Most commands that act specially on
1882the active region in Transient Mark mode should use `use-region-p'
1883instead of `region-active-p', because `use-region-p' obeys the new
1884user option `use-empty-active-region' (see Editing Changes, above).
58555d81 1885
b350bdf2
CY
1886*** If a command sets `transient-mark-mode' to (only . OLDVAL), that
1887means to activate transient-mark-mode temporarily, until the next
1888unshifted point motion command or mark deactivation. Afterwards,
1889reset transient-mark-mode to the value OLDVAL. The values `only' and
1890`identity', introduced in Emacs 22, are now deprecated.
e5c4079c 1891
b350bdf2 1892** Emacs session information
13cda5f9 1893
b350bdf2
CY
1894*** The new variables `before-init-time' and `after-init-time' record the
1895value of `current-time' before and after Emacs loads the init files.
a2bc5bdd 1896
b350bdf2 1897*** The new function `emacs-uptime' returns the uptime of an Emacs instance.
d82c3d44 1898
b350bdf2
CY
1899*** The new function `emacs-init-time' returns the duration of the
1900Emacs initialization.
50bfa18a 1901
b350bdf2 1902** Changes affecting display-buffer
16e82271 1903
abe8f306
MR
1904*** display-buffer tries to be smarter when splitting windows.
1905The new option split-window-preferred-function lets you specify your own
1906function to pop up new windows. Its default value split-window-sensibly
1907can split a window either vertically or horizontally, whichever seems
1908more suitable in the current configuration. You can tune the behavior
1909of split-window-sensibly by customizing split-height-threshold and the
1910new option split-width-threshold. Both options now take the value nil
1911to inhibit splitting in one direction. Setting split-width-threshold to
1912nil inhibits horizontal splitting and gets you the behavior of Emacs 22
1913in this respect. In any case, display-buffer may now split the largest
1914window vertically even when it is not as wide as the containing frame.
2d105adf 1915
f691c216
CY
1916*** If pop-up-frames has the value `graphic-only', display-buffer only
1917makes a separate frame on graphic displays.
1918
abe8f306 1919*** select-frame and set-frame-selected-window have a new optional
ee434cb1
MR
1920argument NORECORD. If non-nil, this will avoid messing with the order
1921of recently selected windows and the buffer list.
205f3a3b 1922
781459a4
CY
1923** Window parameters can now be defined.
1924These are analogous to frame parameters, but are associated with
1925individual windows.
16e82271 1926
781459a4
CY
1927*** The new functions window-parameters, window-parameter, and
1928set-window-parameter are used to query and set window parameters.
1929
b350bdf2 1930** Minibuffer and completion changes
16e82271 1931
b350bdf2 1932*** A list of default values can be specified for the DEFAULT argument of
b9694062
JL
1933functions `read-from-minibuffer', `read-string', `read-command',
1934`read-variable', `read-buffer', `completing-read'. Elements of this list
1935are available for inserting into the minibuffer by typing `M-n'.
1936For empty input these functions return the first element of this list.
1937
90993beb 1938*** New function `read-regexp' uses the regexp history and some useful
4f75e082 1939regexp defaults (string at point, last Isearch/replacement regexp/string)
90993beb
JL
1940via M-n when reading a regexp in the minibuffer.
1941
b350bdf2
CY
1942*** minibuffer-local-must-match-filename-map is now named
1943minibuffer-local-filename-must-match-map.
66dc1ca2 1944
206faa92
CY
1945*** The `require-match' argument to `completing-read' accepts the new
1946values `confirm-only' and `confirm-after-completion'.
d03b9b31 1947
b350bdf2 1948** Search and replacement changes
16e82271 1949
b350bdf2 1950*** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly.
16e82271 1951
b350bdf2
CY
1952*** New function `match-substitute-replacement' returns the result of
1953`replace-match' without actually using it in the buffer.
c60d543d 1954
b350bdf2 1955*** The new variable `replace-search-function' determines the function
80120f13
EZ
1956to use for searching in query-replace and replace-string. The
1957function it specifies is called by `perform-replace' when its 4th
1958argument is nil.
3ae459e5 1959
b350bdf2
CY
1960*** The new variable `replace-re-search-function' determines the
1961function to use for searching in `query-replace-regexp',
1962`replace-regexp', `query-replace-regexp-eval', and
80120f13
EZ
1963`map-query-replace-regexp'. The function it specifies is called by
1964`perform-replace' when its 4th argument is non-nil.
4f4a84ec 1965
4f75e082
JL
1966*** New keymap `search-map' bound to `M-s' provides global bindings
1967for search related commands.
1968
1969*** New keymap `multi-query-replace-map' contains additonal keys bound
71554a21
JL
1970to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
1971
b350bdf2
CY
1972*** The variable `inhibit-changing-match-data', if non-nil, prevents
1973the search and match primitives from changing the match data.
967b2682 1974
3c241617
CY
1975*** New functions `word-search-forward-lax' and `word-search-backward-lax'.
1976These are like `word-search-forward and `word-search-backward', except
1977that the end of the search string need not match a word boundary,
1978unless it ends in whitespace.
1979
b350bdf2 1980** File handling changes
8bf5c8a6 1981
b350bdf2
CY
1982*** set-file-modes is now interactive and can take the mode value in
1983symbolic notation thanks to auxiliary functions.
16e82271 1984
291703b5
EZ
1985*** file-local-variables-alist stores an alist of file-local
1986variables defined in the current buffer.
1987
d59f7c45 1988** Face-remapping
16e82271 1989
d59f7c45
CY
1990*** Each face can be remapped to a different face definition using the
1991variable `face-remapping-alist'. This is an alist that maps faces to
1992replacement definitions (which can be face names, lists of face names,
1993or attribute/value plists. If this variable is buffer-local, the
1994remapping occurs only in that buffer.
1995
1996*** text-scale-mode remaps the default face to a larger or smaller
2e538385 1997size in the current buffer. This feature is used by the Buffer Face
d59f7c45
CY
1998menu and the new `C-x C-+', `C-x C--', and `C-x C-0' commands (see
1999Editing Changes, above).
2000
2001*** New functions:
16e82271 2002
d59f7c45
CY
2003**** `face-remap-add-relative' adds a face remapping entry to the
2004current buffer.
16e82271 2005
d59f7c45
CY
2006**** ``face-remap-remove-relative' removes a face remapping entry from
2007the current buffer.
16e82271 2008
d59f7c45 2009**** `face-remap-reset-base' restores a face to its global definition.
16e82271 2010
d59f7c45
CY
2011**** `face-remap-set-base' sets the base remapping of a face.
2012
85c78c0f 2013** Process changes
16e82271 2014
b350bdf2
CY
2015*** The new function `start-file-process' is similar to `start-process',
2016but obeys file handlers. The file handler is chosen based on
2017`default-directory'. The functions `start-file-process-shell-command'
2018and `process-file-shell-command' are also new; they call internally
2019`start-file-process' and `process-file', respectively.
2020
2021*** The new function `process-lines' executes an external program and
2022returns its output as a list of lines.
63571b5a 2023
d82c3d44
GM
2024** Character code, representation, and charset changes.
2025
16e82271
CY
2026*** In multibyte buffers and strings, characters are represented by
2027UTF-8 byte sequences. The character code space is now 0x0..0x3FFFFF
2028with no gap; code points 0x0..0x10FFFF are Unicode characters of the
2029same code points, while code points 0x3FFF80..0x3FFFFF are raw 8-bit
2030bytes.
d82c3d44 2031
16e82271 2032*** Generic characters no longer exist.
d82c3d44 2033
16e82271
CY
2034*** The concept of a charset has changed. A single character may
2035belong to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets
b350bdf2 2036unicode, iso-8859-1, iso-8859-3, etc).
d82c3d44 2037
16e82271
CY
2038**** The dimension of a charset is now 1, 2, 3, or 4, and the size of
2039each dimension is no longer limited to 94 or 96.
2040
2041**** A dynamic charset priority list is used to infer the charset of
2042characters for display.
2043
c9a1876d
EZ
2044*** The functions `split-char' and `make-char' now accept up to 4
2045positional codes instead of just 2.
2046
d82c3d44
GM
2047*** The functions `encode-char' and `decode-char' now accept any character sets.
2048
2049*** The function `define-charset' now accepts a completely different
2050form of arguments (old-style arguments still work).
2051
d82c3d44
GM
2052*** The value of the function `char-charset' depends on the current
2053priorities of charsets.
2054
d82c3d44
GM
2055*** The function get-char-code-property now accepts many Unicode base
2056character properties. They are `name', `general-category',
2057`canonical-combining-class', `bidi-class', `decomposition',
2058`decimal-digit-value', `digit-value', `numeric-value', `mirrored',
2059`old-name', `iso-10646-comment', `uppercase', `lowercase', and
2060`titlecase'.
2061
b350bdf2
CY
2062*** The functions `modify-syntax-entry' and `modify-category-entry' now
2063accept a cons of characters as the first argument, and modify all
2064entries in that range of characters.
d82c3d44 2065
8434d0b8
EZ
2066*** Use of `translation-table-for-input' for character code unification
2067is now obsolete, since Emacs 23.1 and later uses Unicode as basis for
2068internal representation of characters.
d82c3d44 2069
b350bdf2 2070*** New functions:
d82c3d44 2071
b350bdf2
CY
2072**** `characterp' returns t if and only if the argument is a character.
2073This replaces `char-valid-p', which is now obsolete.
d82c3d44 2074
b350bdf2 2075**** `max-char' returns the maximum character code (currently #x3FFFFF).
d82c3d44 2076
b350bdf2
CY
2077**** `define-charset-alias' defines an alias of a charset.
2078
2079**** `set-charset-priority' sets priorities of charsets.
2080
2081**** `charset-priority-list' returns a prioritized list of charsets.
2082
2083**** `unibyte-string' makes a unibyte string from bytes.
2084
2085**** `define-char-code-property' defines a character code property.
2086
2087**** `char-code-property-description' returns the description string of
2088a character code property.
2089
2090*** New variables:
2091
2092**** `find-word-boundary-function-table' is a char-table of functions to
2093search for a word boundary.
2094
2095**** `char-script-table' is a char-table of script names.
2096
2097**** `char-width-table' is a char-table of character widths.
2098
2099**** `print-charset-text-property' controls how to handle `charset' text
2100property on printing a string.
2101
2102**** `printable-chars' is a char-table of printable characters.
d82c3d44 2103
505d8756 2104** Code conversion changes
d82c3d44
GM
2105
2106*** The new function `define-coding-system' should be used to define a
2107coding system instead of `make-coding-system' (which is now obsolete).
2108
2109*** The functions `encode-coding-region' and `decode-coding-region'
2110have an optional 4th argument to specify where the result of
2111conversion should go.
2112
2113*** The functions `encode-coding-string' and `decode-coding-string'
2114have an optional 4th argument specifying a buffer to store the result
2115of conversion.
2116
b0caa7fb
EZ
2117*** The new variable `inhibit-null-byte-detection' controls whether to
2118consider text with null bytes as binary data. By default, it is
2119`nil', and Emacs uses `no-conversion' for any text containing null
2120bytes.
2121
b350bdf2 2122*** The functions `set-coding-priority' and `make-coding-system' are obsolete.
d82c3d44 2123
b350bdf2 2124*** New functions:
d82c3d44 2125
b350bdf2
CY
2126**** `with-coding-priority' executes Lisp code using the specified
2127coding system priority order.
d82c3d44 2128
b350bdf2
CY
2129**** `check-coding-systems-region' checks if the text in the region is
2130encodable by the specified coding systems.
d82c3d44 2131
b350bdf2 2132**** `coding-system-aliases' returns a list of aliases of a coding system.
d82c3d44 2133
b350bdf2
CY
2134**** `coding-system-charset-list' returns a list of charsets supported
2135by a coding system.
d82c3d44 2136
b350bdf2
CY
2137**** `coding-system-priority-list' returns a list of coding systems
2138ordered by their priorities.
2139
2140**** `set-coding-system-priority' sets priorities of coding systems.
d82c3d44 2141
f4017dc5
KH
2142**** `coding-system-from-name' returns a coding system matching with
2143the argument name.
2144
d82c3d44 2145** There is a new input method, Robin, different from Quail.
0caa490b 2146It has three functionalities:
d82c3d44
GM
2147 i) a simple input method (converts an ASCII sequence into a string).
2148ii) converts an existing buffer substring into another string
2149iii) reverse conversion (each character produced by a
2150robin rule can hold the original ASCII sequence as a char-code-property)
2151
2152*** The new function `robin-define-package' defines a Robin package.
2153
2154*** The new function `robin-modify-package' modifies an existing Robin package.
2155
2156*** The new function `robin-use-package' starts using a Robin package
2157as an input method.
2158
888d7d86
KH
2159*** The new function `string-to-unibyte' is like `string-as-unibyte'
2160but signals an error if STRING contains a non-ASCII, non-eight-bit
2161character.
2162
505d8756 2163** Changes related to the new font backend
16e82271 2164
0c1e3f0d
CY
2165*** Which font backends to use can be specified by the X resource
2166"FontBackend". For instance, to use both X core fonts and Xft fonts:
2b7a2553 2167
b19aa6dd 2168Emacs.FontBackend: x,xft
2b7a2553 2169
b19aa6dd
GM
2170If this resource is not set, Emacs tries to use all font backends
2171available on your graphic device.
16e82271 2172
d82c3d44
GM
2173*** New frame parameter `font-backend' specifies a list of
2174font-backends supported by the frame's graphic device. On X, they are
2175currently `x' and `xft'.
2176
b350bdf2
CY
2177*** The function `set-fontset-font' now accepts a script name as the
2178second argument, and has an optional 5th argument to control how to
2179set the font.
bd9d28f7 2180
b350bdf2 2181*** New functions:
16e82271 2182
b350bdf2 2183**** `fontp' checks if the argument is a font-spec or font-entity.
16e82271 2184
b350bdf2 2185**** `font-spec' creates a new font-spec object.
16e82271 2186
b350bdf2 2187**** `font-get' returns a font property value.
16e82271 2188
b350bdf2 2189**** `font-put' sets a font property value.
16e82271 2190
b350bdf2 2191**** `font-face-attributes' returns a plist of face attributes set by a font.
16e82271 2192
b350bdf2 2193**** `list-fonts' returns a list of font-entities matching a font spec.
16e82271 2194
543e6d09 2195**** `find-font' returns the font-entity best matching the given font spec.
16e82271 2196
ae525471 2197**** `font-family-list' returns a list of family names of available fonts.
16e82271 2198
b350bdf2
CY
2199**** `font-xlfd-name' returns an XLFD name of a given font spec, font
2200entity, or font object.
16e82271 2201
b350bdf2 2202**** `clear-font-cache' clears all font caches.
d82c3d44 2203
b350bdf2 2204** Changes related to multiple-terminal (multi-tty) support
24cdde13 2205
b12f6e85
SM
2206*** $TERM is now set to `dumb' for subprocesses. If you want to know the
2207$TERM inherited by Emacs you will have to look inside initial-environment.
2208
6168122d
SM
2209*** $DISPLAY is now dynamically inherited from the frame's `display'.
2210
b350bdf2 2211*** The `window-system' variable is now frame-local. The new
24cdde13 2212`initial-window-system' variable contains the `window-system' value
bbe3eb99
GM
2213for the first frame. `window-system' is also now a function that
2214takes a frame argument.
24cdde13 2215
b350bdf2
CY
2216*** The `keyboard-translate-table' variable and the terminal and
2217keyboard coding systems are now terminal-local.
2218
24cdde13
GM
2219*** You can specify a terminal device (`tty' parameter) and a terminal
2220type (`tty-type' parameter) to `make-terminal-frame'.
2221
24cdde13 2222*** The function `make-frame-on-display' now works during a tty
4e598d29 2223session.
24cdde13 2224
1e637a9f
EZ
2225*** A new `terminal' data type.
2226The functions `get-device-terminal', `terminal-parameters',
765980a4 2227`terminal-parameter', `set-terminal-parameter' use this data type.
24cdde13 2228
b350bdf2
CY
2229*** Function key sequences are now mapped using `local-function-key-map',
2230a new variable. This inherits from the global variable function-key-map,
2231which is not used directly any more.
92cd6a7c 2232
b350bdf2 2233*** New hooks:
da406961 2234
7082ceb2
CY
2235**** before-hack-local-variables-hook is called after setting new
2236variable file-local-variables-alist, and before actually applying the
2237file-local variables.
2238
b350bdf2
CY
2239**** `suspend-tty-functions' and `resume-tty-functions' are called
2240after a tty frame has been suspended or resumed, respectively. The
2241functions are called with the terminal id of the frame being
2242suspended/resumed as a parameter.
da406961 2243
b350bdf2
CY
2244**** The special hook `delete-terminal-functions' is called before
2245deleting a terminal.
82866ad5 2246
b350bdf2 2247*** New functions:
24cdde13 2248
490f1197 2249**** `delete-terminal'
9f44d41a 2250
b350bdf2 2251**** `suspend-tty'
ea2e3ef4 2252
b350bdf2 2253**** `resume-tty'.
8d371994 2254
b350bdf2 2255*** `initial-environment' holds the environment inherited from Emacs's parent.
8d371994 2256
b350bdf2 2257** Redisplay changes
16e82271 2258
b350bdf2
CY
2259*** For underlined characters, the distance between the underline and
2260the baseline is controlled by a new variable, `underline-minimum-offset'.
16e82271 2261
b350bdf2
CY
2262*** You can now pass the value of the `invisible' property to
2263invisible-p to check whether it would cause the text to be invisible.
540f3092
GM
2264This is convenient when checking invisibility of text with no buffer
2265position (e.g. in before/after-strings).
16e82271 2266
b350bdf2 2267*** `clear-image-cache' can be told to flush only images of a specific file.
16e82271 2268
0c8b58e9
CY
2269*** `vertical-motion' can now be given a goal column.
2270It now accepts a cons cell (COLS . LINES) in its first argument, which
2271says to stop, where possible, at a pixel x-position equal to COLS
2272times the default column width.
16e82271 2273
e589455f
MR
2274*** redisplay-end-trigger-functions, set-window-redisplay-end-trigger,
2275and window-redisplay-end-trigger are obsolete. Use `jit-lock-register'
2276instead.
16e82271 2277
605bfcb3
CY
2278*** The new variables `wrap-prefix' and `line-prefix' specify display
2279specs which are appended at display-time to every continuation line
2280and non-continuation line, respectively. In addition, Emacs
2281recognizes the `wrap-prefix' and `line-prefix' text or overlay
2282properties; these have the same effects as the variables of the same
2283name, but take precedence.
e589455f 2284
9ac64acd
CY
2285** The Lisp interpreter now treats non-breaking space as whitespace.
2286
b350bdf2 2287** Miscellaneous new functions
9f44d41a 2288
b350bdf2 2289*** `apply-partially' performs a "curried" application of a function.
abf13a8b 2290
b350bdf2
CY
2291*** `buffer-swap-text' swaps text between two buffers. This can be
2292useful for modes such as tar-mode, archive-mode, RMAIL.
967b2682 2293
6880f6db
CY
2294*** `combine-and-quote-strings' produces a single string from a list of strings
2295sticking a separator string in between each pair, and quoting those
2296strings that include the separator as their substring. Useful for
2297consing shell command lines from the individual arguments.
2298
2299*** `custom-note-var-changed' tells Custom to treat the change in a
2300certain variable as having been made within Custom.
b350bdf2
CY
2301
2302*** `face-all-attributes' returns an alist describing all the basic
2303attributes of a given face.
2304
6880f6db
CY
2305*** `format-seconds' converts a number of seconds into a readable
2306string of days, hours, etc.
b350bdf2
CY
2307
2308*** `image-refresh' refreshes all images associated with a given image
2309specification.
64639e26 2310
6880f6db
CY
2311*** `locate-user-emacs-file' helps packages to select the appropriate
2312place to save user-specific files. It defaults to `user-emacs-directory'
2313unless the file already exists at $HOME.
2314
6880f6db
CY
2315*** `read-color' reads a color name using the minibuffer.
2316
6880f6db
CY
2317*** `read-shell-command' does what its name says, with completion. It
2318uses the minibuffer-local-shell-command-map for that.
2319
6880f6db
CY
2320*** `split-string-and-unquote' splits a string into a list of substrings
2321on the boundaries of a given delimiter, and unquotes the substrings that
2322are quoted. Useful for taking apart shell commands.
2323
b350bdf2 2324*** The two new functions `looking-at-p' and `string-match-p' can do
45595a4f
RS
2325the same matching as `looking-at' and `string-match' without changing
2326the match data.
89835619 2327
81efacf9
CY
2328*** The two new functions `make-serial-process' and
2329`serial-process-configure' provide a Lisp interface to the new serial
2330port support (see Emacs changes, above).
2331
b350bdf2
CY
2332** Miscellaneous new variables
2333
28aaa255
CY
2334*** `auto-save-include-big-deletions', if non-nil, means auto-save is
2335not turned off automatically after a big deletion.
2336
91f68422
CY
2337*** `read-circle', if nil, disables the reading of recursive Lisp
2338structures using the #N= and #N# syntax.
2339
b350bdf2
CY
2340*** `this-command-keys-shift-translated' is non-nil if the key
2341sequence invoking the current command was found by shift-translation.
2342
2343*** `window-point-insertion-type' determines the insertion-type of the
2344marker used for window-point.
2345
2346*** bookmark provides `bookmark-make-record-function' so special major
2347modes like Info can teach bookmark.el how to save and restore the
2348relevant data.
2349
b350bdf2
CY
2350*** `fill-forward-paragraph-function' specifies which function the
2351filling code should use to find paragraph boundaries.
2352
9bae34bf 2353\f
0bfd685e 2354* New Packages for Lisp Programming in Emacs 23.1
efeb796b 2355
b350bdf2
CY
2356** The new package avl-tree.el deals with the AVL tree data structure.
2357
2358** The new package check-declare.el verifies the accuracy of
2359declare-function macros (see Lisp Changes, above).
d445b3f8 2360
20202f5e 2361** find-cmd.el can build `find' commands using lisp syntax.
6dfcbe31 2362
babc4609
JL
2363** The package misearch.el has been added. It allows Isearch to search
2364through multiple buffers. A variable `multi-isearch-next-buffer-function'
2365defines the function to call to get the next buffer to search in the series
b0d6136e 2366of multiple buffers. Top-level functions `multi-isearch-buffers',
babc4609
JL
2367`multi-isearch-buffers-regexp', `multi-isearch-files' and
2368`multi-isearch-files-regexp' accept a single argument that specifies
2369a list of buffers/files to search for a string/regexp.
9097e8af 2370
b350bdf2
CY
2371** The new major mode `special-mode' is intended as a parent for
2372major modes such as those that set the "'mode-class 'special" property.
d53a60a6 2373
05197f40 2374\f
a933dad1 2375----------------------------------------------------------------------
5b87ad55 2376This file is part of GNU Emacs.
a933dad1 2377
ab73e885 2378GNU Emacs is free software: you can redistribute it and/or modify
5b87ad55 2379it under the terms of the GNU General Public License as published by
ab73e885
GM
2380the Free Software Foundation, either version 3 of the License, or
2381(at your option) any later version.
5b87ad55
GM
2382
2383GNU Emacs is distributed in the hope that it will be useful,
2384but WITHOUT ANY WARRANTY; without even the implied warranty of
2385MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2386GNU General Public License for more details.
a933dad1 2387
5b87ad55 2388You should have received a copy of the GNU General Public License
ab73e885 2389along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
a933dad1 2390
05197f40 2391\f
a933dad1
DL
2392Local variables:
2393mode: outline
2394paragraph-separate: "[ \f]*$"
2395end:
ab5796a9 2396
a533413c 2397arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2