NEWS 94.2 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

Michael Albinus's avatar
Michael Albinus committed
18 19 20

* Installation Changes in Emacs 25.2

21 22 23
** 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
24 25 26
** GnuTLS version 2.12.2 or later is now required, instead of merely
version 2.6.6 or later.

27
** The new option 'configure --enable-gcc-warnings=warn-only' causes
Paul Eggert's avatar
Paul Eggert committed
28 29
GCC to issue warnings without stopping the build.  This behavior is
now the default in developer builds.  As before, use
30 31 32
'--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
33
+++
34 35 36 37 38 39
** 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'.
40

Paul Eggert's avatar
-  
Paul Eggert committed
41
** New configure option '--disable-build-details' attempts to build an
Paul Eggert's avatar
Paul Eggert committed
42 43 44 45 46 47 48
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
49 50 51
** Emacs no longer works on IRIX.  We expect that Emacs users are not
affected by this, as SGI stopped supporting IRIX in December 2013.

52 53 54

* Startup Changes in Emacs 25.2

55 56 57

* Changes in Emacs 25.2

Tino Calancha's avatar
Tino Calancha committed
58
+++
Paul Eggert's avatar
Paul Eggert committed
59
** The new function 'call-shell-region' executes a command in an
Tino Calancha's avatar
Tino Calancha committed
60 61
inferior shell with the buffer region as input.

62
+++
63
** The new user option 'shell-command-dont-erase-buffer' controls
64 65 66 67
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.
68
When 'shell-command-dont-erase-buffer' is nil, the default value,
69 70 71
the behaviour of 'shell-command', 'shell-command-on-region' and
'async-shell-command' is as usual.

72 73 74 75 76 77 78
+++
** 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.

79
---
Paul Eggert's avatar
Paul Eggert committed
80
** 'find-library-name' will now fall back on looking at 'load-history'
81
to try to locate libraries that have been loaded with an explicit path
Paul Eggert's avatar
Paul Eggert committed
82
outside 'load-path'.
83

84
+++
Paul Eggert's avatar
Paul Eggert committed
85 86
** Faces in 'minibuffer-prompt-properties' no longer overwrite properties
in the text in functions like 'read-from-minibuffer', but instead are
87
added to the end of the face list.  This allows users to say things
Paul Eggert's avatar
Paul Eggert committed
88
like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
89

90
+++
Paul Eggert's avatar
Paul Eggert committed
91 92
** The new variable 'extended-command-suggest-shorter' has been added
to control whether to suggest shorter 'M-x' commands or not.
93

94
---
Paul Eggert's avatar
Paul Eggert committed
95
** icomplete now respects 'completion-ignored-extensions'.
96 97

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

101
---
Paul Eggert's avatar
Paul Eggert committed
102
** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
103 104
part of minibuffers.

105
---
Paul Eggert's avatar
Paul Eggert committed
106
** 'find-library' now takes a prefix argument to pop to a different
107 108
window.

Paul Eggert's avatar
Paul Eggert committed
109 110
** 'find-library', 'help-function-def' and 'help-variable-def' now run
'find-function-after-hook'.
111 112

---
113
** 'process-attributes' on Darwin systems now returns more information.
114

115
+++
116 117
** Several accessors for the value returned by 'file-attributes'
have been added.  They are: 'file-attribute-type',
Paul Eggert's avatar
-  
Paul Eggert committed
118 119 120 121
'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',
122 123
'file-attribute-modes', 'file-attribute-inode-number',
'file-attribute-device-number' and 'file-attribute-collect'.
124

125
+++
Glenn Morris's avatar
Glenn Morris committed
126 127
** The new function 'buffer-hash' computes a fast, non-consing hash of
a buffer's contents.
128

129
---
130
** 'fill-paragraph' no longer marks the buffer as changed unless it
131 132
actually changed something.

133
---
Paul Eggert's avatar
-  
Paul Eggert committed
134 135
** The locale language name 'ca' is now mapped to the language
environment 'Catalan', which has been added.
136

137
---
138
** 'align-regexp' has a separate history for its interactive argument.
Paul Eggert's avatar
-  
Paul Eggert committed
139
'align-regexp' no longer shares its history with all other
140
history-less functions that use 'read-string'.
141

142 143 144
+++
** 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
145
'make-network-process').  How asynchronous it is varies based on the
146 147 148 149 150 151
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
152
Certain process oriented functions (like 'process-datagram-address')
153 154 155 156 157
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
158
** 'make-network-process' and 'open-network-stream' sometimes allowed
Paul Eggert's avatar
Paul Eggert committed
159 160 161
: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.
162

163
** It is possible to disable attempted recovery on fatal signals.
164

165
Two new variables support disabling attempts to recover from stack
166
overflow and to avoid automatic auto-save when Emacs is delivered a
Paul Eggert's avatar
-  
Paul Eggert committed
167
fatal signal.  'attempt-stack-overflow-recovery', if set to 'nil',
168 169
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
170
'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
171 172
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
173
terminate immediately.  Both variables are non-'nil' by default.
174 175 176 177
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.

178 179 180 181 182
+++
** 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.

183 184 185 186 187 188 189 190 191
+++
** 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.

+++
192
** The new 'timer-list' command lists all active timers in a buffer,
193 194 195
where you can cancel them with the 'c' command.

+++
196 197
** The new function 'read-multiple-choice' prompts for multiple-choice
questions, with a handy way to display help texts.
198

199 200 201
+++
** 'switch-to-buffer-preserve-window-point' now defaults to t.

202 203 204

* Editing Changes in Emacs 25.2

205 206 207 208 209
+++
** New bindings for 'query-replace-map'.
'undo', undo the last replacement; bound to 'u'.
'undo-all', undo all replacements; bound to 'U'.

210 211 212 213 214 215
** '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.

216 217 218 219
** 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
220 221 222

* Changes in Specialized Modes and Packages in Emacs 25.2

223 224
** Ibuffer

Tino Calancha's avatar
Tino Calancha committed
225 226 227 228
---
*** A new command 'ibuffer-copy-buffername-as-kill'; bound
to 'B'.

Tino Calancha's avatar
Tino Calancha committed
229 230 231
---
*** New command 'ibuffer-change-marks'; bound to '* c'.

Tino Calancha's avatar
Tino Calancha committed
232 233 234 235 236 237 238 239 240
---
*** 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.

241 242 243 244 245
---
*** A new command 'ibuffer-unmark-all-marks' to unmark
all buffers without asking confirmation;  bound to
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.

246
---
Paul Eggert's avatar
Paul Eggert committed
247
*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers
248
whose content matches a regexp; bound to '% g'.
249 250

---
Paul Eggert's avatar
Paul Eggert committed
251 252 253
*** Two new options 'ibuffer-never-search-content-name' and
'ibuffer-never-search-content-mode' used by
'ibuffer-mark-by-content-regexp'.
254

Jö Fahlke's avatar
Jö Fahlke committed
255 256 257 258 259
** Compilation mode

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

260 261
** Dired

Tino Calancha's avatar
Tino Calancha committed
262 263 264 265 266 267 268 269
+++
*** 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.

270 271
+++
*** In wdired, when editing files to contain slash characters,
272 273
the resulting directories are automatically created.  Whether to do
this is controlled by the 'wdired-create-parent-directories' variable.
274 275 276 277 278

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

279 280 281 282
** Ediff

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

285 286 287
** eww

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

Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
290
---
Paul Eggert's avatar
-  
Paul Eggert committed
291 292
*** 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
293

294 295 296 297 298 299
+++
*** 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.

---
300
*** Images that are being loaded are now marked with gray
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
"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'.

329 330 331 332 333
---
** 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.

334 335 336
+++
** 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
337
'change-log-directory-files' to nil for the old behavior.
338

339
---
Paul Eggert's avatar
-  
Paul Eggert committed
340
** Support for non-string values of 'time-stamp-format' has been removed.
341

342 343 344
** Message

---
345
*** 'message-use-idna' now defaults to t (because Emacs comes with
346 347
built-in IDNA support now).

348 349 350 351 352 353 354
---
*** 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.)

