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

Paul Eggert's avatar
Paul Eggert committed
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.
24

Michael Albinus's avatar
Michael Albinus committed
25 26 27

* Installation Changes in Emacs 25.2

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

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

53 54 55

* Startup Changes in Emacs 25.2

56 57 58

* Changes in Emacs 25.2

59
+++
Paul Eggert's avatar
-  
Paul Eggert committed
60 61 62 63 64 65 66 67
** A number of accessors for the value returned by 'file-attributes'
has been added.  They are: 'file-attribute-type',
'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',
'file-attribute-modes', 'file-attribute-inode-number', and
'file-attribute-device-number'
68

69
+++
70
** The new function 'buffer-hash' has been added, and can be used to
71 72
compute a fash, non-consing hash of the contents of a buffer.

73
---
74
** 'fill-paragraph' no longer marks the buffer as changed unless it
75 76
actually changed something.

77
---
Paul Eggert's avatar
-  
Paul Eggert committed
78 79
** The locale language name 'ca' is now mapped to the language
environment 'Catalan', which has been added.
80

81
---
Paul Eggert's avatar
-  
Paul Eggert committed
82 83 84
** 'align-regexp' has a separate history for its interactive argument
'align-regexp' no longer shares its history with all other
history-less functions that use 'read-string'
85

86 87 88
+++
** 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
89
'make-network-process').  How asynchronous it is varies based on the
90 91 92 93 94 95
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
96
Certain process oriented functions (like 'process-datagram-address')
97 98 99 100 101
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
102
** 'make-network-process' and 'open-network-stream' sometimes allowed
Paul Eggert's avatar
Paul Eggert committed
103 104 105
: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.
106

107 108 109 110
** It is possible to disable attempted recovery on fatal signals

Two new variables allow to disable attempts to recover from stack
overflow and to avoid automatic auto-save when Emacs is delivered a
Paul Eggert's avatar
-  
Paul Eggert committed
111
fatal signal.  'attempt-stack-overflow-recovery', if set to 'nil',
112 113
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
114
'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
115 116
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
117
terminate immediately.  Both variables are non-'nil' by default.
118 119 120 121
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.

122 123 124

* Editing Changes in Emacs 25.2

Michael Albinus's avatar
Michael Albinus committed
125 126 127

* Changes in Specialized Modes and Packages in Emacs 25.2

Jö Fahlke's avatar
Jö Fahlke committed
128 129 130 131 132
** Compilation mode

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

133 134 135
** eww

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

Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
138
---
Paul Eggert's avatar
-  
Paul Eggert committed
139 140
*** 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
141

142 143 144
+++
** 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
145
'change-log-directory-files' to nil for the old behavior.
146

147
---
Paul Eggert's avatar
-  
Paul Eggert committed
148
** Support for non-string values of 'time-stamp-format' has been removed.
149

Michael Albinus's avatar
Michael Albinus committed
150 151
** Tramp

152 153 154 155 156 157
** Message

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

158
+++
Michael Albinus's avatar
Michael Albinus committed
159 160 161
*** New connection method "sg", which allows to edit files under
different group ID.

162 163 164
+++
*** New connection method "doas" for OpenBSD hosts.

Michael Albinus's avatar
Michael Albinus committed
165
---
Paul Eggert's avatar
-  
Paul Eggert committed
166
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
Michael Albinus's avatar
Michael Albinus committed
167

168 169 170
** CSS mode

---
171 172
*** Support for completing attribute values and bang-rules using the
'completion-at-point' command.
173

174 175 176 177 178
+++
** Emacs now supports character name escape sequences in character and
string literals.  The syntax variants \N{character name} and
\N{U+code} are supported.

179 180 181 182 183 184

* New Modes and Packages in Emacs 25.2


* Incompatible Lisp Changes in Emacs 25.2

185
+++
Paul Eggert's avatar
-  
Paul Eggert committed
186 187
** Resizing a frame no longer runs 'window-configuration-change-hook'.
Put your function on 'window-size-change-functions' instead.
188

189 190 191

* Lisp Changes in Emacs 25.2

192 193
** New var syntax-ppss-table to control the syntax-table used in syntax-ppss

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

Paul Eggert's avatar
-  
Paul Eggert committed
199
** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions
200 201
in unit tests.

202
---
Paul Eggert's avatar
-  
Paul Eggert committed
203
** 'gnutls-boot' now takes a parameter :complete-negotiation that says
204 205
that negotiation should complete even on non-blocking sockets.

206
+++
Paul Eggert's avatar
-  
Paul Eggert committed
207 208 209
** New functions 'window-pixel-width-before-size-change' and
'window-pixel-height-before-size-change' allow to detect which window
changed size when 'window-size-change-functions' are run.
210

211
+++
Paul Eggert's avatar
-  
Paul Eggert committed
212 213
** New function 'display-buffer-reuse-mode-window' is an action function
suitable for use in 'display-buffer-alist'. For example, to avoid creating
214 215
a new window when opening man pages when there's already one, use
(add-to-list 'display-buffer-alist
216
     '("\\`\\*Man .*\\*\\'" .
217 218 219 220
       (display-buffer-reuse-mode-window
        (inhibit-same-window . nil)
        (mode . Man-mode))))

Paul Pogonyshev's avatar
Paul Pogonyshev committed
221 222 223 224 225 226 227
+++
** New function 'func-arity' returns information about the argument list
of an arbitrary function.
This is a generalization of 'subr-arity' for functions that are not
built-in primitives.  We recommend using this new function instead of
'subr-arity'.

228
+++
Paul Eggert's avatar
-  
Paul Eggert committed
229
** 'parse-partial-sexp' state has a new element.  Element 10 is
230 231 232 233 234
non-nil when the last character scanned might be the first character
of a two character construct, i.e. a comment delimiter or escaped
character.  Its value is the syntax of that last character.

+++
Paul Eggert's avatar
-  
Paul Eggert committed
235
** 'parse-partial-sexp''s state, element 9, has now been confirmed as
236 237 238 239
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.

240 241 242
** The function 'redirect-debugging-output' now works on platforms
other than GNU/Linux.

243 244 245 246 247 248 249 250 251 252 253
+++
** 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'.

254 255 256 257 258 259 260 261
+++
** 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'.

262 263 264

* Changes in Emacs 25.2 on Non-Free Operating Systems

265 266 267
** 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
268
system.  This makes the 'w32-register-hot-key' functionality work
269 270 271 272 273
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.)

274

Stefan Monnier's avatar
Stefan Monnier committed
275
* Installation Changes in Emacs 25.1
276

Glenn Morris's avatar
Glenn Morris committed
277
+++
Paul Eggert's avatar
Paul Eggert committed
278 279
** Building Emacs now requires C99 or later.

280
+++
281
** Building Emacs now requires GNU make, version 3.81 or later.
Glenn Morris's avatar
Glenn Morris committed
282

283
+++
284
** New configure option --with-cairo.
285 286
This builds Emacs with Cairo drawing.  As a side effect, it provides
support for built-in printing, when Emacs was built with GTK+.
287 288
Cairo drawing is an experimental feature in Emacs, and subject to
change in future releases.
289

290
+++
291 292 293
** New configure option --with-modules.
This enables support for loading dynamic modules; see below.

294
---
Paul Eggert's avatar
Paul Eggert committed
295 296 297 298 299 300 301
** 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.

302
---
303 304 305 306 307 308
** 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.

309
---
Paul Eggert's avatar
Paul Eggert committed
310 311 312
** 'configure' now prefers gnustep-config when configuring GNUstep.
If gnustep-config is not available, the old heuristics are used.

313 314 315 316
---
** 'configure' now prefers inotify to gfile for file notification,
unless gfile is explicitly requested via --with-file-notification='gfile'.

317 318 319 320
---
** 'configure' detects the kqueue file notification library on *BSD
and Mac OS X machines.

321
---
322
** The configure option '--with-pkg-config-prog' has been removed.
323
Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
324

325 326 327 328 329 330 331
---
** 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.

332
+++
333 334 335 336
** 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'.
337

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

Glenn Morris's avatar
Glenn Morris committed
345
---
Paul Eggert's avatar
Paul Eggert committed
346
** The 'grep-changelog' script (and its manual page) are no longer included.
Glenn Morris's avatar
Glenn Morris committed
347 348 349
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.

350
---
NicolasPetton's avatar
NicolasPetton committed
351 352
** 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
353
The old Emacs logo icons are available as 'emacs23.png' in the same location.
NicolasPetton's avatar
NicolasPetton committed
354

355
---
Paul Eggert's avatar
Paul Eggert committed
356
** New make target 'check-expensive' to run additional tests.
357 358 359
This includes all tests which run via "make check", plus additional
tests which take more time to perform.

360

Stefan Monnier's avatar
Stefan Monnier committed
361
* Startup Changes in Emacs 25.1
362

363 364
+++
** When Emacs is given a file as a command line argument and
Paul Eggert's avatar
Paul Eggert committed
365 366 367
'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'
368
and *Buffer List*.  This makes Emacs convenient to use from the
Paul Eggert's avatar
Paul Eggert committed
369
command line when 'initial-buffer-choice' is non-nil.
370

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

375 376 377 378 379 380
---
** 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.

381

Stefan Monnier's avatar
Stefan Monnier committed
382
* Changes in Emacs 25.1
383

384
+++
385
** Xwidgets: a new feature for embedding native widgets inside Emacs buffers.
386
If you have gtk3 and webkitgtk3 installed, and Emacs was built with
Paul Eggert's avatar
Paul Eggert committed
387
xwidget support, you can access the embedded webkit browser with 'M-x
388
xwidget-webkit-browse-url'.  This opens a new buffer with the embedded
Paul Eggert's avatar
Paul Eggert committed
389 390
browser.  The buffer will have a new mode, 'xwidget-webkit-mode'
(similar to 'image-mode'), which supports the webkit widget.
391

392
+++
Paul Eggert's avatar
Paul Eggert committed
393 394 395 396 397 398
*** 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'.
399

400
+++
401 402 403
** 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
404 405 406 407
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
408
hosts) of the module files.
Eli Zaretskii's avatar
Eli Zaretskii committed
409

410
A module should export a C-callable function named
Paul Eggert's avatar
Paul Eggert committed
411 412 413
'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
414 415
released under the GPL or compatible license; Emacs will refuse to
load modules that don't export such a symbol.
416

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

Paul Eggert's avatar
Paul Eggert committed
423
Modules can create 'user-ptr' Lisp objects that embed pointers to C
424
structs defined by the module.  This is useful for keeping around
425 426 427 428 429
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
430
predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr'
431 432 433 434
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
435
by default, and must be enabled by using the '--with-modules' option
436
at configure time.
437

438
+++
439
** A second dir-local file (.dir-locals-2.el) is now accepted.
Paul Eggert's avatar
-  
Paul Eggert committed
440
See the variable 'dir-locals-file-2' for more information.
441

442
+++
443 444
** 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
445
the 'network-security-level' variable.
446

447 448
---
** International domain names (IDNA) are now encoded via the new
Paul Eggert's avatar
-  
Paul Eggert committed
449
puny.el library, so that one can visit web sites with non-ASCII URLs.
450

Eli Zaretskii's avatar
Eli Zaretskii committed
451
+++
452 453
** C-h l now also lists the commands that were run.

454
** The new M-s M-w key binding uses eww to search the web for the
455 456
text in the region.

457
+++
Paul Eggert's avatar
-  
Paul Eggert committed
458 459
** The new 'timer-list' command lists all active timers in a buffer
where you can cancel them with the 'c' command.
460

461
** M-x suggests shorthands and ignores obsolete commands for completion.
462 463 464 465 466 467
** x-select-enable-clipboard is renamed select-enable-clipboard.
x-select-enable-primary and renamed select-enable-primary.
Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
name it), with the proviso that on some systems (e.g. Windows)
select-enable-primary is ineffective since the system doesn't
have the equivalent of a primary selection.
Stefan Monnier's avatar
Stefan Monnier committed
468

469
+++
Paul Eggert's avatar
Paul Eggert committed
470 471
** New option 'switch-to-buffer-in-dedicated-window' allows you to
customize how 'switch-to-buffer' proceeds interactively when the
472
selected window is strongly dedicated to its buffer.
473

Leo Liu's avatar
Leo Liu committed
474
+++
Paul Eggert's avatar
Paul Eggert committed
475 476
** The option 'even-window-heights' has been renamed to
'even-window-sizes' and now handles window widths as well.
477

478
+++
Paul Eggert's avatar
-  
Paul Eggert committed
479
** New function 'read-multiple-choice' use to prompt for
480 481
multiple-choice questions, with a handy way to display help texts.

482 483
+++
** terpri gets an optional arg ENSURE to conditionally output a newline.
Leo Liu's avatar
Leo Liu committed
484

485
+++
Paul Eggert's avatar
Paul Eggert committed
486
** 'insert-register' now leaves point after the inserted text
487
when called interactively.  A prefix argument toggles this behavior.
488

489
+++
Paul Eggert's avatar
Paul Eggert committed
490 491
** The new variable 'term-file-aliases' replaces some files from lisp/term.
The function 'tty-run-terminal-initialization' consults this variable
492 493
when deciding what terminal-specific initialization code to run.

494
---
Paul Eggert's avatar
Paul Eggert committed
495
** New variable 'system-configuration-features', listing some of the
496 497 498
main features that Emacs was compiled with.  This is mainly intended
for use in Emacs bug reports.

499 500
+++
** A password is now hidden also when typed in batch mode.  Another
Paul Eggert's avatar
Paul Eggert committed
501 502
hiding character but the default '.' can be used by let-binding the
variable 'read-hide-char'.
503

504 505 506
+++
** The Emacs pseudo-random number generator can be securely seeded.
On system where Emacs can access the system entropy or some other
Paul Eggert's avatar
Paul Eggert committed
507 508
cryptographically secure random stream, it now uses that when 'random'
is called with its argument 't'.  This allows cryptographically strong
509 510 511
random values; in particular, the Emacs server now uses this facility
to produce its authentication key.

512
---
Paul Eggert's avatar
Paul Eggert committed
513
** New input methods: 'tamil-dvorak' and 'programmer-dvorak'.
514

515

Stefan Monnier's avatar
Stefan Monnier committed
516
* Editing Changes in Emacs 25.1
517

518
+++
519
** M-x suggests shorthands and ignores obsolete commands for completion.
520

521
** Changes in undo
522

523
+++
524 525
*** 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
526
controlled by the new 'undo-auto-amalgamate' function.  See the node
527
"Undo" in the ELisp manual for more details.
528

529
+++
Paul Eggert's avatar
Paul Eggert committed
530
*** The heuristic used to insert 'undo-boundary' after each command
531
has changed, so that if a command causes changes in more than just the
Paul Eggert's avatar
Paul Eggert committed
532
current buffer, Emacs now calls 'undo-boundary' in every buffer
533
affected by the command.
534

535
+++
Paul Eggert's avatar
Paul Eggert committed
536
** New command 'comment-line' bound to 'C-x C-;'.
537

Eli Zaretskii's avatar
Eli Zaretskii committed
538
** New and improved facilities for inserting Unicode characters
539

Eli Zaretskii's avatar
Eli Zaretskii committed
540 541
---
*** Unicode names entered via C-x 8 RET now use substring completion by default.
542

