Merge changes from emacs-23 branch.
[bpt/emacs.git] / etc / NEWS
... / ...
CommitLineData
1GNU Emacs NEWS -- history of user-visible changes.
2
3Copyright (C) 2010 Free Software Foundation, Inc.
4See the end of the file for license conditions.
5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7If possible, use M-x report-emacs-bug.
8
9This file is about changes in Emacs version 24.
10
11See files NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18,
12and NEWS.1-17 for changes in older Emacs versions.
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.
16
17
18Temporary note:
19 +++ indicates that the appropriate manual has already been updated.
20 --- means no change in the manuals is called for.
21When you add a new item, please add it without either +++ or ---
22so we will look at it and add it to the manual.
23
24\f
25* Installation Changes in Emacs 24.1
26
27** Configure links against libselinux if it is found.
28You can disable this by using --without-selinux.
29
30---
31** By default, the installed Info and man pages are compressed.
32You can disable this by configuring --without-compress-info.
33
34---
35** There are new configure options:
36--with-mmdf, --with-mail-unlink, --with-mailhost.
37These provide no new functionality, they just remove the need to edit
38lib-src/Makefile by hand in order to use the associated features.
39
40---
41** There is a new configure option --with-crt-dir.
42This is only useful if your crt*.o files are in a non-standard location.
43
44---
45** Emacs can be compiled against Gtk+ 3.0 if you pass --with-x-toolkit=gtk3
46to configure. Note that other libraries used by Emacs, RSVG and GConf,
47also depend on Gtk+. You can disable them with --without-rsvg and
48--without-gconf.
49
50** There is a new configure option --enable-use-lisp-union-type.
51This is only useful for Emacs developers to debug certain types of bugs.
52These is not a new feature; only the configure flag is new.
53
54---
55** New translation of the Emacs Tutorial in Hebrew is available
56Type `C-u C-h t' to choose it in case your language setup doesn't
57automatically select it.
58
59\f
60* Startup Changes in Emacs 24.1
61
62\f
63* Changes in Emacs 24.1
64
65** New emacsclient argument --parent-id ID can be used to open a
66client frame in parent X window ID, via XEmbed. This works like the
67--parent-id argument to Emacs.
68
69** Completion can cycle, depending on completion-cycle-threshold.
70
71** auto-mode-case-fold is now enabled by default.
72
73+++
74** Emacs now supports display and editing of bidirectional text.
75
76See the node "Bidirectional Editing" in the Emacs Manual for some
77initial documentation.
78
79To turn this on in any given buffer, set the buffer-local variable
80`bidi-display-reordering' to a non-nil value. The default is nil.
81
82The buffer-local variable `bidi-paragraph-direction', if non-nil,
83forces each paragraph in the buffer to have its base direction
84according to the value of this variable. Possible values are
85`right-to-left' and `left-to-right'. If the value is nil (the
86default), Emacs determines the base direction of each paragraph from
87its text, as specified by the Unicode Bidirectional Algorithm.
88
89The function `current-bidi-paragraph-direction' returns the actual
90value of paragraph base direction at point.
91
92Reordering of bidirectional text for display in Emacs is a "Full
93bidirectionality" class implementation of the Unicode Bidirectional
94Algorithm.
95
96Note that some advanced display features, such as overlay strings and
97`display' text properties, do not yet work correctly when
98bidirectional text is reordered for display.
99
100** GTK scroll-bars are now placed on the right by default.
101Use `set-scroll-bar-mode' to change this.
102
103** GTK tool bars can have just text, just images or images and text.
104Customize `tool-bar-style' to choose style. On a Gnome desktop, the default
105is taken from the desktop settings.
106
107** GTK tool bars can be placed on the left/right or top/bottom of the frame.
108The frame-parameter tool-bar-position controls this. It takes the values
109top, left, right or bottom. The Options => Show/Hide menu has entries
110for this.
111
112** ImageMagick support
113It is now possible to use the Imagemagick library to load many new
114image formats in Emacs.
115
116To enable, use the following configure option:
117--with-imagemagick
118
119The new function (imagemagick-types) returns a list of image file
120extensions that your installation of imagemagick supports.
121
122The function (imagemagick-register-types) will enable the imagemagick
123support for the extensions in imagemagick-types minus the types listed
124in imagemagick-types-inhibit.
125
126See the Emacs Manual for more information.
127
128** The colors for selected text (the region face) are taken from the GTK
129theme when Emacs is built with GTK.
130
131** Emacs uses GTK tooltips by default if built with GTK. You can turn that
132off by customizing x-gtk-use-system-tooltips.
133
134** Lucid menus and dialogs can display antialiased fonts if Emacs is built
135with Xft.
136
137** Basic SELinux support has been added.
138This requires Emacs to be linked with libselinux at build time.
139
140*** Emacs preserves the SELinux file context when backing up, and
141optionally when copying files. To this end, copy-file has an extra
142optional argument, and backup-buffer and friends include the SELinux
143context in their return values.
144
145*** The new functions file-selinux-context and set-file-selinux-context
146get and set the SELinux context of a file.
147
148*** Tramp offers handlers for file-selinux-context and set-file-selinux-context
149for remote machines which support SELinux.
150
151** New scrolling commands `scroll-up-command' and `scroll-down-command'
152(bound to C-v/[next] and M-v/[prior]) does not signal errors at top/bottom
153of buffer at first key-press (instead moves to top/bottom of buffer)
154when a new variable `scroll-error-top-bottom' is non-nil.
155
156** New scrolling commands `scroll-up-line' and `scroll-down-line'
157scroll a line instead of full screen.
158
159** New property `scroll-command' should be set on a command's symbol to
160define it as a scroll command affected by `scroll-preserve-screen-position.
161
162** Trash changes
163
164*** `delete-by-moving-to-trash' now only affects commands that specify
165trashing. This avoids inadvertently trashing temporary files.
166
167*** Calling `delete-file' or `delete-directory' with a prefix argument
168now forces true deletion, regardless of `delete-by-moving-to-trash'.
169
170** New option `list-colors-sort' defines the color sort order
171for `list-colors-display'.
172
173** An Emacs Lisp package manager is now included.
174This is a convenient way to download and install additional packages,
175from elpa.gnu.org. `M-x package-list-packages' shows a list of
176packages, which can be selected for installation.
177
178*** By default, all installed packages are loaded and activated
179automatically when Emacs starts up. To disable this, set
180`package-enable-at-startup' to nil. To change which packages are
181loaded, customize `package-load-list'.
182
183\f
184* Editing Changes in Emacs 24.1
185
186** completion-at-point is now an alias for complete-symbol.
187
188** mouse-region-delete-keys has been deleted.
189
190** Deletion changes
191
192*** New option `delete-active-region'.
193If non-nil, C-d, [delete], and DEL delete the region if it is active
194and no prefix argument is given. If set to `kill', these commands
195kill instead.
196
197*** New command `delete-forward-char', bound to C-d and [delete].
198This is meant for interactive use, and obeys `delete-active-region';
199delete-char, meant for Lisp, does not obey `delete-active-region'.
200
201*** `delete-backward-char' is now a Lisp function.
202Apart from obeying `delete-active-region', its behavior is unchanged.
203However, the byte compiler now warns if it is called from Lisp; you
204should use delete-char with a negative argument instead.
205
206*** The option `mouse-region-delete-keys' has been deleted.
207
208** Selection changes.
209
210The default handling of clipboard and primary selections has been
211changed to conform with other X applications.
212
213*** `select-active-regions' now defaults to t, so active regions set
214the primary selection.
215
216It also accepts a new value, `lazy', which means to only set the
217primary selection for temporarily active regions (usually made by
218mouse-dragging or shift-selection).
219
220*** `mouse-2' is now bound to `mouse-yank-primary'.
221
222*** `x-select-enable-clipboard' now defaults to t.
223Thus, killing and yanking now use the clipboard (in addition to the
224kill ring).
225
226*** `x-select-enable-primary' now defaults to nil.
227
228*** `mouse-drag-copy-region' now defaults to nil.
229
230\f
231* Changes in Specialized Modes and Packages in Emacs 24.1
232
233** FIXME: xdg-open for browse-url and reportbug, 2010/08. (Close bug#4546?)
234
235** Archive Mode has basic support to browse 7z archives.
236
237** ERC changes
238
239*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'.
240If the value of `erc-autojoin-timing' is 'ident, ERC autojoins after a
241successful NickServ identification, or after `erc-autojoin-delay'
242seconds. The default value, 'ident, means to autojoin immediately
243after connecting.
244
245** In ido-mode, C-v is no longer bound to ido-toggle-vc.
246The reason is that this interferes with cua-mode.
247
248** partial-completion-mode is now obsolete.
249You can get a comparable behavior with:
250(setq completion-styles '(partial-completion initials))
251(setq completion-pcm-complete-word-inserts-delimiters t)
252
253** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
254** Customize
255
256*** Customize buffers now contain a search field.
257The search is performed using `customize-apropos'.
258To turn off the search field, set custom-search-field to nil .
259
260*** Custom options now start out hidden if at their default values.
261Use the arrow to the left of the option name to toggle visibility.
262
263*** custom-buffer-sort-alphabetically now defaults to t.
264
265*** The color widget now has a "Choose" button, which allows you to
266choose a color via list-colors-display.
267
268** Dired-x
269
270*** dired-jump and dired-jump-other-window called with a prefix argument
271read a file name from the minibuffer instead of using buffer-file-name.
272
273** VC and related modes
274
275*** New VC commands: vc-log-incoming, vc-log-outgoing, vc-find-conflicted-file.
276
277**** vc-log-incoming for Git runs "git fetch" so that the necessary
278data is available locally.
279
280**** vc-log-incoming and vc-log-outgoing for Git require version 1.7 (or newer).
281
282*** New key bindings: C-x v I and C-x v O bound to vc-log-incoming and
283vc-log-outgoing, respectively.
284
285*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots.
286
287*** Special markup can be added to log-edit buffers.
288The log-edit buffers are expected to have a format similar to email messages
289with headers of the form:
290 Author: <author of this change>
291 Summary: <one line summary of this change>
292 Fixes: <reference to the bug fixed by this change>
293Some backends handle some of those headers specially, but any unknown header
294is just left as is in the message, so it is not lost.
295
296**** vc-git handles Author: and Date:
297**** vc-hg handles Author: and Date:
298**** vc-bzr handles Author:, Date: and Fixes:
299**** vc-mtn handles Author: and Date:
300
301*** Pressing g in a *vc-diff* buffer reruns vc-diff, so it will
302produce an up to date diff.
303
304** Directory local variables can apply to file-less buffers.
305For example, adding "(diff-mode . ((mode . whitespace)))" to your
306.dir-locals.el file, will turn on `whitespace-mode' for *vc-diff* buffers.
307
308** SQL Mode enhancements.
309
310*** Several variables have been marked as safe local variables. The
311variables `sql-product', `sql-user', `sql-server', `sql-database' and
312`sql-port' can now be safely used as local variables.
313
314*** Added ability to login with a port on MySQL.
315The custom variable `sql-port' can be specified for connection to
316MySQL servers.
317
318*** Command continuation prompts in SQL interactive mode are suppressed.
319Multiple line commands in SQL interactive mode, generate command
320continuation prompts which needlessly confuse the output. These
321prompts are now filtered out from the output. This change impacts
322multiple line SQL statements entered with C-j between each line,
323statements yanked into the buffer and statements sent with
324`sql-send-*' functions.
325
326*** Custom variables control prompting for login parameters.
327Each supported product has a custom variable `sql-*-login-params'
328which is a list of the parameters to be prompted for before a
329connection is established.
330
331By default, the value of the parameter is simply prompted for. For
332`server' and `database', they can be specified in a list as shown
333below:
334
335 (server :file ARG)
336 (database :file ARG)
337 (server :completion ARG)
338 (database :completion ARG)
339
340The ARG when :file is specified is a regexp that will match valid file
341names (without the directory portion). Generally these strings will
342be of the form ".+\.SUF" where SUF is the desired file suffix.
343
344When :completion is specified, the ARG corresponds to the PREDICATE
345argument to the `completing-read' function (a list of possible values
346or a function returning such a list).
347
348*** Added `sql-connection-alist' to record login parameter values.
349An alist for recording different username, database and server
350values. If there are multiple databases that you connect to the
351parameters needed can be stored in this alist.
352
353For example, the following might be set in the user's init.el:
354
355 (setq sql-connection-alist
356 '((dev (sql-product 'sqlite)
357 (sql-database "/home/mmaug/dev.db"))
358 (prd (sql-product 'oracle)
359 (sql-user "mmaug")
360 (sql-database "iprd2a"))))
361
362This defines two connections named "dev" and "prd".
363
364*** Added `sql-connect' to use predefined connections.
365Sets the login parameters based on the values in the
366`sql-connection-alist' and start a SQL interactive session. Any
367values specified in the connection will not be prompted for.
368
369In the example above, if the user were to invoke M-x sql-connect, they
370would be prompted for the connection. The user can respond with
371either "dev" or "prd". The "dev" connection would connect to the
372SQLite database without prompting; the "prd" connection would prompt
373for the users password and then connect to the Oracle database.
374
375**** Added SQL->Start... submenu when connections are defined.
376When connections have been defined, There is a submenu available that
377allows the user to select one to start a SQLi session. The "Start
378SQLi Session" item moves to the "Start..." submenu when cnnections
379have been defined.
380
381**** Added "Save Connection" menu item in SQLi buffers.
382When a SQLi session is not started by a connection then
383`sql-save-connection' will gather the login params specified for the
384session and save them as a new connection.
385
386*** Added option `sql-send-terminator'.
387When set makes sure that each command sent with `sql-send-*' commands
388are properly terminated and submitted to the SQL processor.
389
390*** Added option `sql-oracle-scan-on'.
391When set commands sent to Oracle's SQL*Plus are scanned for strings
392starting with an ampersand and the user is asked for replacement text.
393In general, the SQL*Plus option SCAN should always be set OFF under
394SQL interactive mode and this option used in its place.
395
396*** SQL interactive mode will replace tabs with spaces.
397This prevents the comand interpretter for MySQL and Postgres from
398listing object name completions when being sent text via
399`sql-send-*' functions.
400
401*** An API for manipulating SQL product definitions has been added.
402
403** s-region.el is now declared obsolete, superceded by shift-select-mode
404enabled by default in 23.1.
405
406** gdb-mi
407
408*** GDB User Interface migrated to GDB Machine Interface and now
409supports multithread non-stop debugging and debugging of several
410threads simultaneously.
411
412\f
413* New Modes and Packages in Emacs 24.1
414
415** pcase.el provides the ML-style pattern matching macro `pcase'.
416
417** smie.el is a package providing a simple generic indentation engine.
418
419** secrets.el is an implementation of the Secret Service API, an
420interface to password managers like GNOME Keyring or KDE Wallet. The
421Secret Service API requires D-Bus for communication. The command
422`secrets-show-secrets' offers a buffer with a visualization of the
423secrets.
424
425** notifications.el provides an implementation of the Desktop
426Notifications API. It requires D-Bus for communication.
427
428\f
429* Incompatible Lisp Changes in Emacs 24.1
430
431** A backquote not followed by a space is now always treated as new-style.
432
433** Test for special mode-class was moved from view-file to view-buffer.
434FIXME: This only says what was changed, but not what are the
435programmer-visible consequences.
436
437** Passing a nil argument to a minor mode function now turns the mode
438 ON unconditionally.
439
440** During startup, Emacs no longer adds entries for `menu-bar-lines'
441and `tool-bar-lines' to `default-frame-alist' and
442`initial-frame-alist'. With these alist entries omitted, `make-frame'
443checks the value of the variable `menu-bar-mode'/`tool-bar-mode' to
444determine whether to create a menu-bar or tool-bar, respectively.
445If the alist entries are added, they override the value of
446`menu-bar-mode'/`tool-bar-mode'.
447
448** Regions created by mouse dragging are now normal active regions,
449similar to the ones created by shift-selection. In previous Emacs
450versions, these regions were delineated by `mouse-drag-overlay', which
451has now been removed.
452
453\f
454* Lisp changes in Emacs 24.1
455
456** New hook post-self-insert-hook run at the end of self-insert-command.
457
458** Syntax tables support a new "comment style c" additionally to style b.
459** frame-local variables cannot be let-bound any more.
460** prog-mode is a new major-mode meant to be the parent of programming mode.
461** define-minor-mode accepts a new keyword :variable.
462
463** `delete-file' and `delete-directory now accept optional arg TRASH.
464Trashing is performed if TRASH and `delete-by-moving-to-trash' are
465both non-nil. Interactively, TRASH defaults to t, unless a prefix
466argument is supplied (see Trash changes, above).
467
468** buffer-substring-filters is obsoleted by filter-buffer-substring-functions.
469
470** New completion style `substring'.
471
472** Image API
473
474*** When the image type is one of listed in `image-animated-types'
475and the number of sub-images in the image is more than one, then the
476new function `create-animated-image' creates an animated image where
477sub-images are displayed successively with the duration defined by
478`image-animate-max-time' and the delay between sub-images defined
479by the Graphic Control Extension of the image.
480
481*** `image-extension-data' is renamed to `image-metadata'.
482
483** Isearch
484
485*** New hook `isearch-update-post-hook' that runs in `isearch-update'.
486
487** Progress reporters can now "spin".
488The MIN-VALUE and MAX-VALUE arguments of `make-progress-reporter' can
489now be nil, or omitted. This makes a "non-numeric" reporter. Each
490time you call `progress-reporter-update' on that progress reporter,
491with a nil or omitted VALUE argument, the reporter message is
492displayed with a "spinning bar".
493
494\f
495* Changes in Emacs 24.1 on non-free operating systems
496
497** New configure.bat option --enable-checking builds emacs with extra
498runtime checks.
499
500** New configure.bat option --distfiles to specify files to be
501 included in binary distribution
502
503** New make target `dist' to create binary disttribution for Windows
504 platform
505
506\f
507----------------------------------------------------------------------
508This file is part of GNU Emacs.
509
510GNU Emacs is free software: you can redistribute it and/or modify
511it under the terms of the GNU General Public License as published by
512the Free Software Foundation, either version 3 of the License, or
513(at your option) any later version.
514
515GNU Emacs is distributed in the hope that it will be useful,
516but WITHOUT ANY WARRANTY; without even the implied warranty of
517MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
518GNU General Public License for more details.
519
520You should have received a copy of the GNU General Public License
521along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
522
523\f
524Local variables:
525mode: outline
526paragraph-separate: "[ \f]*$"
527end: