NEWS 94.8 KB
Newer Older
1
GNU Emacs NEWS -- history of user-visible changes.
2

Paul Eggert's avatar
Paul Eggert committed
3
Copyright (C) 2014-2016 Free Software Foundation, Inc.
4
See the end of the file for license conditions.
Dave Love's avatar
#  
Dave Love committed
5

6
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7 8
If possible, use M-x report-emacs-bug.

9
This file is about changes in Emacs version 25.
10

Paul Eggert's avatar
Paul Eggert committed
11
See file HISTORY for a list of GNU Emacs versions and release dates.
12
See files NEWS.24, NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18,
13
and NEWS.1-17 for changes in older Emacs versions.
14

Paul Eggert's avatar
Paul Eggert committed
15
You can narrow news to a specific version by calling 'view-emacs-news'
16
with a prefix argument or by typing C-u C-h C-n.
17

18 19 20 21 22 23
Temporary note:
+++ indicates that all necessary documentation updates are complete.
    (This means all relevant manuals in doc/ AND lisp doc-strings.)
--- means no change in the manuals is needed.
When you add a new item, use the appropriate mark if you are sure it applies,
otherwise leave it unmarked.
Michael Albinus's avatar
Michael Albinus committed
24

Eli Zaretskii's avatar
Eli Zaretskii committed
25
* Installation Changes in Emacs 25.3
Michael Albinus's avatar
Michael Albinus committed
26

27 28 29
** By default libgnutls is now required when building Emacs.
Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.

Paul Eggert's avatar
Paul Eggert committed
30 31 32
** GnuTLS version 2.12.2 or later is now required, instead of merely
version 2.6.6 or later.

33
** The new option 'configure --enable-gcc-warnings=warn-only' causes
Paul Eggert's avatar
Paul Eggert committed
34 35
GCC to issue warnings without stopping the build.  This behavior is
now the default in developer builds.  As before, use
36 37 38
'--disable-gcc-warnings' to suppress GCC's warnings, and
'--enable-gcc-warnings' to stop the build if GCC issues warnings.

Paul Eggert's avatar
Paul Eggert committed
39
+++
40 41 42 43 44 45
** The Emacs server now has socket-launching support.  This allows
socket based activation, where an external process like systemd can
invoke the Emacs server process upon a socket connection event and
hand the socket over to Emacs.  Emacs uses this socket to service
emacsclient commands.  This new functionality can be disabled with the
configure option '--disable-libsystemd'.
46

Paul Eggert's avatar
-  
Paul Eggert committed
47
** New configure option '--disable-build-details' attempts to build an
Paul Eggert's avatar
Paul Eggert committed
48 49 50 51 52 53 54
Emacs that is more likely to be reproducible; that is, if you build
and install Emacs twice, the second Emacs is a copy of the first.
Deterministic builds omit the build date from the output of the
emacs-version and erc-cmd-SV functions, and the leave the following
variables nil: emacs-build-system, emacs-build-time,
erc-emacs-build-time.

Paul Eggert's avatar
Paul Eggert committed
55 56 57
** Emacs no longer works on IRIX.  We expect that Emacs users are not
affected by this, as SGI stopped supporting IRIX in December 2013.

58

Eli Zaretskii's avatar
Eli Zaretskii committed
59
* Startup Changes in Emacs 25.3
60

61

Eli Zaretskii's avatar
Eli Zaretskii committed
62
* Changes in Emacs 25.3
63

Tino Calancha's avatar
Tino Calancha committed
64
+++
Paul Eggert's avatar
Paul Eggert committed
65
** The new function 'call-shell-region' executes a command in an
Tino Calancha's avatar
Tino Calancha committed
66 67
inferior shell with the buffer region as input.

68
+++
69
** The new user option 'shell-command-dont-erase-buffer' controls
70 71 72 73
if the output buffer is erased between shell commands; if non-nil,
the output buffer is not erased; this variable also controls where
to set the point in the output buffer: beginning of the output,
end of the buffer or save the point.
74
When 'shell-command-dont-erase-buffer' is nil, the default value,
75 76 77
the behaviour of 'shell-command', 'shell-command-on-region' and
'async-shell-command' is as usual.

78 79 80 81 82 83 84
+++
** The new user option 'mouse-select-region-move-to-beginning'
controls the position of point when double-clicking mouse-1 on the end
of a parenthetical grouping or string-delimiter: the default value nil
keeps point at the end of the region, setting it to non-nil moves
point to the beginning of the region.

85
---
Paul Eggert's avatar
Paul Eggert committed
86
** 'find-library-name' will now fall back on looking at 'load-history'
87
to try to locate libraries that have been loaded with an explicit path
Paul Eggert's avatar
Paul Eggert committed
88
outside 'load-path'.
89

90
+++
Paul Eggert's avatar
Paul Eggert committed
91 92
** Faces in 'minibuffer-prompt-properties' no longer overwrite properties
in the text in functions like 'read-from-minibuffer', but instead are
93
added to the end of the face list.  This allows users to say things
Paul Eggert's avatar
Paul Eggert committed
94
like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
95

96
+++
Paul Eggert's avatar
Paul Eggert committed
97 98
** The new variable 'extended-command-suggest-shorter' has been added
to control whether to suggest shorter 'M-x' commands or not.
99

100
---
Paul Eggert's avatar
Paul Eggert committed
101
** icomplete now respects 'completion-ignored-extensions'.
102 103

+++
Paul Eggert's avatar
Paul Eggert committed
104 105
** Non-breaking hyphens are now displayed with the 'nobreak-hyphen'
face instead of the 'escape-glyph' face.
106

107
---
Paul Eggert's avatar
Paul Eggert committed
108
** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
109 110
part of minibuffers.

111
---
Paul Eggert's avatar
Paul Eggert committed
112
** 'find-library' now takes a prefix argument to pop to a different
113 114
window.

Paul Eggert's avatar
Paul Eggert committed
115 116
** 'find-library', 'help-function-def' and 'help-variable-def' now run
'find-function-after-hook'.
117 118

---
119
** 'process-attributes' on Darwin systems now returns more information.
120

121
+++
122 123
** Several accessors for the value returned by 'file-attributes'
have been added.  They are: 'file-attribute-type',
Paul Eggert's avatar
-  
Paul Eggert committed
124 125 126 127
'file-attribute-link-number', 'file-attribute-user-id',
'file-attribute-group-id', 'file-attribute-access-time',
'file-attribute-modification-time',
'file-attribute-status-change-time', 'file-attribute-size',
128 129
'file-attribute-modes', 'file-attribute-inode-number',
'file-attribute-device-number' and 'file-attribute-collect'.
130

131
+++
Glenn Morris's avatar
Glenn Morris committed
132 133
** The new function 'buffer-hash' computes a fast, non-consing hash of
a buffer's contents.
134

135
---
136
** 'fill-paragraph' no longer marks the buffer as changed unless it
137 138
actually changed something.

139
---
Paul Eggert's avatar
-  
Paul Eggert committed
140 141
** The locale language name 'ca' is now mapped to the language
environment 'Catalan', which has been added.
142

143
---
144
** 'align-regexp' has a separate history for its interactive argument.
Paul Eggert's avatar
-  
Paul Eggert committed
145
'align-regexp' no longer shares its history with all other
146
history-less functions that use 'read-string'.
147

148 149 150
+++
** The networking code has been reworked so that it's more
asynchronous than it was (when specifying :nowait t in
Paul Eggert's avatar
-  
Paul Eggert committed
151
'make-network-process').  How asynchronous it is varies based on the
152 153 154 155 156 157
capabilities of the system, but on a typical GNU/Linux system the DNS
resolution, the connection, and (for TLS streams) the TLS negotiation
are all done without blocking the main Emacs thread.  To get
asynchronous TLS, the TLS boot parameters have to be passed in (see
the manual for details).

Paul Eggert's avatar
-  
Paul Eggert committed
158
Certain process oriented functions (like 'process-datagram-address')
159 160 161 162 163
will block until socket setup has been performed.  The recommended way
to deal with asynchronous sockets is to avoid interacting with them
until they have changed status to "run".  This is most easily done
from a process sentinel.

Paul Eggert's avatar
-  
Paul Eggert committed
164
** 'make-network-process' and 'open-network-stream' sometimes allowed
Paul Eggert's avatar
Paul Eggert committed
165 166 167
:service to be an integer string (e.g., :service "993") and sometimes
required an integer (e.g., :service 993).  This difference has been
eliminated, and integer strings work everywhere.
168

169
** It is possible to disable attempted recovery on fatal signals.
170

171
Two new variables support disabling attempts to recover from stack
172
overflow and to avoid automatic auto-save when Emacs is delivered a
Paul Eggert's avatar
-  
Paul Eggert committed
173
fatal signal.  'attempt-stack-overflow-recovery', if set to 'nil',
174 175
will disable attempts to recover from C stack overflows; Emacs will
then crash as with any other fatal signal.
Paul Eggert's avatar
-  
Paul Eggert committed
176
'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
177 178
disable attempts to auto-save the session and shut down in an orderly
fashion when Emacs receives a fatal signal; instead, Emacs will
Paul Eggert's avatar
-  
Paul Eggert committed
179
terminate immediately.  Both variables are non-'nil' by default.
180 181 182 183
These variables are for users who would like to avoid the small
probability of data corruption due to techniques Emacs uses to recover
in these situations.

184 185 186 187 188
+++
** File local and directory local variables are now initialized each
time the major mode is set, not just when the file is first visited.
These local variables will thus not vanish on setting a major mode.

189 190 191 192 193 194 195 196 197
+++
** A second dir-local file (.dir-locals-2.el) is now accepted.
See the variable 'dir-locals-file-2' for more information.

---
** International domain names (IDNA) are now encoded via the new
puny.el library, so that one can visit web sites with non-ASCII URLs.

+++
198
** The new 'timer-list' command lists all active timers in a buffer,
199 200 201
where you can cancel them with the 'c' command.

+++
202 203
** The new function 'read-multiple-choice' prompts for multiple-choice
questions, with a handy way to display help texts.
204

205 206 207
+++
** 'switch-to-buffer-preserve-window-point' now defaults to t.

208 209 210 211 212
+++
** The new variable 'debugger-stack-frame-as-list' allows displaying
all call stack frames in a Lisp backtrace buffer as lists.  Both
debug.el and edebug.el have been updated to heed to this variable.

213

Eli Zaretskii's avatar
Eli Zaretskii committed
214
* Editing Changes in Emacs 25.3
215

216 217 218 219 220
+++
** New bindings for 'query-replace-map'.
'undo', undo the last replacement; bound to 'u'.
'undo-all', undo all replacements; bound to 'U'.

221 222 223 224 225 226
** 'delete-trailing-whitespace' deletes whitespace after form feed.
In modes where form feed was treated as a whitespace character,
'delete-trailing-whitespace' would keep lines containing it unchanged.
It now deletes whitespace after the last form feed thus behaving the
same as in modes where the character is not whitespace.

227 228 229 230
** No more prompt about changed file when the file's content is unchanged.
Instead of only checking the modification time, Emacs now also checks
the file's actual content before prompting the user.

Michael Albinus's avatar
Michael Albinus committed
231

Eli Zaretskii's avatar
Eli Zaretskii committed
232
* Changes in Specialized Modes and Packages in Emacs 25.3
Michael Albinus's avatar
Michael Albinus committed
233

234 235
** Ibuffer

Tino Calancha's avatar
Tino Calancha committed
236 237 238 239
---
*** A new command 'ibuffer-copy-buffername-as-kill'; bound
to 'B'.

Tino Calancha's avatar
Tino Calancha committed
240 241 242
---
*** New command 'ibuffer-change-marks'; bound to '* c'.

Tino Calancha's avatar
Tino Calancha committed
243 244 245 246 247 248 249 250 251
---
*** A new command 'ibuffer-mark-by-locked' to mark
all locked buffers;  bound to '% L'.

---
*** A new option 'ibuffer-locked-char' to indicate
locked buffers; Ibuffer shows a new column displaying
'ibuffer-locked-char' for locked buffers.

252 253 254 255 256
---
*** A new command 'ibuffer-unmark-all-marks' to unmark
all buffers without asking confirmation;  bound to
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.

257
---
Paul Eggert's avatar
Paul Eggert committed
258
*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers
259
whose content matches a regexp; bound to '% g'.
260 261

---
Paul Eggert's avatar
Paul Eggert committed
262 263 264
*** Two new options 'ibuffer-never-search-content-name' and
'ibuffer-never-search-content-mode' used by
'ibuffer-mark-by-content-regexp'.
265

Jö Fahlke's avatar
Jö Fahlke committed
266 267 268 269 270
** Compilation mode

---
*** Messages from CMake are now recognized.

271 272
** Dired

Tino Calancha's avatar
Tino Calancha committed
273 274 275 276 277 278 279 280
+++
*** A New option 'dired-always-read-filesystem' default to nil.
If non-nil, buffers visiting files are reverted before search them;
for instance, in 'dired-mark-files-containing-regexp' a non-nil value
of this option means the file is revisited in a temporary buffer;
this temporary buffer is the actual buffer searched: the original buffer
visiting the file is not modified.

281 282
+++
*** In wdired, when editing files to contain slash characters,
283 284
the resulting directories are automatically created.  Whether to do
this is controlled by the 'wdired-create-parent-directories' variable.
285 286 287 288 289

+++
*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
viewing HTML files and the like.

290 291 292 293
** Ediff

*** Ediff can be prevented from pausing 1 second after reaching a
breakpoint (e.g. with "f" and "o") by customizing the new option
294
'edebug-sit-on-break'.
295

296 297 298
** eww

+++
Paul Eggert's avatar
-  
Paul Eggert committed
299
*** A new 's' command for switching to another eww buffer via the minibuffer.
300

Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
301
---
Paul Eggert's avatar
-  
Paul Eggert committed
302 303
*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
with the 'o' command from 'image-map'.
Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
304

305 306 307 308 309 310
+++
*** A new command 'C' ('eww-toggle-colors') can be used to toggle
whether to use the HTML-specified colors or not.  The user can also
customize the 'shr-use-colors' variable.

---
311
*** Images that are being loaded are now marked with gray
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
"placeholder" images of the size specified by the HTML.  They are then
replaced by the real images asynchronously, which will also now
respect width/height HTML specs (unless they specify widths/heights
bigger than the current window).

** Images

+++
*** Images are automatically scaled before displaying based on the
'image-scaling-factor' variable (if Emacs supports scaling the images
in question).

+++
*** Images inserted with 'insert-image' and related functions get a
keymap put into the text properties (or overlays) that span the
image.  This keymap binds keystrokes for manipulating size and
rotation, as well as saving the image to a file.  These commands are
also available in 'image-mode'.

+++
*** A new library for creating and manipulating SVG images has been
added.  See the "SVG Images" section in the lispref manual for
details.

+++
*** New setf-able function to access and set image parameters is
provided: 'image-property'.

340 341 342 343 344
---
** The default 'Info-default-directory-list' no longer checks some obsolete
directory suffixes (gnu, gnu/lib, gnu/lib/emacs, emacs, lib, lib/emacs)
when searching for info directories.

345 346 347
+++
** The commands that add ChangeLog entries now prefer a VCS root directory
for the ChangeLog file, if none already exists.  Customize
Paul Eggert's avatar
-  
Paul Eggert committed
348
'change-log-directory-files' to nil for the old behavior.
349

350
---
Paul Eggert's avatar
-  
Paul Eggert committed
351
** Support for non-string values of 'time-stamp-format' has been removed.
352

353 354 355
** Message

---
356
*** 'message-use-idna' now defaults to t (because Emacs comes with
357 358
built-in IDNA support now).

359 360 361 362 363 364 365
---
*** When sending HTML messages with embedded images, and you have
exiftool installed, and you rotate images with EXIF data (i.e.,
JPEGs), the rotational information will be inserted into the outgoing
image in the message.  (The original image will not have its
orientation affected.)

366 367 368 369 370 371 372 373 374 375 376 377 378
---
*** The 'message-valid-fqdn-regexp' variable has been removed, since
there are now top-level domains added all the time.  Message will no
longer warn about sending emails to top-level domains it hasn't heard
about.

*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
In 'visual-line-mode' it will look for the true beginning of a header
while in non-'visual-line-mode' it will move the point to the indented
header's value.

** Tramp

379
+++
380
*** New connection method "sg", which supports editing files under a
Michael Albinus's avatar
Michael Albinus committed
381 382
different group ID.

383 384 385
+++
*** New connection method "doas" for OpenBSD hosts.

386 387 388 389
+++
*** New connection method "gdrive", which allows to access Google
Drive onsite repositories.

Michael Albinus's avatar
Michael Albinus committed
390
+++
Paul Eggert's avatar
Paul Eggert committed
391
Setting the "ENV" environment variable in 'tramp-remote-process-environment'
Michael Albinus's avatar
Michael Albinus committed
392 393
enables reading of shell initialization files.

Michael Albinus's avatar
Michael Albinus committed
394
---
Paul Eggert's avatar
-  
Paul Eggert committed
395
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
Michael Albinus's avatar
Michael Albinus committed
396

397 398 399
** CSS mode

---
400 401 402 403
*** Support for completing attribute values, at-rules, bang-rules,
HTML tags, classes and IDs using the 'completion-at-point' command.
Completion candidates for HTML classes and IDs are retrieved from open
HTML mode buffers.
404

405 406 407 408 409
+++
** Emacs now supports character name escape sequences in character and
string literals.  The syntax variants \N{character name} and
\N{U+code} are supported.

410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433
+++
** Prog mode has some support for multi-mode indentation.
This allows better indentation support in modes that support multiple
programming languages in the same buffer, like literate programming
environments or ANTLR programs with embedded Python code.

A major mode can provide indentation context for a sub-mode through
the 'prog-indentation-context' variable.  To support this, modes that
provide indentation should use 'prog-widen' instead of 'widen' and
'prog-first-column' instead of a literal zero.  See the node
"Mode-Specific Indent" in the ELisp manual for more details.

** ERC

*** New variable 'erc-default-port-tls' used to connect to TLS IRC
servers.

** URL

+++
*** The new function 'url-cookie-delete-cookie' can be used to
programmatically delete all cookies, or cookies from a specific
domain.

434
+++
Paul Eggert's avatar
Paul Eggert committed
435
*** 'url-retrieve-synchronously' now takes an optional timeout parameter.
436 437

---
438
*** The URL package now support HTTPS over proxies supporting CONNECT.
439

440
+++
441 442
*** 'url-user-agent' now defaults to 'default', and the User-Agent
string is computed dynamically based on 'url-privacy-level'.
443

444 445 446 447 448 449 450
** VC and related modes

---
*** The VC state indicator in the mode line now defaults to more
colorful faces to make it more obvious to the user what the state is.
See the 'vc-faces' customization group.

451 452 453 454 455 456 457
** CC mode

*** Opening a .h file will turn C or C++ mode depending on language used.
This is done with the help of 'c-or-c++-mode' function which analyses
contents of the buffer to determine whether it's a C or C++ source
file.

458

Eli Zaretskii's avatar
Eli Zaretskii committed
459
* New Modes and Packages in Emacs 25.3
460

Paul Eggert's avatar
Paul Eggert committed
461
** New Elisp data-structure library 'radix-tree'.
462

463

Eli Zaretskii's avatar
Eli Zaretskii committed
464
* Incompatible Lisp Changes in Emacs 25.3
465

466
+++
Paul Eggert's avatar
-  
Paul Eggert committed
467 468
** Resizing a frame no longer runs 'window-configuration-change-hook'.
Put your function on 'window-size-change-functions' instead.
469

470 471 472 473 474 475
** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
mode to send the same escape sequences that xterm does.  This makes
things like forward-word in readline work.

---
** hideshow mode got four key bindings that are analogous to outline
476
mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
477 478 479 480 481

** The grep/rgrep/lgrep functions will now ask about saving files
before running.  This is controlled by the 'grep-save-buffers'
variable.

482 483 484 485 486 487
+++
** The variable 'text-quoting-style' no longer affects the treatment
of curved quotes in format arguments to functions like 'message' and
'format-message'.  In particular, when this variable's value is
'grave', all quotes in formats are output as-is.

488 489 490 491
** Functions like 'check-declare-file' and 'check-declare-directory'
now generate less chatter and more-compact diagnostics.  The auxiliary
function 'check-declare-errmsg' has been removed.

492

Eli Zaretskii's avatar
Eli Zaretskii committed
493
* Lisp Changes in Emacs 25.3
494

495 496 497
** New function undo-amalgamate-change-group to get rid of undo-boundaries
between two states.

Paul Eggert's avatar
Paul Eggert committed
498
** New var 'definition-prefixes' is a hashtable mapping prefixes to the
499
files where corresponding definitions can be found.  This can be used
Paul Eggert's avatar
Paul Eggert committed
500
to fetch definitions that are not yet loaded, for example for 'C-h f'.
501

502
** New var syntax-ppss-table to control the syntax-table used in syntax-ppss.
503

504
+++
505
** 'define-derived-mode' can now specify an :after-hook form, which
506 507 508 509
gets evaluated after the new mode's hook has run.  This can be used to
incorporate configuration changes made in the mode hook into the
mode's setup.

510
** Autoload files can be generated without timestamps,
Paul Eggert's avatar
-  
Paul Eggert committed
511
by setting 'autoload-timestamps' to nil.
512 513
FIXME As an experiment, nil is the current default.
If no insurmountable problems before next release, it can stay that way.
514

515
---
Paul Eggert's avatar
-  
Paul Eggert committed
516
** 'gnutls-boot' now takes a parameter :complete-negotiation that says
517 518
that negotiation should complete even on non-blocking sockets.

519
+++
Paul Eggert's avatar
-  
Paul Eggert committed
520
** New functions 'window-pixel-width-before-size-change' and
521 522
'window-pixel-height-before-size-change' support detecting which
window changed size when 'window-size-change-functions' are run.
523

524
+++
Paul Eggert's avatar
-  
Paul Eggert committed
525 526
** New function 'display-buffer-reuse-mode-window' is an action function
suitable for use in 'display-buffer-alist'. For example, to avoid creating
527 528
a new window when opening man pages when there's already one, use
(add-to-list 'display-buffer-alist
529
     '("\\`\\*Man .*\\*\\'" .
530 531 532 533
       (display-buffer-reuse-mode-window
        (inhibit-same-window . nil)
        (mode . Man-mode))))

534 535 536 537 538 539 540 541
---
** There is now a new variable 'flyspell-sort-corrections-function'
that allows changing the way corrections are sorted.

---
** The new command 'fortune-message' has been added, which displays
fortunes in the echo area.

Paul Pogonyshev's avatar
Paul Pogonyshev committed
542 543
+++
** New function 'func-arity' returns information about the argument list
544 545 546
of an arbitrary function.  This generalizes 'subr-arity' for functions
that are not built-in primitives.  We recommend using this new
function instead of 'subr-arity'.
Paul Pogonyshev's avatar
Paul Pogonyshev committed
547

548
+++
Paul Eggert's avatar
-  
Paul Eggert committed
549
** 'parse-partial-sexp' state has a new element.  Element 10 is
550
non-nil when the last character scanned might be the first character
551
of a two character construct, i.e., a comment delimiter or escaped
552 553 554
character.  Its value is the syntax of that last character.

+++
Paul Eggert's avatar
-  
Paul Eggert committed
555
** 'parse-partial-sexp''s state, element 9, has now been confirmed as
556 557 558 559
permanent and documented, and may be used by Lisp programs.  Its value
is a list of currently open parenthesis positions, starting with the
outermost parenthesis.

560 561 562 563
---
** 'read-color' will now display the color names using the color itself
as the background color.

564 565 566
** The function 'redirect-debugging-output' now works on platforms
other than GNU/Linux.

567 568 569 570 571 572
+++
** The new function 'string-version-lessp' compares strings by
interpreting consecutive runs of numerical characters as numbers, and
compares their numerical values.  According to this predicate,
"foo2.png" is smaller than "foo12.png".

573 574 575 576
+++
** The new function 'char-from-name' converts a Unicode name string
to the corresponding character code.

577 578 579 580 581 582 583 584 585 586 587
+++
** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
Lisp object suitable for use with 'eq' and 'eql' correspondingly.  If
two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
('sxhash-eql') on them will be the same.

+++
** Function 'sxhash' has been renamed to 'sxhash-equal' for
consistency with the new functions.  For compatibility, 'sxhash'
remains as an alias to 'sxhash-equal'.

588 589 590 591 592 593 594 595
+++
** Time conversion functions that accept a time zone rule argument now
allow it to be OFFSET or a list (OFFSET ABBR), where the integer
OFFSET is a count of seconds east of Universal Time, and the string
ABBR is a time zone abbreviation.  The affected functions are
'current-time-string', 'current-time-zone', 'decode-time',
'format-time-string', and 'set-time-zone-rule'.

596 597 598 599
+++
*** New basic face 'fixed-pitch-serif', for a fixed-width font with serifs.
The Info-quoted and tex-verbatim faces now default to inheriting from it.

Paul Eggert's avatar
Paul Eggert committed
600
** New built-in function 'mapcan' which avoids unnecessary consing (and garbage
601 602 603
collection).

+++
Paul Eggert's avatar
Paul Eggert committed
604
** The new functions 'make-nearby-temp-file' and 'temporary-file-directory'
605
can be used for creation of temporary files of remote or mounted directories.
Mario Lang's avatar
Mario Lang committed
606

607

Eli Zaretskii's avatar
Eli Zaretskii committed
608
* Changes in Emacs 25.3 on Non-Free Operating Systems
609

610 611 612
** Intercepting hotkeys on Windows 7 and later now works better.
The new keyboard hooking code properly grabs system hotkeys such as
Win-* and Alt-TAB, in a way that Emacs can get at them before the
Paul Eggert's avatar
-  
Paul Eggert committed
613
system.  This makes the 'w32-register-hot-key' functionality work
614 615 616 617 618
again on all versions of MS-Windows starting with Windows 7.  On
Windows NT and later you can now register any hotkey combination.  (On
Windows 9X, the previous limitations, spelled out in the Emacs manual,
still apply.)

Paul Eggert's avatar
Paul Eggert committed
619
** 'convert-standard-filename' no longer mirrors slashes on MS-Windows.
620
Previously, on MS-Windows this function converted slash characters in
621 622 623 624 625 626 627 628 629 630
file names into backslashes.  It no longer does that.  If your Lisp
program used 'convert-standard-filename' to prepare file names to be
passed to subprocesses (which is not the recommended usage of that
function), you will now have to mirror slashes in your application
code.  One possible way is this:

         (let ((start 0))
           (while (string-match "/" file-name start)
             (aset file-name (match-beginning 0) ?\\)
             (setq start (match-end 0))))
631

632 633 634 635 636 637 638
** GUI sessions now treat SIGINT like Posix platforms do.
The effect of delivering a Ctrl-C (SIGINT) signal to a GUI Emacs on
MS-Windows is now the same as on Posix platforms -- Emacs saves the
session and exits.  In particular, this will happen if you start
emacs.exe from the Windows shell, then type Ctrl-C into that shell's
window.

639

Stefan Monnier's avatar
Stefan Monnier committed
640
* Installation Changes in Emacs 25.1
641

Paul Eggert's avatar
Paul Eggert committed
642 643
** Building Emacs now requires C99 or later.

644
** Building Emacs now requires GNU make, version 3.81 or later.
Glenn Morris's avatar
Glenn Morris committed
645

646
** New configure option --with-cairo.
647 648
This builds Emacs with Cairo drawing.  As a side effect, it provides
support for built-in printing, when Emacs was built with GTK+.
649 650 651 652
The Emacs Cairo drawing is experimental and still has some known
display problems.  We encourage more testing of this build and
reporting any problems you find, but it is not recommended for
production.
653

654 655 656
** New configure option --with-modules.
This enables support for loading dynamic modules; see below.

Paul Eggert's avatar
Paul Eggert committed
657 658 659 660 661 662 663
** By default, Emacs no longer works on IRIX.  We expect that Emacs
users are not affected by this, as SGI stopped supporting IRIX in
December 2013.  If you are affected, please send a bug report.  You
should be able to work around the problem either by porting the Emacs
undumping code to GCC under IRIX, or by configuring --with-wide-int,
or by sticking with Emacs 24.4.

664 665 666 667 668 669
** The Emacs garbage collector assumes GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
The GC_MAKE_GCPROS_NOOPS stack-marking variant has been the default
since Emacs 24.4, and the other variants were undocumented and were
obstacles to maintenance and development.  GC_MARK_STACK and its
related symbols have been removed from the C internals.

Paul Eggert's avatar
Paul Eggert committed
670 671 672
** 'configure' now prefers gnustep-config when configuring GNUstep.
If gnustep-config is not available, the old heuristics are used.

673 674 675
** 'configure' now prefers inotify to gfile for file notification,
unless gfile is explicitly requested via --with-file-notification='gfile'.

676 677 678
** 'configure' detects the kqueue file notification library on *BSD
and Mac OS X machines.

679
** The configure option '--with-pkg-config-prog' has been removed.
680
Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
681

682 683 684 685 686 687
** The configure option '--with-mmdf' has been removed.
It was no longer useful, as it relied on libraries that are no longer
supported, and its presence led to confusion during configuration.
This affects only the 'movemail' utility; Emacs itself can still
process MMDF-format files as before.

688 689 690 691
** The configure option '--enable-silent-rules' is now the default,
and silent rules are now quieter.  To get the old behavior where
'make' chatters a lot, configure with '--disable-silent-rules' or
build with 'make V=1'.
692

693
** The configure option '--with-gameuser' now allows you to specify a
694
group instead of a user if its argument is prefixed by ':' (a colon).
695
This will cause the game score files in "${localstatedir}/games/emacs"
696
to be owned by that group, and the helper program for updating them to
697
be installed setgid.  The option now defaults to the 'games' group.
698

Paul Eggert's avatar
Paul Eggert committed
699
** The 'grep-changelog' script (and its manual page) are no longer included.
Glenn Morris's avatar
Glenn Morris committed
700 701 702
It has no particular connection to Emacs and has not changed in years,
so if you want to use it, you can always take a copy from an older Emacs.

NicolasPetton's avatar
NicolasPetton committed
703 704
** Emacs 25 comes with a new set of icons.
Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
Paul Eggert's avatar
Paul Eggert committed
705
The old Emacs logo icons are available as 'emacs23.png' in the same location.
NicolasPetton's avatar
NicolasPetton committed
706

Paul Eggert's avatar
Paul Eggert committed
707
** New make target 'check-expensive' to run additional tests.
708 709 710
This includes all tests which run via "make check", plus additional
tests which take more time to perform.

711

Stefan Monnier's avatar
Stefan Monnier committed
712
* Startup Changes in Emacs 25.1
713