Eli Zaretskii's avatar
Eli Zaretskii committed
543
+++
Paul Eggert's avatar
Paul Eggert committed
544 545 546
*** C-x 8 now has shorthands for several chars, such as U+2010
(HYPHEN), U+2011 (NON-BREAKING HYPHEN), and U+2012 (FIGURE DASH).  As
before, you can type C-x 8 C-h to list shorthands.
547

Eli Zaretskii's avatar
Eli Zaretskii committed
548
+++
Paul Eggert's avatar
Paul Eggert committed
549 550
*** New minor mode electric-quote-mode for using curved quotes as you
type.  See also the new variable 'text-quoting-style'.
Paul Eggert's avatar
Paul Eggert committed
551

Eli Zaretskii's avatar
Eli Zaretskii committed
552
---
553 554
** New minor mode global-eldoc-mode is enabled by default.

Eli Zaretskii's avatar
Eli Zaretskii committed
555
---
556 557 558 559 560 561 562 563 564 565 566
** 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.
567

Eli Zaretskii's avatar
Eli Zaretskii committed
568
+++
Eli Zaretskii's avatar
Eli Zaretskii committed
569 570 571
** 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
572 573 574 575
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
576

577
+++
Paul Eggert's avatar
Paul Eggert committed
578
** You can access 'mouse-buffer-menu' (C-down-mouse-1) using C-f10.
579

Tom Willemse's avatar
Tom Willemse committed
580
+++
Paul Eggert's avatar
Paul Eggert committed
581
** New buffer-local 'electric-pair-local-mode'.
Tom Willemse's avatar
Tom Willemse committed
582

583
+++
Paul Eggert's avatar
Paul Eggert committed
584
** New variable 'fast-but-imprecise-scrolling' inhibits
585 586 587 588
fontification during full screen scrolling operations, giving less
hesitant operation during auto-repeat of C-v, M-v at the cost of
possible inaccuracies in the end position.

589
+++
Paul Eggert's avatar
Paul Eggert committed
590 591
** New documentation command 'describe-symbol'.
Works for functions, variables, faces, etc.  It is bound to 'C-h o' by
592 593 594
default.

+++
Paul Eggert's avatar
Paul Eggert committed
595
** New function 'custom-prompt-customize-unsaved-options' checks for
596 597 598
unsaved customizations and prompts user to customize (if found).  It
is intended for adding to 'kill-emacs-query-functions'.

599
+++
Paul Eggert's avatar
Paul Eggert committed
600 601
** 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.
602 603
They'll disappear soon.

604 605
+++
** New bindings for 'query-replace-map'.
Paul Eggert's avatar
-  
Paul Eggert committed
606 607
'undo', undo the last replacement; bound to 'u'.
'undo-all', undo all replacements; bound to 'U'.
608

609

Stefan Monnier's avatar
Stefan Monnier committed
610
* Changes in Specialized Modes and Packages in Emacs 25.1
611

Eli Zaretskii's avatar
Eli Zaretskii committed
612 613 614
** Checkdoc

+++
Paul Eggert's avatar
Paul Eggert committed
615
*** New command 'checkdoc-package-keywords' checks if the
Eli Zaretskii's avatar
Eli Zaretskii committed
616
current package keywords are recognized.  Set the new option
Paul Eggert's avatar
Paul Eggert committed
617 618
'checkdoc-package-keywords-flag' to non-nil to make
'checkdoc-current-buffer' call this function automatically.
Eli Zaretskii's avatar
Eli Zaretskii committed
619 620

+++
Paul Eggert's avatar
Paul Eggert committed
621 622
*** New function 'checkdoc-file' checks for style errors.
It's meant for use together with 'compile':
Eli Zaretskii's avatar
Eli Zaretskii committed
623 624
emacs -batch --eval "(checkdoc-file \"subr.el\")"

625 626 627 628 629 630 631 632 633 634 635
** 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
must explicitly request the upgrade, by C-u M-x desktop-save.  You are
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
to version 206, you can do this with C-u C-u M-x desktop-save.