355 356 357 358 359 360 361 362 363 364 365 366 367
---
*** 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

368
+++
369
*** New connection method "sg", which supports editing files under a
Michael Albinus's avatar
Michael Albinus committed
370 371
different group ID.

372 373 374
+++
*** New connection method "doas" for OpenBSD hosts.

375 376 377 378
+++
*** New connection method "gdrive", which allows to access Google
Drive onsite repositories.

Michael Albinus's avatar
Michael Albinus committed
379
+++
Paul Eggert's avatar
Paul Eggert committed
380
Setting the "ENV" environment variable in 'tramp-remote-process-environment'
Michael Albinus's avatar
Michael Albinus committed
381 382
enables reading of shell initialization files.

Michael Albinus's avatar
Michael Albinus committed
383
---
Paul Eggert's avatar
-  
Paul Eggert committed
384
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
Michael Albinus's avatar
Michael Albinus committed
385

386 387 388
** CSS mode

---
389 390
*** Support for completing attribute values, at-rules, bang-rules, and
HTML tags using the 'completion-at-point' command.
391

392 393 394 395 396
+++
** Emacs now supports character name escape sequences in character and
string literals.  The syntax variants \N{character name} and
\N{U+code} are supported.

397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
+++
** 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.

421
+++
Paul Eggert's avatar
Paul Eggert committed
422
*** 'url-retrieve-synchronously' now takes an optional timeout parameter.
423 424

---
425
*** The URL package now support HTTPS over proxies supporting CONNECT.
426

427
+++
428 429
*** 'url-user-agent' now defaults to 'default', and the User-Agent
string is computed dynamically based on 'url-privacy-level'.
430

431 432 433 434 435 436 437
** 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.

438 439 440 441 442 443 444
** 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.

445 446 447

* New Modes and Packages in Emacs 25.2

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

450 451 452

* Incompatible Lisp Changes in Emacs 25.2

453
+++
Paul Eggert's avatar
-  
Paul Eggert committed
454 455
** Resizing a frame no longer runs 'window-configuration-change-hook'.
Put your function on 'window-size-change-functions' instead.
456

457 458 459 460 461 462
** '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
463
mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
464 465 466 467 468

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

469 470 471 472 473 474
+++
** 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.

475 476 477 478
** 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.

479 480 481

* Lisp Changes in Emacs 25.2

482 483 484
** New function undo-amalgamate-change-group to get rid of undo-boundaries
between two states.

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

489
** New var syntax-ppss-table to control the syntax-table used in syntax-ppss.
490

491
+++
492
** 'define-derived-mode' can now specify an :after-hook form, which
493 494 495 496
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.

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

502
---
Paul Eggert's avatar
-  
Paul Eggert committed
503
** 'gnutls-boot' now takes a parameter :complete-negotiation that says
504 505
that negotiation should complete even on non-blocking sockets.

506
+++
Paul Eggert's avatar
-  
Paul Eggert committed
507
** New functions 'window-pixel-width-before-size-change' and
508 509
'window-pixel-height-before-size-change' support detecting which
window changed size when 'window-size-change-functions' are run.
510

511
+++
Paul Eggert's avatar
-  
Paul Eggert committed
512 513
** New function 'display-buffer-reuse-mode-window' is an action function
suitable for use in 'display-buffer-alist'. For example, to avoid creating
514 515
a new window when opening man pages when there's already one, use
(add-to-list 'display-buffer-alist
516
     '("\\`\\*Man .*\\*\\'" .
517 518 519 520
       (display-buffer-reuse-mode-window
        (inhibit-same-window . nil)
        (mode . Man-mode))))

521 522 523 524 525 526 527 528
---
** 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
529 530
+++
** New function 'func-arity' returns information about the argument list
531 532 533
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
534

535
+++
Paul Eggert's avatar
-  
Paul Eggert committed
536
** 'parse-partial-sexp' state has a new element.  Element 10 is
537
non-nil when the last character scanned might be the first character
538
of a two character construct, i.e., a comment delimiter or escaped
539 540 541
character.  Its value is the syntax of that last character.

+++
Paul Eggert's avatar
-  
Paul Eggert committed
542
** 'parse-partial-sexp''s state, element 9, has now been confirmed as
543 544 545 546
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.

547 548 549 550
---
** 'read-color' will now display the color names using the color itself
as the background color.

551 552 553
** The function 'redirect-debugging-output' now works on platforms
other than GNU/Linux.

554 555 556 557 558 559
+++
** 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".

560 561 562 563
+++
** The new function 'char-from-name' converts a Unicode name string
to the corresponding character code.

564 565 566 567 568 569 570 571 572 573 574
+++
** 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'.

575 576 577 578 579 580 581 582
+++
** 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'.

583 584 585 586
+++
*** 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
587
** New built-in function 'mapcan' which avoids unnecessary consing (and garbage
588 589 590
collection).

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

594 595 596

* Changes in Emacs 25.2 on Non-Free Operating Systems

597 598 599
** 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
600
system.  This makes the 'w32-register-hot-key' functionality work
601 602 603 604 605
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
606
** 'convert-standard-filename' no longer mirrors slashes on MS-Windows.
607
Previously, on MS-Windows this function converted slash characters in
608 609 610 611 612 613 614 615 616 617
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))))
618

619 620 621 622 623 624 625
** 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.

626

Stefan Monnier's avatar
Stefan Monnier committed
627
* Installation Changes in Emacs 25.1
628

Paul Eggert's avatar
Paul Eggert committed
629 630
** Building Emacs now requires C99 or later.

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

633
** New configure option --with-cairo.
634 635
This builds Emacs with Cairo drawing.  As a side effect, it provides
support for built-in printing, when Emacs was built with GTK+.
636 637 638 639
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.
640

641 642 643
** New configure option --with-modules.
This enables support for loading dynamic modules; see below.

Paul Eggert's avatar
Paul Eggert committed
644 645 646 647 648 649 650
** 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.

651 652 653 654 655 656
** 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
657 658 659
** 'configure' now prefers gnustep-config when configuring GNUstep.
If gnustep-config is not available, the old heuristics are used.

660 661 662
** 'configure' now prefers inotify to gfile for file notification,
unless gfile is explicitly requested via --with-file-notification='gfile'.

663 664 665
** 'configure' detects the kqueue file notification library on *BSD
and Mac OS X machines.

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

669 670 671 672 673 674
** 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.

675 676 677 678
** 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'.
679

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

Paul Eggert's avatar
Paul Eggert committed
686
** The 'grep-changelog' script (and its manual page) are no longer included.
Glenn Morris's avatar
Glenn Morris committed
687 688 689
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
690 691
** 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
692
The old Emacs logo icons are available as 'emacs23.png' in the same location.
NicolasPetton's avatar
NicolasPetton committed
693

Paul Eggert's avatar
Paul Eggert committed
694
** New make target 'check-expensive' to run additional tests.
695 696 697
This includes all tests which run via "make check", plus additional
tests which take more time to perform.

698

Stefan Monnier's avatar
Stefan Monnier committed
699
* Startup Changes in Emacs 25.1
700

701
** When Emacs is given a file as a command line argument and
Paul Eggert's avatar
Paul Eggert committed
702 703 704
'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'
705
and '*Buffer List*'.  This makes Emacs convenient to use from the
Paul Eggert's avatar
Paul Eggert committed
706
command line when 'initial-buffer-choice' is non-nil.
707

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

711 712 713 714 715
** 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.

716

Stefan Monnier's avatar
Stefan Monnier committed
717
* Changes in Emacs 25.1
718

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

Paul Eggert's avatar
Paul Eggert committed
726 727 728 729 730 731
*** 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'.
732

733 734 735
** 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
736 737 738 739
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
740
hosts) of the module files.
Eli Zaretskii's avatar
Eli Zaretskii committed
741

742
A module should export a C-callable function named
Paul Eggert's avatar
Paul Eggert committed
743 744 745
'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
746 747
released under the GPL or compatible license; Emacs will refuse to
load modules that don't export such a symbol.
748

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