714
** When Emacs is given a file as a command line argument and
Paul Eggert's avatar
Paul Eggert committed
715 716 717
'initial-buffer-choice' is non-nil, display both the file and
'initial-buffer-choice'.  When Emacs is given more than one file and
'initial-buffer-choice' is non-nil, show 'initial-buffer-choice'
718
and '*Buffer List*'.  This makes Emacs convenient to use from the
Paul Eggert's avatar
Paul Eggert committed
719
command line when 'initial-buffer-choice' is non-nil.
720

Paul Eggert's avatar
Paul Eggert committed
721
** The value of 'initial-scratch-message' is now treated as a doc string
722 723
and can contain escape sequences for command keys, quotes, and the like.

724 725 726 727 728
** The default height of GUI frames was enlarged.
This is so there's enough space in the initial window to display the
optional text about recovering crashes sessions, without losing the
splash image display.

729

Stefan Monnier's avatar
Stefan Monnier committed
730
* Changes in Emacs 25.1
731

732
** Xwidgets: a new feature for embedding native widgets inside Emacs buffers.
733
If you have gtk3 and webkitgtk3 installed, and Emacs was built with
Paul Eggert's avatar
Paul Eggert committed
734
xwidget support, you can access the embedded webkit browser with 'M-x
735
xwidget-webkit-browse-url'.  This opens a new buffer with the embedded
Paul Eggert's avatar
Paul Eggert committed
736 737
browser.  The buffer will have a new mode, 'xwidget-webkit-mode'
(similar to 'image-mode'), which supports the webkit widget.
738

Paul Eggert's avatar
Paul Eggert committed
739 740 741 742 743 744
*** New functions for xwidget-webkit mode 'xwidget-webkit-insert-string',
'xwidget-webkit-adjust-size-dispatch', 'xwidget-webkit-back',
'xwidget-webkit-browse-url', 'xwidget-webkit-reload',
'xwidget-webkit-current-url', 'xwidget-webkit-scroll-backward',
'xwidget-webkit-scroll-forward', 'xwidget-webkit-scroll-down',
'xwidget-webkit-scroll-up'.
745

746 747 748
** Emacs can now load shared/dynamic libraries (modules).
A dynamic Emacs module is a shared library that provides additional
functionality for use in Emacs Lisp programs, just like a package
Paul Eggert's avatar
Paul Eggert committed
749 750 751 752
written in Emacs Lisp would.  The functions 'load', 'require',
'load-file', etc. were extended to load such modules, as they do with
Emacs Lisp packages.  The new variable 'module-file-suffix' holds the
system-dependent value of the file-name extension ('.so' on Posix
753
hosts) of the module files.
Eli Zaretskii's avatar
Eli Zaretskii committed
754

755
A module should export a C-callable function named
Paul Eggert's avatar
Paul Eggert committed
756 757 758
'emacs_module_init', which Emacs will call as part of the call to
'load' or 'require' which loads the module.  It should also export a
symbol named 'plugin_is_GPL_compatible' to indicate that its code is
759 760
released under the GPL or compatible license; Emacs will refuse to
load modules that don't export such a symbol.
761

762
If a module needs to call Emacs functions, it should do so through the
Paul Eggert's avatar
Paul Eggert committed
763
API defined and documented in the header file 'emacs-module.h'.  Note
764
that any module that provides Lisp-callable functions will have to use
Paul Eggert's avatar
Paul Eggert committed
765
Emacs functions such as 'fset' and 'funcall', in order to register its
766
functions with the Emacs Lisp interpreter.
767

Paul Eggert's avatar
Paul Eggert committed
768
Modules can create 'user-ptr' Lisp objects that embed pointers to C
769
structs defined by the module.  This is useful for keeping around
770 771 772 773 774
complex data structures created by a module, to be passed back to the
module's functions.  User-ptr objects can also have associated
"finalizers" -- functions to be run when the object is GC'ed; this is
useful for freeing any resources allocated for the underlying data
structure, such as memory, open file descriptors, etc.  A new
Paul Eggert's avatar
Paul Eggert committed
775
predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr'
776 777 778 779
object.

Loadable modules in Emacs are an experimental feature, and subject to
change in future releases.  For that reason, their support is disabled
Paul Eggert's avatar
Paul Eggert committed
780
by default, and must be enabled by using the '--with-modules' option
781
at configure time.
782

783 784
** Network security (TLS/SSL certificate validity and the like) is
added via the new Network Security Manager (NSM) and controlled via
Paul Eggert's avatar
Paul Eggert committed
785
the 'network-security-level' variable.
786

787
** 'C-h l' now also lists the commands that were run.
788

789 790
** 'x-select-enable-clipboard' is renamed 'select-enable-clipboard'
and 'x-select-enable-primary' is renamed 'select-enable-primary'.
791 792
Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
name it), with the proviso that on some systems (e.g. Windows)
793
'select-enable-primary' is ineffective since the system doesn't
794
have the equivalent of a primary selection.
Stefan Monnier's avatar
Stefan Monnier committed
795

Paul Eggert's avatar
Paul Eggert committed
796 797
** New option 'switch-to-buffer-in-dedicated-window' allows you to
customize how 'switch-to-buffer' proceeds interactively when the
798
selected window is strongly dedicated to its buffer.
799

Paul Eggert's avatar
Paul Eggert committed
800 801
** The option 'even-window-heights' has been renamed to
'even-window-sizes' and now handles window widths as well.
802

803
** 'terpri' gets an optional arg ENSURE to conditionally output a newline.
Leo Liu's avatar
Leo Liu committed
804