636
+++
Paul Eggert's avatar
Paul Eggert committed
637
** New function 'bookmark-set-no-overwrite' bound to C-x r M.
638
It raises an error if a bookmark of that name already exists,
Paul Eggert's avatar
Paul Eggert committed
639
unlike 'bookmark-set' which silently updates an existing bookmark.
640

641 642 643
** Gnus

+++
Paul Eggert's avatar
Paul Eggert committed
644
*** New user options 'mm-html-inhibit-images' and 'mm-html-blocked-images'
645
now control how mm-* functions fetch and display images in an HTML
Paul Eggert's avatar
Paul Eggert committed
646
message.  Gnus still uses 'gnus-inhibit-images' and 'gnus-blocked-images'
647 648 649 650
for that purpose, i.e., binds mm-html- variables with those gnus-
variables, but other packages do not have to bind gnus- variables now.

---
Paul Eggert's avatar
Paul Eggert committed
651 652
*** 'mm-inline-text-html-with-images' has been removed.
Use 'mm-html-inhibit-images' instead.  Note that the value is opposite
653 654
in meaning.

655 656
** IMAP

657
---
Paul Eggert's avatar
Paul Eggert committed
658
*** 'imap-ssl-program' has been removed, and imap.el uses the internal
659 660
GnuTLS encryption functions if possible.

661
** JSON
Eli Zaretskii's avatar
Eli Zaretskii committed
662

663
---
Paul Eggert's avatar
Paul Eggert committed
664
*** 'json-pretty-print' and 'json-pretty-print-buffer' now maintain
665
the ordering of object keys by default.
Eli Zaretskii's avatar
Eli Zaretskii committed
666

667
---
Paul Eggert's avatar
Paul Eggert committed
668 669
*** New commands 'json-pretty-print-ordered' and
'json-pretty-print-buffer-ordered' pretty prints JSON objects with
670
object keys sorted alphabetically.
671

672
+++
673
** Prog mode has some support for multi-mode indentation.
674 675 676 677 678
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
Paul Eggert's avatar
Paul Eggert committed
679 680 681
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
682
"Mode-Specific Indent" in the ELisp manual for more details.
683

684
** Prettify Symbols mode
Eli Zaretskii's avatar
Eli Zaretskii committed
685

686
+++
687
*** Prettify Symbols mode supports custom composition predicates.  By
Paul Eggert's avatar
Paul Eggert committed
688
overriding the default 'prettify-symbols-compose-predicate', modes can
689
specify in which contexts a symbol may be displayed as some Unicode
Paul Eggert's avatar
Paul Eggert committed
690
character.  'prettify-symbols-default-compose-p' is the default which
691 692 693
is suitable for most programming languages such as C or Lisp (but not
(La)TeX).

694
+++
695
*** Symbols can be unprettified while point is inside them.
Paul Eggert's avatar
Paul Eggert committed
696
New variable 'prettify-symbols-unprettify-at-point' configures this.
697

698 699
** Enhanced xterm support

700
---
Paul Eggert's avatar
Paul Eggert committed
701
*** The new variable 'xterm-screen-extra-capabilities' for configuring xterm.
702 703 704 705 706
This variable tells Emacs which advanced capabilities are available in
the xterm terminal emulator used to display Emacs text-mode frames.
The default is to check each capability, and use it if available.
(This variable was introduced in Emacs 24.1, but was not announced in
its NEWS.)
707

708 709 710
---
*** Killing text now also sets the CLIPBOARD/PRIMARY selection
in the surrounding GUI (using the OSC-52 escape sequence).  This only works
Paul Eggert's avatar
Paul Eggert committed
711
if your xterm supports it and enables the 'allowWindowOps' options (disabled
712
by default at least in Debian, for security reasons).
713

714 715
Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52
escape sequence) if your xterm has the feature enabled but for that you
Paul Eggert's avatar
Paul Eggert committed
716
additionally need to add 'getSelection' to 'xterm-extra-capabilities'.
717 718