Paul Eggert's avatar
Paul Eggert committed
755
Modules can create 'user-ptr' Lisp objects that embed pointers to C
756
structs defined by the module.  This is useful for keeping around
757 758 759 760 761
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
762
predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr'
763 764 765 766
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
767
by default, and must be enabled by using the '--with-modules' option
768
at configure time.
769

770 771
** 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
772
the 'network-security-level' variable.
773

774
** 'C-h l' now also lists the commands that were run.
775

776 777
** 'x-select-enable-clipboard' is renamed 'select-enable-clipboard'
and 'x-select-enable-primary' is renamed 'select-enable-primary'.
778 779
Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
name it), with the proviso that on some systems (e.g. Windows)
780
'select-enable-primary' is ineffective since the system doesn't
781
have the equivalent of a primary selection.
Stefan Monnier's avatar
Stefan Monnier committed
782

Paul Eggert's avatar
Paul Eggert committed
783 784
** New option 'switch-to-buffer-in-dedicated-window' allows you to
customize how 'switch-to-buffer' proceeds interactively when the
785
selected window is strongly dedicated to its buffer.
786

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

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

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

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

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

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

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

814
** New input methods: 'tamil-dvorak', 'programmer-dvorak' and 'probhat'.
815

816

Stefan Monnier's avatar
Stefan Monnier committed
817
* Editing Changes in Emacs 25.1
818

819
** 'M-x' suggests shorthands and ignores obsolete commands for completion.
820

821
** Changes in undo
822

823 824
*** 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
825
controlled by the new 'undo-auto-amalgamate' function.  See the node
826
"Undo" in the ELisp manual for more details.
827

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

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

Eli Zaretskii's avatar
Eli Zaretskii committed
835
** New and improved facilities for inserting Unicode characters
836

837 838
*** Unicode names entered via 'C-x 8 RET' now use substring completion
by default.
839

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

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

847
** New minor mode 'global-eldoc-mode' is enabled by default.
848

849 850 851 852 853 854 855 856 857 858 859
** 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.
860

Eli Zaretskii's avatar
Eli Zaretskii committed
861 862 863
** 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
864 865 866 867
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
868

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

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

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

Paul Eggert's avatar
Paul Eggert committed
878 879
** New documentation command 'describe-symbol'.
Works for functions, variables, faces, etc.  It is bound to 'C-h o' by
880 881
default.

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

886 887
** The old 'C-x w' bindings in 'hi-lock-mode' are officially deprecated
in favor of the global 'M-s h' bindings introduced in Emacs 23.1.
888 889
They'll disappear soon.

890

Stefan Monnier's avatar
Stefan Monnier committed
891
* Changes in Specialized Modes and Packages in Emacs 25.1
892

Eli Zaretskii's avatar
Eli Zaretskii committed
893 894
** Checkdoc

Paul Eggert's avatar
Paul Eggert committed
895
*** New command 'checkdoc-package-keywords' checks if the
Eli Zaretskii's avatar
Eli Zaretskii committed
896
current package keywords are recognized.  Set the new option
Paul Eggert's avatar
Paul Eggert committed
897 898
'checkdoc-package-keywords-flag' to non-nil to make
'checkdoc-current-buffer' call this function automatically.
Eli Zaretskii's avatar
Eli Zaretskii committed
899

Paul Eggert's avatar
Paul Eggert committed
900 901
*** New function 'checkdoc-file' checks for style errors.
It's meant for use together with 'compile':
Eli Zaretskii's avatar
Eli Zaretskii committed
902 903
emacs -batch --eval "(checkdoc-file \"subr.el\")"

904 905 906 907 908
** Desktop

*** The desktop format version has been upgraded from 206 to 208.
Although Emacs 25.1 can read a version 206 desktop, earlier Emacsen
cannot read a version 208 desktop.  To upgrade your desktop file, you
909
must explicitly request the upgrade, by 'C-u M-x desktop-save'.  You are
910 911
recommended to do this as soon as you have firmly upgraded to Emacs
25.1 (or later).  Should you ever need to downgrade your desktop file
912
to version 206, you can do this with 'C-u C-u M-x desktop-save'.