Paul Eggert's avatar
Paul Eggert committed
805
** 'insert-register' now leaves point after the inserted text
806
when called interactively.  A prefix argument toggles this behavior.
807

Paul Eggert's avatar
Paul Eggert committed
808 809
** The new variable 'term-file-aliases' replaces some files from lisp/term.
The function 'tty-run-terminal-initialization' consults this variable
810 811
when deciding what terminal-specific initialization code to run.

Paul Eggert's avatar
Paul Eggert committed
812
** New variable 'system-configuration-features', listing some of the
813 814 815
main features that Emacs was compiled with.  This is mainly intended
for use in Emacs bug reports.

816
** A password is now hidden also when typed in batch mode.  Another
Paul Eggert's avatar
Paul Eggert committed
817 818
hiding character but the default '.' can be used by let-binding the
variable 'read-hide-char'.
819

820
** The Emacs pseudo-random number generator can be securely seeded.
821
On systems where Emacs can access the system entropy or some other
Paul Eggert's avatar
Paul Eggert committed
822
cryptographically secure random stream, it now uses that when 'random'
823
is called with its argument t.  This allows cryptographically strong
824 825 826
random values; in particular, the Emacs server now uses this facility
to produce its authentication key.

827
** New input methods: 'tamil-dvorak', 'programmer-dvorak' and 'probhat'.
828

829

Stefan Monnier's avatar
Stefan Monnier committed
830
* Editing Changes in Emacs 25.1
831

832
** 'M-x' suggests shorthands and ignores obsolete commands for completion.
833

834
** Changes in undo
835

836 837
*** Successive single-char deletions are collapsed in the undo-log just like
successive char insertions.  Which commands invoke this behavior is
Paul Eggert's avatar
Paul Eggert committed
838
controlled by the new 'undo-auto-amalgamate' function.  See the node
839
"Undo" in the ELisp manual for more details.
840

Paul Eggert's avatar
Paul Eggert committed
841
*** The heuristic used to insert 'undo-boundary' after each command
842
has changed, so that if a command causes changes in more than just the
Paul Eggert's avatar
Paul Eggert committed
843
current buffer, Emacs now calls 'undo-boundary' in every buffer
844
affected by the command.
845

Paul Eggert's avatar
Paul Eggert committed
846
** New command 'comment-line' bound to 'C-x C-;'.
847

Eli Zaretskii's avatar
Eli Zaretskii committed
848
** New and improved facilities for inserting Unicode characters
849

850 851
*** Unicode names entered via 'C-x 8 RET' now use substring completion
by default.
852

853
*** 'C-x 8' now has shorthands for several chars, such as U+2010
Paul Eggert's avatar
Paul Eggert committed
854
(HYPHEN), U+2011 (NON-BREAKING HYPHEN), and U+2012 (FIGURE DASH).  As
855
before, you can type 'C-x 8 C-h' to list shorthands.
856

857
*** New minor mode 'electric-quote-mode' for using curved quotes as you
Paul Eggert's avatar
Paul Eggert committed
858
type.  See also the new variable 'text-quoting-style'.
Paul Eggert's avatar
Paul Eggert committed
859

860
** New minor mode 'global-eldoc-mode' is enabled by default.
861

862 863 864 865 866 867 868 869 870 871 872
** Emacs now uses "bracketed paste mode" on text terminals that support it.
Bracketed paste mode causes text terminals to wrap pasted text in special
escape sequences that allow Emacs to tell the difference between text
you type and text you paste from other applications.  Emacs then
avoids interpreting each character in the pasted text as it does with
keyboard input, which results in a paste experience similar to that
under a window system, and significant performance improvements when
pasting large amounts of text.

Bracketed paste mode is disabled by default, so Emacs automatically
enables it at startup if the terminal supports it.
873

Eli Zaretskii's avatar
Eli Zaretskii committed
874 875 876
** Emacs now supports the latest version of the UBA.
The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
was updated to support all the latest additions and changes introduced
877 878 879 880
in Unicode Standard versions 6.3, 7.0, and the latest Unicode 8.0.
This includes full support for directional isolates and the
Bidirectional Parentheses Algorithm (BPA) specified by these Unicode
standards.
Eli Zaretskii's avatar
Eli Zaretskii committed
881

882
** You can access 'mouse-buffer-menu' ('C-down-mouse-1') using 'C-f10'.
883

Paul Eggert's avatar
Paul Eggert committed
884
** New buffer-local 'electric-pair-local-mode'.
Tom Willemse's avatar
Tom Willemse committed
885

Paul Eggert's avatar
Paul Eggert committed
886
** New variable 'fast-but-imprecise-scrolling' inhibits
887
fontification during full screen scrolling operations, giving less
888
hesitant operation during auto-repeat of 'C-v', 'M-v' at the cost of
889 890
possible inaccuracies in the end position.

Paul Eggert's avatar
Paul Eggert committed
891 892
** New documentation command 'describe-symbol'.
Works for functions, variables, faces, etc.  It is bound to 'C-h o' by
893 894
default.

Paul Eggert's avatar
Paul Eggert committed
895
** New function 'custom-prompt-customize-unsaved-options' checks for
896 897 898
unsaved customizations and prompts user to customize (if found).  It
is intended for adding to 'kill-emacs-query-functions'.