+++
Paul Eggert's avatar
Paul Eggert committed
719
*** 'xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it).
720

721
---
Paul Eggert's avatar
Paul Eggert committed
722
** The way to turn on and off 'save-place' mode has changed.
723
It is no longer sufficient to load the saveplace library and set
Paul Eggert's avatar
Paul Eggert committed
724 725 726 727 728 729
'save-place' non-nil.  Instead, use the two new minor modes:
'save-place-mode' turns on saving last place in every file, and
'save-place-local-mode' does that only for the file in whose buffer it
is invoked.  The 'save-place' variable is now an obsolete alias for
'save-place-mode', which replaces it, and 'toggle-save-place' is an
obsolete alias for the new 'save-place-local-mode' command.
730

731 732
** ERC

733 734
+++
*** ERC can now hide message types by network or channel.
Paul Eggert's avatar
Paul Eggert committed
735 736
'erc-hide-list' will hide all messages of the specified type, while
'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the
737
specified message types for the respective specified targets.
738

Paul Eggert's avatar
-  
Paul Eggert committed
739
*** New variable 'erc-default-port-tls' used to connect to TLS IRC
740 741
servers.

742 743 744
---
*** Reconnection is now asynchronous.

745
---
Paul Eggert's avatar
Paul Eggert committed
746
*** Nick completion is now case-insensitive again after inadvertently
747 748
being made case-sensitive in Emacs 24.2.

749 750 751 752 753
** MPC

---
*** New commands, key binds, and menu items.

Paul Eggert's avatar
Paul Eggert committed
754
**** '<' and '>' for navigating previous and next tracks in playlist
755

Paul Eggert's avatar
Paul Eggert committed
756
**** New play/pause command 'mpc-toggle-play' bound to 's'
757

Paul Eggert's avatar
Paul Eggert committed
758
**** 'g' bound to new command 'mpc-seek-current' will navigate current
759 760
     track.

Paul Eggert's avatar
Paul Eggert committed
761
**** New commands 'mpc-toggle-{consume,repeat,single,shuffle}' for
762 763 764 765 766 767 768 769 770 771 772 773 774 775
     toggling playback modes.

---
*** Now supports connecting to a UNIX domain socket.

---
*** Looks at more image file names to use as album art.
Case-insensitively tries for .folder.png (freedesktop) and folder.jpg
(XP) in addition to cover.jpg.

---
*** Searches in more locations for MPD configuration files.
MPD supports the XDG base directory specification since version 0.17.6.

776 777
** Midnight-mode

778
---
Paul Eggert's avatar
Paul Eggert committed
779
*** 'midnight-mode' is now a proper minor mode.
780

781
---
782
*** clean-buffer-*-regexps can now specify buffers via predicate functions.
783

784
** package.el
785

786
+++
787 788
*** New "external" package status.
An external package is any installed package that's not built-in and
Paul Eggert's avatar
Paul Eggert committed
789 790
not from 'package-user-dir', which usually means it's from an entry in
'package-directory-list'.  They are treated much like built-in
791
packages, in that they cannot be deleted through the package menu and
792 793
are not considered for upgrades.

794
The effect is that a user can manually place a specific version of a
Paul Eggert's avatar
Paul Eggert committed
795
package inside 'package-directory-list' and the package menu will
796 797
always respect that.

798
+++
799
*** If a package is available on multiple archives and one has higher
Paul Eggert's avatar
Paul Eggert committed
800 801
priority (as per 'package-archive-priorities') only that one is
listed.  This can be configured with 'package-menu-hide-low-priority'.
802

803
+++
Paul Eggert's avatar
Paul Eggert committed
804
*** 'package-menu-toggle-hiding' now toggles the hiding of packages.
805 806 807 808 809 810
This includes the above-mentioned low-priority packages, as well as
available packages whose version is lower than the currently installed
version (which were previously impossible to display).
This allows users to downgrade a package if a lower version is
available.