]> code.delx.au - gnu-emacs/blob - etc/NEWS
Avoid having `C-x h' mark the prompt part of the minibuffer
[gnu-emacs] / etc / NEWS
1 GNU Emacs NEWS -- history of user-visible changes.
2
3 Copyright (C) 2014-2016 Free Software Foundation, Inc.
4 See the end of the file for license conditions.
5
6 Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7 If possible, use M-x report-emacs-bug.
8
9 This file is about changes in Emacs version 25.
10
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
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 Temporary note:
19 +++ indicates that all necessary documentation updates are complete.
20 (This means all relevant manuals in doc/ AND lisp doc-strings.)
21 --- means no change in the manuals is needed.
22 When you add a new item, use the appropriate mark if you are sure it applies,
23 otherwise leave it unmarked.
24
25 \f
26 * Installation Changes in Emacs 25.2
27
28 ** The new option 'configure --enable-gcc-warnings=warn-only' causes
29 GCC to issue warnings without stopping the build. This behavior is
30 now the default in developer builds. As before, use
31 '--disable-gcc-warnings' to suppress GCC's warnings, and
32 '--enable-gcc-warnings' to stop the build if GCC issues warnings.
33
34 +++
35 ** The Emacs server now has socket-launching support. This allows
36 socket based activation, where an external process like systemd can
37 invoke the Emacs server process upon a socket connection event and
38 hand the socket over to Emacs. Emacs uses this socket to service
39 emacsclient commands. This new functionality can be disabled with the
40 configure option '--disable-libsystemd'.
41
42 ** New configure option '--disable-build-details' attempts to build an
43 Emacs that is more likely to be reproducible; that is, if you build
44 and install Emacs twice, the second Emacs is a copy of the first.
45 Deterministic builds omit the build date from the output of the
46 emacs-version and erc-cmd-SV functions, and the leave the following
47 variables nil: emacs-build-system, emacs-build-time,
48 erc-emacs-build-time.
49
50 ** Emacs no longer works on IRIX. We expect that Emacs users are not
51 affected by this, as SGI stopped supporting IRIX in December 2013.
52
53 \f
54 * Startup Changes in Emacs 25.2
55
56 \f
57 * Changes in Emacs 25.2
58
59 ---
60 ** `C-x h' (`mark-whole-buffer') will now avoid marking the prompt
61 part of minibuffers.
62
63 ---
64 ** `find-library' now takes a prefix argument to pop to a different
65 window.
66
67 ** `find-library', `help-function-def' and `help-variable-def' now run
68 `find-function-after-hook'.
69
70 ---
71 ** 'process-attributes' on Darwin systems now returns more information.
72
73 +++
74 ** Several accessors for the value returned by 'file-attributes'
75 have been added. They are: 'file-attribute-type',
76 'file-attribute-link-number', 'file-attribute-user-id',
77 'file-attribute-group-id', 'file-attribute-access-time',
78 'file-attribute-modification-time',
79 'file-attribute-status-change-time', 'file-attribute-size',
80 'file-attribute-modes', 'file-attribute-inode-number', and
81 'file-attribute-device-number'.
82
83 +++
84 ** The new function 'buffer-hash' computes compute a fast, non-consing
85 hash of a buffer's contents.
86
87 ---
88 ** 'fill-paragraph' no longer marks the buffer as changed unless it
89 actually changed something.
90
91 ---
92 ** The locale language name 'ca' is now mapped to the language
93 environment 'Catalan', which has been added.
94
95 ---
96 ** 'align-regexp' has a separate history for its interactive argument.
97 'align-regexp' no longer shares its history with all other
98 history-less functions that use 'read-string'.
99
100 +++
101 ** The networking code has been reworked so that it's more
102 asynchronous than it was (when specifying :nowait t in
103 'make-network-process'). How asynchronous it is varies based on the
104 capabilities of the system, but on a typical GNU/Linux system the DNS
105 resolution, the connection, and (for TLS streams) the TLS negotiation
106 are all done without blocking the main Emacs thread. To get
107 asynchronous TLS, the TLS boot parameters have to be passed in (see
108 the manual for details).
109
110 Certain process oriented functions (like 'process-datagram-address')
111 will block until socket setup has been performed. The recommended way
112 to deal with asynchronous sockets is to avoid interacting with them
113 until they have changed status to "run". This is most easily done
114 from a process sentinel.
115
116 ** 'make-network-process' and 'open-network-stream' sometimes allowed
117 :service to be an integer string (e.g., :service "993") and sometimes
118 required an integer (e.g., :service 993). This difference has been
119 eliminated, and integer strings work everywhere.
120
121 ** It is possible to disable attempted recovery on fatal signals.
122
123 Two new variables support disabling attempts to recover from stack
124 overflow and to avoid automatic auto-save when Emacs is delivered a
125 fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil',
126 will disable attempts to recover from C stack overflows; Emacs will
127 then crash as with any other fatal signal.
128 'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
129 disable attempts to auto-save the session and shut down in an orderly
130 fashion when Emacs receives a fatal signal; instead, Emacs will
131 terminate immediately. Both variables are non-'nil' by default.
132 These variables are for users who would like to avoid the small
133 probability of data corruption due to techniques Emacs uses to recover
134 in these situations.
135
136 +++
137 ** A second dir-local file (.dir-locals-2.el) is now accepted.
138 See the variable 'dir-locals-file-2' for more information.
139
140 ---
141 ** International domain names (IDNA) are now encoded via the new
142 puny.el library, so that one can visit web sites with non-ASCII URLs.
143
144 +++
145 ** The new 'timer-list' command lists all active timers in a buffer,
146 where you can cancel them with the 'c' command.
147
148 +++
149 ** The new function 'read-multiple-choice' prompts for multiple-choice
150 questions, with a handy way to display help texts.
151
152 \f
153 * Editing Changes in Emacs 25.2
154
155 +++
156 ** New bindings for 'query-replace-map'.
157 'undo', undo the last replacement; bound to 'u'.
158 'undo-all', undo all replacements; bound to 'U'.
159
160 \f
161 * Changes in Specialized Modes and Packages in Emacs 25.2
162
163 ** Compilation mode
164
165 ---
166 *** Messages from CMake are now recognized.
167
168 ** Dired
169
170 +++
171 *** In wdired, when editing files to contain slash characters,
172 the resulting directories are automatically created. Whether to do
173 this is controlled by the 'wdired-create-parent-directories' variable.
174
175 +++
176 *** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
177 viewing HTML files and the like.
178
179 ** eww
180
181 +++
182 *** A new 's' command for switching to another eww buffer via the minibuffer.
183
184 ---
185 *** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
186 with the 'o' command from 'image-map'.
187
188 +++
189 *** A new command 'C' ('eww-toggle-colors') can be used to toggle
190 whether to use the HTML-specified colors or not. The user can also
191 customize the 'shr-use-colors' variable.
192
193 ---
194 *** Images that are being loaded are now marked with gray
195 "placeholder" images of the size specified by the HTML. They are then
196 replaced by the real images asynchronously, which will also now
197 respect width/height HTML specs (unless they specify widths/heights
198 bigger than the current window).
199
200 ** Images
201
202 +++
203 *** Images are automatically scaled before displaying based on the
204 'image-scaling-factor' variable (if Emacs supports scaling the images
205 in question).
206
207 +++
208 *** Images inserted with 'insert-image' and related functions get a
209 keymap put into the text properties (or overlays) that span the
210 image. This keymap binds keystrokes for manipulating size and
211 rotation, as well as saving the image to a file. These commands are
212 also available in 'image-mode'.
213
214 +++
215 *** A new library for creating and manipulating SVG images has been
216 added. See the "SVG Images" section in the lispref manual for
217 details.
218
219 +++
220 *** New setf-able function to access and set image parameters is
221 provided: 'image-property'.
222
223 +++
224 ** The commands that add ChangeLog entries now prefer a VCS root directory
225 for the ChangeLog file, if none already exists. Customize
226 'change-log-directory-files' to nil for the old behavior.
227
228 ---
229 ** Support for non-string values of 'time-stamp-format' has been removed.
230
231 ** Message
232
233 ---
234 *** 'message-use-idna' now defaults to t (because Emacs comes with
235 built-in IDNA support now).
236
237 ---
238 *** The 'message-valid-fqdn-regexp' variable has been removed, since
239 there are now top-level domains added all the time. Message will no
240 longer warn about sending emails to top-level domains it hasn't heard
241 about.
242
243 *** 'message-beginning-of-line' (bound to C-a) understands folded headers.
244 In 'visual-line-mode' it will look for the true beginning of a header
245 while in non-'visual-line-mode' it will move the point to the indented
246 header's value.
247
248 ** Tramp
249
250 +++
251 *** New connection method "sg", which supports editing files under a
252 different group ID.
253
254 +++
255 *** New connection method "doas" for OpenBSD hosts.
256
257 ---
258 ** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
259
260 ** CSS mode
261
262 ---
263 *** Support for completing attribute values and bang-rules using the
264 'completion-at-point' command.
265
266 +++
267 ** Emacs now supports character name escape sequences in character and
268 string literals. The syntax variants \N{character name} and
269 \N{U+code} are supported.
270
271 +++
272 ** Prog mode has some support for multi-mode indentation.
273 This allows better indentation support in modes that support multiple
274 programming languages in the same buffer, like literate programming
275 environments or ANTLR programs with embedded Python code.
276
277 A major mode can provide indentation context for a sub-mode through
278 the 'prog-indentation-context' variable. To support this, modes that
279 provide indentation should use 'prog-widen' instead of 'widen' and
280 'prog-first-column' instead of a literal zero. See the node
281 "Mode-Specific Indent" in the ELisp manual for more details.
282
283 ** ERC
284
285 *** New variable 'erc-default-port-tls' used to connect to TLS IRC
286 servers.
287
288 ** URL
289
290 +++
291 *** The new function 'url-cookie-delete-cookie' can be used to
292 programmatically delete all cookies, or cookies from a specific
293 domain.
294
295 +++
296 *** `url-retrieve-synchronously' now takes an optional timeout parameter.
297
298 ---
299 *** The URL package now support HTTPS over proxies supporting CONNECT.
300
301 +++
302 *** 'url-user-agent' now defaults to 'default', and the User-Agent
303 string is computed dynamically based on 'url-privacy-level'.
304
305 ** VC and related modes
306
307 ---
308 *** The VC state indicator in the mode line now defaults to more
309 colorful faces to make it more obvious to the user what the state is.
310 See the 'vc-faces' customization group.
311
312 \f
313 * New Modes and Packages in Emacs 25.2
314
315 \f
316 * Incompatible Lisp Changes in Emacs 25.2
317
318 +++
319 ** Resizing a frame no longer runs 'window-configuration-change-hook'.
320 Put your function on 'window-size-change-functions' instead.
321
322 ** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
323 mode to send the same escape sequences that xterm does. This makes
324 things like forward-word in readline work.
325
326 ---
327 ** hideshow mode got four key bindings that are analogous to outline
328 mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
329
330 ** The grep/rgrep/lgrep functions will now ask about saving files
331 before running. This is controlled by the 'grep-save-buffers'
332 variable.
333
334 \f
335 * Lisp Changes in Emacs 25.2
336
337 ** New var syntax-ppss-table to control the syntax-table used in syntax-ppss.
338
339 ** Autoload files can be generated without timestamps,
340 by setting 'autoload-timestamps' to nil.
341 FIXME As an experiment, nil is the current default.
342 If no insurmountable problems before next release, it can stay that way.
343
344 ** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions
345 in unit tests.
346
347 ---
348 ** 'gnutls-boot' now takes a parameter :complete-negotiation that says
349 that negotiation should complete even on non-blocking sockets.
350
351 +++
352 ** New functions 'window-pixel-width-before-size-change' and
353 'window-pixel-height-before-size-change' support detecting which
354 window changed size when 'window-size-change-functions' are run.
355
356 +++
357 ** New function 'display-buffer-reuse-mode-window' is an action function
358 suitable for use in 'display-buffer-alist'. For example, to avoid creating
359 a new window when opening man pages when there's already one, use
360 (add-to-list 'display-buffer-alist
361 '("\\`\\*Man .*\\*\\'" .
362 (display-buffer-reuse-mode-window
363 (inhibit-same-window . nil)
364 (mode . Man-mode))))
365
366 ---
367 ** There is now a new variable 'flyspell-sort-corrections-function'
368 that allows changing the way corrections are sorted.
369
370 ---
371 ** The new command 'fortune-message' has been added, which displays
372 fortunes in the echo area.
373
374 +++
375 ** New function 'func-arity' returns information about the argument list
376 of an arbitrary function. This generalizes 'subr-arity' for functions
377 that are not built-in primitives. We recommend using this new
378 function instead of 'subr-arity'.
379
380 +++
381 ** 'parse-partial-sexp' state has a new element. Element 10 is
382 non-nil when the last character scanned might be the first character
383 of a two character construct, i.e., a comment delimiter or escaped
384 character. Its value is the syntax of that last character.
385
386 +++
387 ** 'parse-partial-sexp''s state, element 9, has now been confirmed as
388 permanent and documented, and may be used by Lisp programs. Its value
389 is a list of currently open parenthesis positions, starting with the
390 outermost parenthesis.
391
392 ---
393 ** 'read-color' will now display the color names using the color itself
394 as the background color.
395
396 ** The function 'redirect-debugging-output' now works on platforms
397 other than GNU/Linux.
398
399 +++
400 ** The new function 'string-version-lessp' compares strings by
401 interpreting consecutive runs of numerical characters as numbers, and
402 compares their numerical values. According to this predicate,
403 "foo2.png" is smaller than "foo12.png".
404
405 +++
406 ** The new function 'char-from-name' converts a Unicode name string
407 to the corresponding character code.
408
409 +++
410 ** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
411 Lisp object suitable for use with 'eq' and 'eql' correspondingly. If
412 two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
413 ('sxhash-eql') on them will be the same.
414
415 +++
416 ** Function 'sxhash' has been renamed to 'sxhash-equal' for
417 consistency with the new functions. For compatibility, 'sxhash'
418 remains as an alias to 'sxhash-equal'.
419
420 +++
421 ** Time conversion functions that accept a time zone rule argument now
422 allow it to be OFFSET or a list (OFFSET ABBR), where the integer
423 OFFSET is a count of seconds east of Universal Time, and the string
424 ABBR is a time zone abbreviation. The affected functions are
425 'current-time-string', 'current-time-zone', 'decode-time',
426 'format-time-string', and 'set-time-zone-rule'.
427
428 \f
429 * Changes in Emacs 25.2 on Non-Free Operating Systems
430
431 ** Intercepting hotkeys on Windows 7 and later now works better.
432 The new keyboard hooking code properly grabs system hotkeys such as
433 Win-* and Alt-TAB, in a way that Emacs can get at them before the
434 system. This makes the 'w32-register-hot-key' functionality work
435 again on all versions of MS-Windows starting with Windows 7. On
436 Windows NT and later you can now register any hotkey combination. (On
437 Windows 9X, the previous limitations, spelled out in the Emacs manual,
438 still apply.)
439
440 ** `convert-standard-filename' no longer mirrors slashes on MS-Windows.
441 Previously, on MS-Windows this function converted slash characters in
442 file names into backslashes. It no longer does that.
443
444 \f
445 * Installation Changes in Emacs 25.1
446
447 +++
448 ** Building Emacs now requires C99 or later.
449
450 +++
451 ** Building Emacs now requires GNU make, version 3.81 or later.
452
453 +++
454 ** New configure option --with-cairo.
455 This builds Emacs with Cairo drawing. As a side effect, it provides
456 support for built-in printing, when Emacs was built with GTK+.
457 Cairo drawing is an experimental feature in Emacs, and subject to
458 change in future releases.
459
460 +++
461 ** New configure option --with-modules.
462 This enables support for loading dynamic modules; see below.
463
464 ---
465 ** By default, Emacs no longer works on IRIX. We expect that Emacs
466 users are not affected by this, as SGI stopped supporting IRIX in
467 December 2013. If you are affected, please send a bug report. You
468 should be able to work around the problem either by porting the Emacs
469 undumping code to GCC under IRIX, or by configuring --with-wide-int,
470 or by sticking with Emacs 24.4.
471
472 ---
473 ** The Emacs garbage collector assumes GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
474 The GC_MAKE_GCPROS_NOOPS stack-marking variant has been the default
475 since Emacs 24.4, and the other variants were undocumented and were
476 obstacles to maintenance and development. GC_MARK_STACK and its
477 related symbols have been removed from the C internals.
478
479 ---
480 ** 'configure' now prefers gnustep-config when configuring GNUstep.
481 If gnustep-config is not available, the old heuristics are used.
482
483 ---
484 ** 'configure' now prefers inotify to gfile for file notification,
485 unless gfile is explicitly requested via --with-file-notification='gfile'.
486
487 ---
488 ** 'configure' detects the kqueue file notification library on *BSD
489 and Mac OS X machines.
490
491 ---
492 ** The configure option '--with-pkg-config-prog' has been removed.
493 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
494
495 ---
496 ** The configure option '--with-mmdf' has been removed.
497 It was no longer useful, as it relied on libraries that are no longer
498 supported, and its presence led to confusion during configuration.
499 This affects only the 'movemail' utility; Emacs itself can still
500 process MMDF-format files as before.
501
502 +++
503 ** The configure option '--enable-silent-rules' is now the default,
504 and silent rules are now quieter. To get the old behavior where
505 'make' chatters a lot, configure with '--disable-silent-rules' or
506 build with 'make V=1'.
507
508 ---
509 ** The configure option '--with-gameuser' now allows you to specify a
510 group instead of a user if its argument is prefixed by ':' (a colon).
511 This will cause the game score files in ${localstatedir}/games/emacs
512 to be owned by that group, and the helper program for updating them to
513 be installed setgid. The option now defaults to the 'games' group.
514
515 ---
516 ** The 'grep-changelog' script (and its manual page) are no longer included.
517 It has no particular connection to Emacs and has not changed in years,
518 so if you want to use it, you can always take a copy from an older Emacs.
519
520 ---
521 ** Emacs 25 comes with a new set of icons.
522 Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
523 The old Emacs logo icons are available as 'emacs23.png' in the same location.
524
525 ---
526 ** New make target 'check-expensive' to run additional tests.
527 This includes all tests which run via "make check", plus additional
528 tests which take more time to perform.
529
530 \f
531 * Startup Changes in Emacs 25.1
532
533 +++
534 ** When Emacs is given a file as a command line argument and
535 'initial-buffer-choice' is non-nil, display both the file and
536 'initial-buffer-choice'. When Emacs is given more than one file and
537 'initial-buffer-choice' is non-nil, show 'initial-buffer-choice'
538 and *Buffer List*. This makes Emacs convenient to use from the
539 command line when 'initial-buffer-choice' is non-nil.
540
541 +++
542 ** The value of 'initial-scratch-message' is now treated as a doc string
543 and can contain escape sequences for command keys, quotes, and the like.
544
545 ---
546 ** The default height of GUI frames was enlarged.
547 This is so there's enough space in the initial window to display the
548 optional text about recovering crashes sessions, without losing the
549 splash image display.
550
551 \f
552 * Changes in Emacs 25.1
553
554 +++
555 ** Xwidgets: a new feature for embedding native widgets inside Emacs buffers.
556 If you have gtk3 and webkitgtk3 installed, and Emacs was built with
557 xwidget support, you can access the embedded webkit browser with 'M-x
558 xwidget-webkit-browse-url'. This opens a new buffer with the embedded
559 browser. The buffer will have a new mode, 'xwidget-webkit-mode'
560 (similar to 'image-mode'), which supports the webkit widget.
561
562 +++
563 *** New functions for xwidget-webkit mode 'xwidget-webkit-insert-string',
564 'xwidget-webkit-adjust-size-dispatch', 'xwidget-webkit-back',
565 'xwidget-webkit-browse-url', 'xwidget-webkit-reload',
566 'xwidget-webkit-current-url', 'xwidget-webkit-scroll-backward',
567 'xwidget-webkit-scroll-forward', 'xwidget-webkit-scroll-down',
568 'xwidget-webkit-scroll-up'.
569
570 +++
571 ** Emacs can now load shared/dynamic libraries (modules).
572 A dynamic Emacs module is a shared library that provides additional
573 functionality for use in Emacs Lisp programs, just like a package
574 written in Emacs Lisp would. The functions 'load', 'require',
575 'load-file', etc. were extended to load such modules, as they do with
576 Emacs Lisp packages. The new variable 'module-file-suffix' holds the
577 system-dependent value of the file-name extension ('.so' on Posix
578 hosts) of the module files.
579
580 A module should export a C-callable function named
581 'emacs_module_init', which Emacs will call as part of the call to
582 'load' or 'require' which loads the module. It should also export a
583 symbol named 'plugin_is_GPL_compatible' to indicate that its code is
584 released under the GPL or compatible license; Emacs will refuse to
585 load modules that don't export such a symbol.
586
587 If a module needs to call Emacs functions, it should do so through the
588 API defined and documented in the header file 'emacs-module.h'. Note
589 that any module that provides Lisp-callable functions will have to use
590 Emacs functions such as 'fset' and 'funcall', in order to register its
591 functions with the Emacs Lisp interpreter.
592
593 Modules can create 'user-ptr' Lisp objects that embed pointers to C
594 structs defined by the module. This is useful for keeping around
595 complex data structures created by a module, to be passed back to the
596 module's functions. User-ptr objects can also have associated
597 "finalizers" -- functions to be run when the object is GC'ed; this is
598 useful for freeing any resources allocated for the underlying data
599 structure, such as memory, open file descriptors, etc. A new
600 predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr'
601 object.
602
603 Loadable modules in Emacs are an experimental feature, and subject to
604 change in future releases. For that reason, their support is disabled
605 by default, and must be enabled by using the '--with-modules' option
606 at configure time.
607
608 +++
609 ** Network security (TLS/SSL certificate validity and the like) is
610 added via the new Network Security Manager (NSM) and controlled via
611 the 'network-security-level' variable.
612
613 +++
614 ** C-h l now also lists the commands that were run.
615
616 +++
617 ** x-select-enable-clipboard is renamed select-enable-clipboard
618 and x-select-enable-primary is renamed select-enable-primary.
619 Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
620 name it), with the proviso that on some systems (e.g. Windows)
621 select-enable-primary is ineffective since the system doesn't
622 have the equivalent of a primary selection.
623
624 +++
625 ** New option 'switch-to-buffer-in-dedicated-window' allows you to
626 customize how 'switch-to-buffer' proceeds interactively when the
627 selected window is strongly dedicated to its buffer.
628
629 +++
630 ** The option 'even-window-heights' has been renamed to
631 'even-window-sizes' and now handles window widths as well.
632
633 +++
634 ** terpri gets an optional arg ENSURE to conditionally output a newline.
635
636 +++
637 ** 'insert-register' now leaves point after the inserted text
638 when called interactively. A prefix argument toggles this behavior.
639
640 +++
641 ** The new variable 'term-file-aliases' replaces some files from lisp/term.
642 The function 'tty-run-terminal-initialization' consults this variable
643 when deciding what terminal-specific initialization code to run.
644
645 ---
646 ** New variable 'system-configuration-features', listing some of the
647 main features that Emacs was compiled with. This is mainly intended
648 for use in Emacs bug reports.
649
650 +++
651 ** A password is now hidden also when typed in batch mode. Another
652 hiding character but the default '.' can be used by let-binding the
653 variable 'read-hide-char'.
654
655 +++
656 ** The Emacs pseudo-random number generator can be securely seeded.
657 On system where Emacs can access the system entropy or some other
658 cryptographically secure random stream, it now uses that when 'random'
659 is called with its argument 't'. This allows cryptographically strong
660 random values; in particular, the Emacs server now uses this facility
661 to produce its authentication key.
662
663 ---
664 ** New input methods: 'tamil-dvorak' and 'programmer-dvorak'.
665
666 \f
667 * Editing Changes in Emacs 25.1
668
669 +++
670 ** M-x suggests shorthands and ignores obsolete commands for completion.
671
672 ** Changes in undo
673
674 +++
675 *** Successive single-char deletions are collapsed in the undo-log just like
676 successive char insertions. Which commands invoke this behavior is
677 controlled by the new 'undo-auto-amalgamate' function. See the node
678 "Undo" in the ELisp manual for more details.
679
680 +++
681 *** The heuristic used to insert 'undo-boundary' after each command
682 has changed, so that if a command causes changes in more than just the
683 current buffer, Emacs now calls 'undo-boundary' in every buffer
684 affected by the command.
685
686 +++
687 ** New command 'comment-line' bound to 'C-x C-;'.
688
689 ** New and improved facilities for inserting Unicode characters
690
691 ---
692 *** Unicode names entered via C-x 8 RET now use substring completion by default.
693
694 +++
695 *** C-x 8 now has shorthands for several chars, such as U+2010
696 (HYPHEN), U+2011 (NON-BREAKING HYPHEN), and U+2012 (FIGURE DASH). As
697 before, you can type C-x 8 C-h to list shorthands.
698
699 +++
700 *** New minor mode electric-quote-mode for using curved quotes as you
701 type. See also the new variable 'text-quoting-style'.
702
703 ---
704 ** New minor mode global-eldoc-mode is enabled by default.
705
706 ---
707 ** Emacs now uses "bracketed paste mode" on text terminals that support it.
708 Bracketed paste mode causes text terminals to wrap pasted text in special
709 escape sequences that allow Emacs to tell the difference between text
710 you type and text you paste from other applications. Emacs then
711 avoids interpreting each character in the pasted text as it does with
712 keyboard input, which results in a paste experience similar to that
713 under a window system, and significant performance improvements when
714 pasting large amounts of text.
715
716 Bracketed paste mode is disabled by default, so Emacs automatically
717 enables it at startup if the terminal supports it.
718
719 +++
720 ** Emacs now supports the latest version of the UBA.
721 The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
722 was updated to support all the latest additions and changes introduced
723 in Unicode Standard versions 6.3, 7.0, and the latest Unicode 8.0.
724 This includes full support for directional isolates and the
725 Bidirectional Parentheses Algorithm (BPA) specified by these Unicode
726 standards.
727
728 +++
729 ** You can access 'mouse-buffer-menu' (C-down-mouse-1) using C-f10.
730
731 +++
732 ** New buffer-local 'electric-pair-local-mode'.
733
734 +++
735 ** New variable 'fast-but-imprecise-scrolling' inhibits
736 fontification during full screen scrolling operations, giving less
737 hesitant operation during auto-repeat of C-v, M-v at the cost of
738 possible inaccuracies in the end position.
739
740 +++
741 ** New documentation command 'describe-symbol'.
742 Works for functions, variables, faces, etc. It is bound to 'C-h o' by
743 default.
744
745 +++
746 ** New function 'custom-prompt-customize-unsaved-options' checks for
747 unsaved customizations and prompts user to customize (if found). It
748 is intended for adding to 'kill-emacs-query-functions'.
749
750 +++
751 ** The old 'C-x w' bindings in hi-lock-mode are officially deprecated
752 in favor of the global 'M-s h' bindings introduced in Emacs-23.1.
753 They'll disappear soon.
754
755 \f
756 * Changes in Specialized Modes and Packages in Emacs 25.1
757
758 ** Checkdoc
759
760 +++
761 *** New command 'checkdoc-package-keywords' checks if the
762 current package keywords are recognized. Set the new option
763 'checkdoc-package-keywords-flag' to non-nil to make
764 'checkdoc-current-buffer' call this function automatically.
765
766 +++
767 *** New function 'checkdoc-file' checks for style errors.
768 It's meant for use together with 'compile':
769 emacs -batch --eval "(checkdoc-file \"subr.el\")"
770
771 ** Desktop
772
773 ---
774 *** The desktop format version has been upgraded from 206 to 208.
775 Although Emacs 25.1 can read a version 206 desktop, earlier Emacsen
776 cannot read a version 208 desktop. To upgrade your desktop file, you
777 must explicitly request the upgrade, by C-u M-x desktop-save. You are
778 recommended to do this as soon as you have firmly upgraded to Emacs
779 25.1 (or later). Should you ever need to downgrade your desktop file
780 to version 206, you can do this with C-u C-u M-x desktop-save.
781
782 +++
783 ** New function 'bookmark-set-no-overwrite' bound to C-x r M.
784 It raises an error if a bookmark of that name already exists,
785 unlike 'bookmark-set' which silently updates an existing bookmark.
786
787 ** Gnus
788
789 +++
790 *** New user options 'mm-html-inhibit-images' and 'mm-html-blocked-images'
791 now control how mm-* functions fetch and display images in an HTML
792 message. Gnus still uses 'gnus-inhibit-images' and 'gnus-blocked-images'
793 for that purpose, i.e., binds mm-html- variables with those gnus-
794 variables, but other packages do not have to bind gnus- variables now.
795
796 ---
797 *** 'mm-inline-text-html-with-images' has been removed.
798 Use 'mm-html-inhibit-images' instead. Note that the value is opposite
799 in meaning.
800
801 ** IMAP
802
803 ---
804 *** 'imap-ssl-program' has been removed, and imap.el uses the internal
805 GnuTLS encryption functions if possible.
806
807 ** JSON
808
809 ---
810 *** 'json-pretty-print' and 'json-pretty-print-buffer' now maintain
811 the ordering of object keys by default.
812
813 ---
814 *** New commands 'json-pretty-print-ordered' and
815 'json-pretty-print-buffer-ordered' pretty prints JSON objects with
816 object keys sorted alphabetically.
817
818 ** Prettify Symbols mode
819
820 +++
821 *** Prettify Symbols mode supports custom composition predicates. By
822 overriding the default 'prettify-symbols-compose-predicate', modes can
823 specify in which contexts a symbol may be displayed as some Unicode
824 character. 'prettify-symbols-default-compose-p' is the default which
825 is suitable for most programming languages such as C or Lisp (but not
826 (La)TeX).
827
828 +++
829 *** Symbols can be unprettified while point is inside them.
830 New variable 'prettify-symbols-unprettify-at-point' configures this.
831
832 ** Enhanced xterm support
833
834 ---
835 *** The new variable 'xterm-screen-extra-capabilities' for configuring xterm.
836 This variable tells Emacs which advanced capabilities are available in
837 the xterm terminal emulator used to display Emacs text-mode frames.
838 The default is to check each capability, and use it if available.
839 (This variable was introduced in Emacs 24.1, but was not announced in
840 its NEWS.)
841
842 ---
843 *** Killing text now also sets the CLIPBOARD/PRIMARY selection
844 in the surrounding GUI (using the OSC-52 escape sequence). This only works
845 if your xterm supports it and enables the 'allowWindowOps' options (disabled
846 by default at least in Debian, for security reasons).
847
848 Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52
849 escape sequence) if your xterm has the feature enabled but for that you
850 additionally need to add 'getSelection' to 'xterm-extra-capabilities'.
851
852 +++
853 *** 'xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it).
854
855 ---
856 ** The way to turn on and off 'save-place' mode has changed.
857 It is no longer sufficient to load the saveplace library and set
858 'save-place' non-nil. Instead, use the two new minor modes:
859 'save-place-mode' turns on saving last place in every file, and
860 'save-place-local-mode' does that only for the file in whose buffer it
861 is invoked. The 'save-place' variable is now an obsolete alias for
862 'save-place-mode', which replaces it, and 'toggle-save-place' is an
863 obsolete alias for the new 'save-place-local-mode' command.
864
865 ** ERC
866
867 +++
868 *** ERC can now hide message types by network or channel.
869 'erc-hide-list' will hide all messages of the specified type, while
870 'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the
871 specified message types for the respective specified targets.
872
873 ---
874 *** Reconnection is now asynchronous.
875
876 ---
877 *** Nick completion is now case-insensitive again after inadvertently
878 being made case-sensitive in Emacs 24.2.
879
880 ** MPC
881
882 ---
883 *** New commands, key binds, and menu items.
884
885 **** '<' and '>' for navigating previous and next tracks in playlist
886
887 **** New play/pause command 'mpc-toggle-play' bound to 's'
888
889 **** 'g' bound to new command 'mpc-seek-current' will navigate current
890 track.
891
892 **** New commands 'mpc-toggle-{consume,repeat,single,shuffle}' for
893 toggling playback modes.
894
895 ---
896 *** Now supports connecting to a UNIX domain socket.
897
898 ---
899 *** Looks at more image file names to use as album art.
900 Case-insensitively tries for .folder.png (freedesktop) and folder.jpg
901 (XP) in addition to cover.jpg.
902
903 ---
904 *** Searches in more locations for MPD configuration files.
905 MPD supports the XDG base directory specification since version 0.17.6.
906
907 ** Midnight-mode
908
909 ---
910 *** 'midnight-mode' is now a proper minor mode.
911
912 ---
913 *** clean-buffer-*-regexps can now specify buffers via predicate functions.
914
915 ** package.el
916
917 +++
918 *** New "external" package status.
919 An external package is any installed package that's not built-in and
920 not from 'package-user-dir', which usually means it's from an entry in
921 'package-directory-list'. They are treated much like built-in
922 packages, in that they cannot be deleted through the package menu and
923 are not considered for upgrades.
924
925 The effect is that a user can manually place a specific version of a
926 package inside 'package-directory-list' and the package menu will
927 always respect that.
928
929 +++
930 *** If a package is available on multiple archives and one has higher
931 priority (as per 'package-archive-priorities') only that one is
932 listed. This can be configured with 'package-menu-hide-low-priority'.
933
934 +++
935 *** 'package-menu-toggle-hiding' now toggles the hiding of packages.
936 This includes the above-mentioned low-priority packages, as well as
937 available packages whose version is lower than the currently installed
938 version (which were previously impossible to display).
939 This allows users to downgrade a package if a lower version is
940 available.
941
942 ---
943 *** When filtering the package menu, keywords starting with "arc:" or
944 "status:" represent package archive or status, respectively, instead
945 of actual keywords.
946
947 ---
948 *** Most functions which involve downloading information now take an
949 ASYNC argument. If it is non-nil, package.el performs the download(s)
950 asynchronously.
951
952 ---
953 *** New variable 'package-menu-async' controls whether the
954 package-menu uses asynchronous downloads.
955
956 ---
957 *** 'package-install-from-buffer' and 'package-install-file' work on directories.
958 This follows the same rules as installing from a .tar file, except the
959 -pkg file is optional.
960
961 ---
962 *** Packages which are dependencies of other packages cannot be deleted.
963 The FORCE argument to 'package-delete' overrides this.
964
965 ---
966 *** New custom variable 'package-selected-packages' tracks packages
967 which were installed by the user (as opposed to installed as
968 dependencies). This variable can also be manually customized.
969
970 ---
971 *** New command 'package-install-selected-packages' installs all
972 packages from 'package-selected-packages' which are currently missing.
973
974 ---
975 *** 'package-install' function now takes a DONT-SELECT argument. If
976 this function is called interactively or if DONT-SELECT is nil, add the
977 package being installed to 'package-selected-packages'.
978
979 ---
980 *** New command 'package-autoremove' removes all packages which were
981 installed strictly as dependencies but are no longer needed.
982
983 +++
984 ** Shell
985
986 When you invoke 'shell' interactively, the *shell* buffer will now
987 display in a new window. However, you can customize this behavior via
988 the 'display-buffer-alist' variable. For example, to get
989 the old behavior -- *shell* buffer displays in current window -- use
990 (add-to-list 'display-buffer-alist
991 '("^\\*shell\\*$" . (display-buffer-same-window))).
992
993 ** EIEIO
994 +++
995 *** The ':protection' slot option is not obeyed any more.
996 +++
997 *** The 'newname' argument to constructors is optional&deprecated.
998 If you need your objects to be named, do it by inheriting from 'eieio-named'.
999 +++
1000 *** The <class>-list-p and <class>-child-p functions are declared obsolete.
1001 +++
1002 *** The <class> variables are declared obsolete.
1003 +++
1004 *** The <initarg> variables are declared obsolete.
1005 +++
1006 *** defgeneric and defmethod are declared obsolete.
1007 Use the equivalent facilities from cl-generic.el instead.
1008 +++
1009 *** 'constructor' is now an obsolete alias for 'make-instance'.
1010 --- 'pcase' accepts a new UPattern 'eieio'.
1011
1012 ** ido
1013
1014 +++
1015 *** New command 'ido-bury-buffer-at-head' bound to C-S-b
1016 Bury the buffer at the head of 'ido-matches', analogous to how C-k
1017 kills the buffer at head.
1018
1019 ---
1020 *** A prefix argument to 'ido-restrict-to-matches' will reverse its
1021 meaning, and the list is restricted to those elements that do not
1022 match the current input.
1023
1024 ** Minibuffer
1025
1026 +++
1027 *** You can use <UP> and <DOWN> arrow keys to move through history by lines.
1028 The new commands 'next-line-or-history-element' and
1029 'previous-line-or-history-element', bound to <UP> and <DOWN> in the
1030 minibuffer, allow by-line movement through minibuffer history,
1031 similarly to an ordinary buffer. Only when point moves over
1032 the bottom/top of the minibuffer it goes to the next/previous history
1033 element. 'M-p' and 'M-n' still move directly to previous/next history
1034 item as before.
1035
1036 ** Search and Replace
1037
1038 +++
1039 *** 'isearch' and 'query-replace' can now perform character folding in matches.
1040 This is analogous to case folding, but instead of disregarding case
1041 variants, it disregards wider classes of distinctions between similar
1042 characters. (Case folding is a special case of character folding.)
1043 This means many characters in the search string will match entire
1044 groups of characters instead of just themselves.
1045
1046 For instance, the ASCII double quote character " will match all
1047 variants of double quotes, and the letter 'a' will match all of its
1048 accented cousins, even those composed of multiple characters, as well
1049 as many other symbols like U+249C (PARENTHESIZED LATIN SMALL LETTER
1050 A).
1051
1052 Character folding is enabled by customizing 'search-default-mode' to
1053 the value 'character-fold-to-regexp'. You can also toggle character
1054 folding in the middle of a search by typing 'M-s ''.
1055
1056 'query-replace' honors character folding if the new variable
1057 'replace-character-fold' is customized to a non-nil value.
1058
1059 +++
1060 *** New user option 'search-default-mode'.
1061 This option specifies the default mode for Isearch. The default
1062 value, nil specifies that Isearch does literal searches (however,
1063 'case-fold-search' and 'isearch-lax-whitespace' may still be applied,
1064 as in previous Emacs versions).
1065
1066 +++
1067 *** New function 'character-fold-to-regexp' can be used
1068 by searching commands to produce a regexp matching anything that
1069 character-folds into STRING.
1070
1071 +++
1072 *** The new M-s M-w key binding uses eww to search the web for the
1073 text in the region. The search engine to use for this is specified by
1074 the customizable variable 'eww-search-prefix'.
1075
1076 +++
1077 *** Query-replace history is enhanced.
1078 When query-replace reads the FROM string from the minibuffer, typing
1079 'M-p' will now show previous replacements as "FROM SEP TO", where FROM
1080 and TO are the original text and its replacement, and SEP is an arrow
1081 string defined by the new variable 'query-replace-from-to-separator'.
1082 To select a prior replacement, type 'M-p' until the desired
1083 replacement appears in the minibuffer, and then exit the minibuffer by
1084 typing RET.
1085
1086 ** Calc
1087 +++
1088 *** If 'quick-calc' is called with a prefix argument, insert the
1089 result of the calculation into the current buffer.
1090
1091 +++
1092 ** In Edebug, you can now set the initial mode with C-x C-a C-m. With
1093 this you can tell Edebug not to stop at the start of the first
1094 instrumented function.
1095
1096 ** ElDoc
1097
1098 +++
1099 *** New minor mode 'global-eldoc-mode'
1100 It is turned on by default, and affects '*scratch*' and other buffers
1101 whose major mode supports Emacs Lisp.
1102
1103 ---
1104 *** 'eldoc-documentation-function' now defaults to 'ignore'
1105
1106 ---
1107 *** 'describe-char-eldoc' displays information about character at point,
1108 and can be used as a default value of 'eldoc-documentation-function'. It is
1109 useful when, for example, one needs to distinguish various spaces - e.g.,
1110 U+00A0 (NO-BREAK SPACE), U+2002 (EN SPACE), and U+2009 (THIN SPACE) - while
1111 using mono-spaced font.
1112
1113 ** eww
1114
1115 ---
1116 *** HTML can now be rendered using variable-width fonts.
1117
1118 +++
1119 *** A new command 'F' ('eww-toggle-fonts') can be used to toggle
1120 whether to use variable-pitch fonts or not. The user can also
1121 customize the 'shr-use-fonts' variable.
1122
1123 +++
1124 *** A new command 'R' ('eww-readable') will try do identify the main
1125 textual parts of a web page and display only that, leaving menus and
1126 the like off the page.
1127
1128 +++
1129 *** A new command 'D' ('eww-toggle-paragraph-direction') allows you to
1130 toggle the paragraph direction between left-to-right and right-to-left.
1131
1132 ---
1133 *** You can now use several eww buffers in parallel by renaming eww
1134 buffers you want to keep separate.
1135
1136 +++
1137 *** Partial state of the eww buffers (the URIs and the titles of the
1138 pages visited) is now preserved in the desktop file.
1139
1140 +++
1141 *** 'eww-after-render-hook' is now called after eww has rendered
1142 the data in the buffer.
1143
1144 ---
1145 *** The 'eww-reload' command now takes a prefix to not reload via
1146 the net, but just use the local copy of the HTML.
1147
1148 +++
1149 *** The DOM shr and eww uses has been changed to the general Emacs
1150 xml.el/libxml2 DOM, and a new package dom.el has been added to
1151 interact with this DOM. See the Emacs Lisp manual for interface
1152 details.
1153
1154 +++
1155 *** 'mailcap-mime-data' is now consulted when displaying PDF files.
1156
1157 +++
1158 *** The new 'S' command will list all eww buffers, and allow managing
1159 them.
1160
1161 ---
1162 *** https pages with valid certificates have headers marked in green, while
1163 invalid certificates are marked in red.
1164
1165 ** Message mode
1166
1167 ---
1168 *** text/html messages that contain inline image parts will be
1169 transformed into multipart/related messages before sending.
1170
1171 +++
1172 ** In Show Paren Mode, a parenthesis can be highlighted when point
1173 stands inside it, and certain parens can be highlighted when point is
1174 at BOL or EOL, or in whitespace there. To enable these, customize,
1175 respectively, 'show-paren-when-point-inside-paren' or
1176 'show-paren-when-point-in-periphery'.
1177
1178 ---
1179 ** If gpg2 exists on the system, it is now used as the default value
1180 of 'epg-gpg-program' (instead of gpg).
1181
1182 ** Lisp mode
1183
1184 ---
1185 *** Strings after ':documentation' are highlighted as docstrings.
1186 This enhances Lisp mode fontification to handle documentation of the
1187 form '(:documentation "the doc string")' used in Common Lisp code for
1188 CLOS class and slot documentation.
1189
1190 ** Rectangle editing
1191
1192 +++
1193 *** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
1194
1195 +++
1196 *** C-x C-x in rectangle-mark-mode now cycles through the four corners.
1197 *** 'string-rectangle' provides on-the-fly preview of the result.
1198
1199 +++
1200 ** New font-lock functions 'font-lock-ensure' and 'font-lock-flush'.
1201 These should be used in preference to 'font-lock-fontify-buffer' when
1202 called from Lisp.
1203
1204 ---
1205 ** Macro 'minibuffer-with-setup-hook' can optionally append a function
1206 to 'minibuffer-setup-hook'.
1207
1208 If the first argument of the macro is of the form '(:append FUN)',
1209 then FUN will be appended to 'minibuffer-setup-hook', instead of
1210 prepending it.
1211
1212 ** cl-lib
1213 +++
1214 *** New functions 'cl-fresh-line', 'cl-digit-char-p', and 'cl-parse-integer'.
1215
1216 ---
1217 *** 'pcase' accepts the new UPattern 'cl-struct'.
1218
1219 ** Calendar and diary
1220
1221 +++
1222 *** The default 'diary-file' is now located in .emacs.d.
1223
1224 +++
1225 *** New commands to insert diary entries with Chinese dates:
1226 'diary-chinese-insert-anniversary-entry' 'diary-chinese-insert-entry'
1227 'diary-chinese-insert-monthly-entry', 'diary-chinese-insert-yearly-entry'.
1228
1229 +++
1230 *** The calendar can now list and mark diary entries with Chinese dates.
1231 See 'diary-chinese-list-entries' and 'diary-chinese-mark-entries'.
1232
1233 ---
1234 *** The option 'calendar-mode-line-format' can now be nil,
1235 which means to do nothing special with the mode line in calendars.
1236
1237 +++
1238 *** New option 'calendar-weekend-days'.
1239 The option customizes which day headers receive the
1240 'calendar-weekend-header' face.
1241
1242 ---
1243 *** New optional args N and STRING for 'holiday-greek-orthodox-easter'.
1244
1245 ---
1246 *** Many items obsolete since at least version 23.1 have been removed.
1247 The majority were function/variable/face aliases, too numerous to list here.
1248 The remainder were:
1249
1250 **** Functions 'calendar-one-frame-setup', 'calendar-only-one-frame-setup',
1251 'calendar-two-frame-setup', 'european-calendar', 'american-calendar'.
1252
1253 **** Hooks 'cal-menu-load-hook', 'cal-x-load-hook'.
1254
1255 **** Macro 'calendar-for-loop'.
1256
1257 **** Variables 'european-calendar-style', 'diary-face', 'hebrew-holidays-{1,4}'.
1258
1259 **** The nil and list forms of 'diary-display-function'.
1260
1261 +++
1262 ** New ERT function 'ert-summarize-tests-batch-and-exit'.
1263 If the output of ERT tests in batch mode execution can be saved to a
1264 log file, then it can be passed as an argument to the above function
1265 to produce a neat summary.
1266
1267 ---
1268 ** New js.el option 'js-indent-first-init'.
1269
1270 ** Info
1271
1272 ---
1273 ** Info mode now displays symbol names in fixed-pitch font.
1274 If you want to get the old behavior back, customize the 'Info-quoted'
1275 face to use the same definitions as the default face.
1276
1277 ---
1278 *** 'Info-fontify-maximum-menu-size' can be t for no limit.
1279
1280 +++
1281 *** 'info-display-manual' can now be given a prefix argument which (any
1282 non-nil value) directs the command to limit the completion
1283 alternatives to currently visited manuals.
1284
1285 ---
1286 ** ntlm.el has support for NTLM2.
1287
1288 ** Rmail
1289
1290 +++
1291 *** The Rmail commands 'd', 'C-d' and 'u' take optional repeat counts
1292 to delete or undelete multiple messages.
1293
1294 +++
1295 *** Rmail can now render HTML mail messages if your Emacs was built with
1296 libxml2 or if you have the Lynx browser installed. By default, Rmail
1297 will display the HTML version of a mail message that has both HTML and
1298 plain text parts, if display of HTML email is possible; customize the
1299 'rmail-mime-prefer-html' option to 'nil' if you don't want that.
1300
1301 +++
1302 *** In the commands that make summaries by subject, recipients, or senders,
1303 you can no longer use commas to separate regular expressions.
1304
1305 +++
1306 ** SES now supports local printer functions; see 'ses-define-local-printer'.
1307
1308 ** Shell-script Mode
1309 ---
1310 *** In sh-mode you can now use 'sh-shell' as a file-local variable to
1311 specify the type of shell in use (bash, csh, etc).
1312
1313 ---
1314 *** New value 'always' for 'sh-indent-after-continuation'.
1315 This provides old-style ("dumb") indentation of continued lines.
1316 See the doc string of 'sh-indent-after-continuation' for details.
1317
1318 ** TLS
1319 ---
1320 *** Fatal TLS errors are now silent by default.
1321
1322 ---
1323 *** If Emacs isn't built with TLS support, an external TLS-capable
1324 program is used instead. This program used to be run in --insecure
1325 mode by default, but has now changed to be secure instead, and will
1326 fail if you try to connect to non-verifiable hosts. This is
1327 controlled by the 'tls-program' variable.
1328
1329 ** URL
1330
1331 +++
1332 *** The URL package accepts now the protocols "ssh", "scp" and "rsync".
1333 When 'url-handler-mode' is enabled, file operations for these
1334 protocols as well as for "telnet" and "ftp" are passed to Tramp.
1335
1336 +++
1337 *** The URL package allows customizing the 'url-user-agent' string.
1338 The new 'url-user-agent' variable can be customized to be a string or
1339 a function.
1340
1341 ---
1342 *** The new interface variable 'url-request-noninteractive' can be used
1343 to specify that we're running in a noninteractive context, and that
1344 we should not be queried about things like TLS certificate validity.
1345
1346 ---
1347 *** 'url-mime-accept-string' can now be used as in "interface"
1348 variable, meaning you can bind it around an 'url-retrieve' call.
1349
1350 ---
1351 *** If URL is used with a https connection, the first callback argument
1352 plist will contain a :peer element that has the output of
1353 'gnutls-peer-status' (if Emacs is built with GnuTLS support).
1354
1355 ** Tramp
1356
1357 +++
1358 *** New connection method "afp", which allows you to access Mac OS X
1359 volumes via the Apple Filing Protocol.
1360
1361 +++
1362 *** New connection method "nc", which allows you to access dumb
1363 busyboxes.
1364
1365 +++
1366 *** Method-specific parameters can be overwritten now with variable
1367 'tramp-connection-properties'.
1368
1369 ---
1370 *** Handler for 'file-notify-valid-p' for remote machines that support
1371 filesystem notifications.
1372
1373 ** SQL mode
1374
1375 ---
1376 *** New user variable 'sql-default-directory' enables remote
1377 connections using Tramp.
1378
1379 ---
1380 *** New command 'sql-send-line-and-next'.
1381 This command, bound to 'C-c C-n' by default, sends the current line to
1382 the SQL process and advances to the next line, skipping whitespace and
1383 comments.
1384
1385 ---
1386 *** Added support for Vertica SQL.
1387
1388 ** VC and related modes
1389
1390 +++
1391 *** Basic push support, via 'vc-push', bound to 'C-x v P'.
1392 Implemented for Bzr, Git, Hg. As part of this change, the pre-existing
1393 (undocumented) command vc-hg-push now behaves slightly differently.
1394
1395 +++
1396 *** The new command vc-region-history shows the log+diff of the active region.
1397
1398 +++
1399 *** You can refresh the VC state of a file buffer with 'M-x vc-refresh-state'.
1400 This command is useful when you perform version control commands
1401 outside Emacs (e.g., from the shell prompt), or if you switch the VC
1402 back-end for the buffer's file, or remove it from version control.
1403
1404 +++
1405 *** New option 'vc-annotate-background-mode' controls whether
1406 the color range from 'vc-annotate-color-map' is applied to the
1407 background or to the foreground.
1408
1409 ---
1410 *** New options for customizing encoding of Git commit log messages.
1411 The new user options 'vc-git-commits-coding-system' and
1412 'vc-git-log-output-coding-system' specify the encoding of log messages
1413 sent to Git when committing, and the decoding of log messages read
1414 from Git history commands. These options default to UTF-8; if
1415 customized, they should be consistent with the Git config variables
1416 i18n.commitEncoding and i18n.logOutputEncoding.
1417 ('vc-git-commits-coding-system' existed previously, but was a
1418 variable, not a user option.)
1419
1420 +++
1421 *** 'compare-windows' now compares text with the most recently selected window
1422 instead of the next window. If you want the previous behavior of
1423 comparing with the next window, customize the new option
1424 'compare-windows-get-window-function' to the value
1425 'compare-windows-get-next-window'.
1426
1427 ---
1428 *** Two new faces 'compare-windows-removed' and 'compare-windows-added'
1429 replace the face 'compare-windows', which is now an obsolete alias for
1430 'compare-windows-added'.
1431
1432 ---
1433 *** The VC state indicator in the mode line now has different faces
1434 corresponding to each of the possible states. See the 'vc-faces'
1435 customization group.
1436
1437 ---
1438 *** 'log-edit-insert-changelog' converts "(tiny change)" to
1439 "Copyright-paperwork-exempt: yes". Set 'log-edit-rewrite-tiny-change'
1440 nil to disable this.
1441
1442 +++
1443 *** vc-mcvs.el has been removed.
1444
1445 ---
1446 ** VHDL mode now supports VHDL'08.
1447
1448 ** Calculator
1449
1450 ---
1451 *** Decimal display mode uses "," groups, so it's more
1452 fitting for use in money calculations
1453
1454 ---
1455 *** Factorial works with non-integer inputs.
1456
1457 ** Hide-IfDef mode
1458
1459 ---
1460 *** Hide-IfDef mode now support full C/C++ expressions in macros,
1461 macro argument expansion, interactive macro evaluation and automatic
1462 scanning of #define'd symbols.
1463
1464 ---
1465 *** New command 'hif-evaluate-macro', bound to 'C-c @ e', displays the
1466 result of evaluating a macro.
1467
1468 ---
1469 *** New command 'hif-clear-all-ifdef-define', bound to 'C-c @ C', clears
1470 all defined symbols in 'hide-ifdef-env'.
1471
1472 ---
1473 *** New custom variable 'hide-ifdef-header-regexp' to define C/C++ header
1474 file name patterns. Defaults to files whose extension is one of '.h',
1475 '.hh', '.hpp', '.hxx', or '.h++', matched case-insensitively.
1476
1477 ---
1478 *** New custom variable 'hide-ifdef-expand-reinclusion-protection' to prevent
1479 reinclusion protected (a.k.a. "idempotent") header files from being hidden.
1480 (This could happen when an idempotent header file is visited again,
1481 when its guard symbol is already defined.) Defaults to 't'.
1482
1483 ---
1484 *** New custom variable 'hide-ifdef-exclude-define-regexp' to define symbol
1485 name patterns (e.g. all "FOR_DOXYGEN_ONLY_*") to be ignored when
1486 looking for macro definitions. By default, no symbols are ignored.
1487
1488 ** TeX mode
1489
1490 +++
1491 *** New custom variable 'tex-print-file-extension' to help users who
1492 use PDF instead of DVI.
1493
1494 +++
1495 *** TeX mode now supports Prettify Symbols mode. When enabling
1496 'prettify-symbols-mode' in a tex-mode buffer, \alpha ... \omega, and
1497 many other math macros are displayed using unicode characters.
1498
1499 +++
1500 ** New 'big-indent' style in 'whitespace-mode' highlights deep indentation.
1501 By default, 32 consecutive spaces or four consecutive TABs are
1502 considered to be too deep, but the new variable
1503 'whitespace-big-indent-regexp' can be customized to change that.
1504
1505 ---
1506 ** New options in 'tildify-mode'.
1507 New options 'tildify-space-string', 'tildify-pattern', and
1508 'tildify-foreach-region-function' variables make
1509 'tildify-string-alist', 'tildify-pattern-alist', and
1510 'tildify-ignored-environments-alist' variables (as well as a few
1511 helper functions) obsolete.
1512
1513 +++
1514 ** New package Xref replaces Etags's front-end and UI
1515
1516 The new package Xref provides a generic framework and new commands to
1517 find and move to definitions of functions, macros, data structures
1518 etc., as well as go back to the location where you were before moving
1519 to a definition. It supersedes and obsoletes many Etags commands,
1520 while still using the etags.el code that reads the TAGS tables as one
1521 of its back-ends.
1522
1523 The command 'xref-find-definitions' replaces 'find-tag' and provides
1524 an interface to pick one definition among several.
1525 'tags-loop-continue' is now unbound. 'xref-pop-marker-stack' replaces
1526 'pop-tag-mark', but has a keybinding ('M-,') different from the one
1527 'pop-tag-mark' used.
1528
1529 'xref-find-definitions-other-window' replaces 'find-tag-other-window'.
1530 'xref-find-definitions-other-frame' replaces 'find-tag-other-frame'.
1531 'xref-find-apropos' replaces 'find-tag-regexp'.
1532
1533 As a result of this, the following commands are now obsolete:
1534 'find-tag-other-window', 'find-tag-other-frame', 'find-tag-regexp',
1535 'tags-apropos'.
1536
1537 'tags-loop-continue' is not obsolete because it's still useful in
1538 'tags-search' and 'tags-query-replace', for which there are no direct
1539 replacements yet.
1540
1541 +++
1542 *** Variants of 'tags-search' and 'tags-query-replace' in Dired were also
1543 replaced by xref-style commands, see the "Dired" section below.
1544
1545 +++
1546 *** New variables
1547
1548 'find-tag-marker-ring-length' is now an obsolete alias for
1549 'xref-marker-ring-length'. 'find-tag-marker-ring' is now an obsolete
1550 alias for a private variable. 'xref-push-marker-stack' and
1551 'xref-pop-marker-stack' should be used instead to manipulate the stack
1552 of searches for definitions.
1553
1554 ---
1555 *** 'xref-find-definitions' and 'describe-function' now display
1556 information about mode local overrides (defined by cedet/mode-local.el
1557 'define-overloadable-function' 'define-mode-local-overrides').
1558
1559 The framework's Lisp API is still experimental and can change in major,
1560 backward-incompatible ways.
1561
1562 ---
1563 ** New package Project
1564
1565 The new package Project provides generic infrastructure for dealing
1566 with projects. The main commands included in it are
1567 'project-find-file' and 'project-find-regexp'.
1568
1569 The Lisp API of this package is still experimental.
1570
1571 ** EUDC
1572 EUDC's LDAP backend has been improved.
1573
1574 +++
1575 *** EUDC supports LDAP-over-SSL URLs (ldaps://).
1576
1577 ---
1578 *** EUDC passes LDAP passwords through a pipe to the ldapsearch
1579 subprocess instead of on the command line.
1580
1581 ---
1582 *** EUDC handles LDAP wildcards automatically so the user shouldn't
1583 need to configure this manually anymore.
1584
1585 +++
1586 *** The LDAP configuration section of EUDC's manual has been
1587 rewritten.
1588
1589 There have also been customization changes.
1590
1591 +++
1592 *** New custom variable 'eudc-server-hotlist' to allow specifying
1593 multiple EUDC servers in init file.
1594
1595 +++
1596 *** Custom variable 'eudc-inline-query-format' defaults to completing
1597 on email and firstname instead of surname.
1598
1599 ---
1600 *** Custom variable 'eudc-expansion-overwrites-query' defaults to nil
1601 to avoid interfering with the kill ring.
1602
1603 +++
1604 *** Custom variable 'eudc-inline-expansion-format' defaults to
1605 "Firstname Surname <mail-address>".
1606
1607 +++
1608 *** Custom variable 'eudc-options-file' defaults to
1609 "~/.emacs.d/eudc-options".
1610
1611 ---
1612 *** New custom variable 'ldap-ldapsearch-password-prompt-regexp' to
1613 allow overriding the regular expression that recognizes the ldapsearch
1614 command line's password prompt.
1615
1616 ---
1617 EUDC's BBDB backend now supports BBDB 3.
1618
1619 ---
1620 EUDC's PH backend (eudcb-ph.el) is obsolete.
1621
1622 ** Eshell
1623
1624 +++
1625 *** The new built-in command 'clear' can scroll window contents out of sight.
1626 If provided with an optional non-nil argument, the scrollback contents will be cleared.
1627
1628 +++
1629 *** New buffer syntax '#<buffer-name>', which is equivalent to
1630 '#<buffer buffer-name>'. This shorthand makes interacting with
1631 buffers from eshell more convenient. Custom variable
1632 'eshell-buffer-shorthand', which has been broken for a while, has been
1633 removed.
1634
1635 +++
1636 *** By default, eshell "visual" program buffers (created by
1637 'eshell-visual-commands' and similar custom vars) are no longer killed
1638 when their processes die. This fixes issues with short-lived commands
1639 and makes visual programs more useful in general. For example, if
1640 "git log" is a visual command, it will always show the visual command
1641 buffer, even if the "git log" process dies. For the old behavior,
1642 make the new option 'eshell-destroy-buffer-when-process-dies' non-nil.
1643
1644 ** Browse-url
1645
1646 ---
1647 *** Support for the Google Chrome web browser.
1648
1649 ---
1650 *** Support for the Conkeror web browser.
1651
1652 ---
1653 *** Support for several ancient browsers is now officially obsolete.
1654
1655 +++
1656 ** tar-mode: new 'tar-new-entry' command, allowing for new members to
1657 be added to the archive.
1658
1659 ** Autorevert
1660
1661 ---
1662 *** Dired buffers are also auto-reverted via file notifications, if
1663 Emacs is compiled with file notification support.
1664
1665 ---
1666 *** 'auto-revert-use-notify' is set to nil in 'global-auto-revert-mode'.
1667 See <http://debbugs.gnu.org/22814>.
1668
1669 ** File Notifications
1670
1671 +++
1672 *** The kqueue library is integrated for *BSD and Mac OS X machines.
1673
1674 +++
1675 *** The new event 'stopped' signals, that a file notification watch is
1676 not active any longer.
1677
1678 +++
1679 *** The new function 'file-notify-valid-p' checks, whether a file
1680 notification descriptor still corresponds to an activate watch.
1681
1682 ** Dired
1683
1684 +++
1685 *** The command 'dired-do-compress' bound to 'Z' now can compress
1686 directories and decompress zip files.
1687
1688 +++
1689 *** New command 'dired-do-compress-to' bound to 'c' can be used to
1690 compress many marked files into a single named archive. The
1691 compression command is determined from the new
1692 'dired-compress-files-alist' variable.
1693
1694 +++
1695 *** New user interface for the 'A' and 'Q' commands.
1696 These keys, now bound to 'dired-do-find-regexp' and
1697 'dired-do-find-regexp-and-replace', work similarly to 'xref-find-apropos'
1698 and 'xref-query-replace-in-results': they present the matches
1699 in the '*xref*' buffer and let you move through the matches. No need
1700 to use 'tags-loop-continue' to resume the search or replace loop. The
1701 previous commands, 'dired-do-search' and
1702 'dired-do-query-replace-regexp', are still available, but not bound to
1703 keys; rebind 'A' and 'Q' to invoke them if you want the old behavior
1704 back. We intend to obsolete the old commands in a future release.
1705
1706 ** Tabulated List Mode
1707
1708 +++
1709 *** It is now safe for a mode that derives 'tabulated-list-mode' to not
1710 call 'tabulated-list-init-header', in which case it will have no
1711 header.
1712
1713 +++
1714 *** 'tabulated-list-print' takes a second optional argument, update,
1715 which specifies an alternative printing method which is faster when
1716 few or no entries have changed.
1717
1718 ** Obsolete packages
1719
1720 ---
1721 *** gulp.el
1722
1723 ---
1724 *** landmark.el (moved to elpa.gnu.org)
1725
1726 \f
1727 * New Modes and Packages in Emacs 25.1
1728
1729 ---
1730 ** pinentry.el allows GnuPG passphrase to be prompted through the
1731 minibuffer instead of a graphical dialog, depending on whether the gpg
1732 command is called from Emacs (i.e., INSIDE_EMACS environment variable
1733 is set). This feature requires newer versions of GnuPG (2.1.5 or
1734 later) and Pinentry (0.9.5 or later). To use this feature, add
1735 "allow-emacs-pinentry" to "~/.gnupg/gpg-agent.conf" and reload the
1736 configuration with "gpgconf --reload gpg-agent".
1737
1738 +++
1739 ** cl-generic.el provides CLOS-style multiple-dispatch generic functions.
1740 The main entry points are 'cl-defgeneric' and 'cl-defmethod'. See the
1741 node "Generic Functions" in the Emacs Lisp manual for more details.
1742
1743 ---
1744 ** scss-mode (a minor variant of css-mode) is a major mode for editing
1745 SCSS (Sassy CSS) files.
1746
1747 ---
1748 ** let-alist is a new macro (and a package) that allows one to easily
1749 let-bind the values stored in an alist.
1750
1751 ---
1752 ** 'tildify-mode' allows automatic insertion of hard spaces as one
1753 types the text. Breaking line after a single-character words is
1754 forbidden by Czech and Polish typography (and may be discouraged in
1755 other languages), so 'auto-tildify-mode' makes it easier to create
1756 a typographically-correct documents.
1757
1758 ---
1759 ** The 'seq' library adds sequence manipulation functions and macros
1760 that complement basic functions provided by subr.el. All functions
1761 are prefixed with 'seq-' and work on lists, strings and vectors.
1762 'pcase' accepts a new Upattern 'seq'.
1763
1764 ---
1765 ** The 'map' library provides map-manipulation functions that work on
1766 alists, hash-table and arrays. All functions are prefixed with
1767 'map-'. 'pcase' accepts a new UPattern 'map'.
1768
1769 ---
1770 ** The 'thunk' library provides functions and macros to control the
1771 evaluation of forms.
1772
1773 ---
1774 ** js-jsx-mode (a minor variant of js-mode) provides indentation
1775 support for JSX, an XML-like syntax extension to ECMAScript.
1776
1777 \f
1778 * Incompatible Lisp Changes in Emacs 25.1
1779
1780 ---
1781 ** 'setq' and 'setf' must now be called with an even number of
1782 arguments. The earlier behavior of silently supplying a nil to the
1783 last variable when there was an odd number of arguments has been
1784 eliminated.
1785
1786 +++
1787 ** 'syntax-begin-function' is declared obsolete.
1788 Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
1789 slot in font-lock-defaults.
1790
1791 +++
1792 ** The new implementation of Subword mode affects word movement everywhere.
1793 When Subword mode is turned on, 'forward-word', 'backward-word', and
1794 everything that uses them will move by sub-words, effectively
1795 overriding the buffer's syntax table. Lisp programs that shouldn't be
1796 affected by Subword mode should call the new functions
1797 'forward-word-strictly' and 'backward-word-strictly' instead.
1798
1799 +++
1800 ** 'package-initialize' now sets 'package-enable-at-startup' to nil if
1801 called during startup. Users who call this function in their init
1802 file and still expect it to be run after startup should set
1803 'package-enable-at-startup' to t after the call to
1804 'package-initialize'.
1805
1806 ---
1807 ** ':global' minor mode use 'setq-default' rather than 'setq'.
1808 This means that you can't use 'make-local-variable' and expect them to
1809 "magically" become buffer-local.
1810
1811 +++
1812 ** 'track-mouse' no longer freezes the shape of the mouse pointer.
1813 The 'track-mouse' form no longer refrains from changing the shape of
1814 the mouse pointer for the entire time the body of that form is
1815 executed. Lisp programs that use 'track-mouse' for dragging across
1816 large portions of the Emacs display, and want to avoid changes in the
1817 pointer shape during dragging, should bind the variable 'track-mouse'
1818 to the special value 'dragging' in the body of the form.
1819
1820 ---
1821 ** The optional 'predicate' argument of 'lisp-complete-symbol' no longer
1822 has any effect. (This change was made in Emacs 24.4 but was not
1823 advertised at the time.)
1824
1825 +++
1826 ** 'indirect-function' does not signal 'void-function' any more.
1827 This is mostly a bug-fix, since this change was missed back in 24.4 when
1828 symbol-function was changed not to signal 'void-function' any more.
1829
1830 +++
1831 *** As a consequence, the second arg of 'indirect-function' is now obsolete.
1832
1833 +++
1834 ** M-x shell and M-x compile no longer set the EMACS environment variable.
1835 This avoids clashing when other programs use the variable for other purposes.
1836 Although M-x term still sets EMACS for compatibility with Bash 4.3 and earlier,
1837 this is deprecated and will be phased out when Bash 4.4 or later takes over.
1838 Use the INSIDE_EMACS environment variable instead.
1839
1840 +++
1841 ** 'save-excursion' does not save&restore the mark any more.
1842 Use 'save-mark-and-excursion' if you want the old behavior.
1843
1844 +++
1845 ** 'read-buffer' and 'read-buffer-function' can now be called with a 4th
1846 argument ('predicate').
1847
1848 +++
1849 ** 'completion-table-dynamic' by default stays in the minibuffer.
1850 The minibuffer will be the current buffer when the function is called.
1851 If you want the old behavior of calling the function in the buffer
1852 from which the minibuffer was entered, use the new argument
1853 'switch-buffer' to 'completion-table-dynamic'.
1854
1855 ---
1856 ** window-configurations no longer record the buffers' marks.
1857
1858 ---
1859 ** inhibit-modification-hooks now also inhibits lock-file checks, as well as
1860 active region handling.
1861
1862 +++
1863 ** deactivate-mark is now buffer-local.
1864
1865 +++
1866 ** 'cl-the' now asserts that its argument is of the given type.
1867
1868 +++
1869 ** 'process-running-child-p' may now return a numeric process
1870 group ID instead of 't'.
1871
1872 +++
1873 ** Mouse click events on mode line or header line no longer include
1874 any reference to a buffer position. The 6th member of the mouse
1875 position list returned for such events is now nil.
1876
1877 ---
1878 ** Menu items in keymaps do not support the "key shortcut cache" any more.
1879 These slots used to hold key-shortcut data, but have been obsolete since
1880 Emacs-21.
1881
1882 ---
1883 ** Emacs no longer downcases the first letter of a system diagnostic
1884 when signaling a file error. For example, it now reports "Permission
1885 denied" instead of "permission denied". The old behavior was problematic
1886 in languages like German where downcasing rules depend on grammar.
1887
1888 +++
1889 ** New variable 'text-quoting-style' to control how Emacs translates quotes.
1890 Set it to 'curve' for curved single quotes, to 'straight' for straight
1891 apostrophes, and to 'grave' for grave accent and apostrophe. The
1892 default value nil acts like 'curve' if curved single quotes are
1893 displayable, and like 'grave' otherwise. The new variable affects
1894 display of diagnostics and help, but not of info.
1895
1896 +++
1897 ** substitute-command-keys now replaces quotes.
1898 That is, it converts documentation strings' quoting style as per the
1899 value of 'text-quoting-style'. Doc strings in source code can use
1900 either curved single quotes or grave accents and apostrophes. As
1901 before, characters preceded by \= are output as-is.
1902
1903 +++
1904 ** Message-issuing functions 'error', 'message', etc. now convert quotes.
1905 They use the new 'format-message' function instead of plain 'format',
1906 so that they now follow user preference as per 'text-quoting-style'
1907 when processing curved single quotes, grave accents, and apostrophes
1908 in their format argument.
1909
1910 +++
1911 ** The character classes [:alpha:] and [:alnum:] in regular expressions
1912 now match multibyte characters using Unicode character properties.
1913 If you want the old behavior where they matched any character with
1914 word syntax, use '\sw' instead.
1915
1916 +++
1917 ** The character classes [:graph:] and [:print:] in regular expressions
1918 no longer match every multibyte character. Instead, Emacs now
1919 consults the Unicode character properties to determine which
1920 characters are graphic or printable. In particular, surrogates and
1921 unassigned codepoints are now rejected. If you want the old behavior,
1922 use [:multibyte:] instead.
1923
1924 +++
1925 ** The 'diff' command uses the unified format now. To restore the old
1926 behavior, set 'diff-switches' to '-c'.
1927
1928 ---
1929 ** 'grep-template' and 'grep-find-template' values don't include the
1930 --color argument anymore. It's added at the <C> place holder position
1931 dynamically. Any third-party code that changes these templates should
1932 be updated accordingly.
1933
1934 +++
1935 ** '(/ N)' is now equivalent to '(/ 1 N)' rather than to '(/ N 1)'.
1936 The new behavior is compatible with Common Lisp and with XEmacs.
1937 This change does not affect Lisp code intended to be portable to
1938 Emacs 24.2 and earlier, which did not support unary '/'.
1939
1940 +++
1941 ** The 'default-directory' value doesn't have to end slash. To make
1942 that happen, 'unhandled-file-name-directory' now defaults to calling
1943 'file-name-as-directory'.
1944
1945 \f
1946 * Lisp Changes in Emacs 25.1
1947
1948 ** pcase
1949 +++
1950 *** New UPatterns 'quote', 'app'.
1951 +++
1952 *** New UPatterns can be defined with 'pcase-defmacro'.
1953 +++
1954 *** New vector QPattern.
1955
1956 ---
1957 ** syntax-propertize is now automatically called on-demand during forward
1958 parsing functions like 'forward-sexp'.
1959
1960 +++
1961 ** New hooks 'prefix-command-echo-keystrokes-functions' and
1962 'prefix-command-preserve-state-hook' allow the definition of prefix
1963 commands other than the predefined 'C-u'.
1964
1965 +++
1966 ** New functions 'filepos-to-bufferpos' and 'bufferpos-to-filepos'.
1967 These allow conversion between buffer positions and the corresponding
1968 file byte offsets, given the file's encoding.
1969
1970 +++
1971 ** The default value of 'load-read-function' is now 'read'.
1972 Previously, the default value of 'nil' implied using 'read'.
1973
1974 +++
1975 ** New hook 'pre-redisplay-functions'.
1976 It is a bit easier to use than 'pre-redisplay-function'.
1977
1978 +++
1979 ** The second arg of 'looking-back' should always be provided explicitly.
1980 Previously, it was an optional argument, now it's mandatory.
1981
1982 +++
1983 ** Text properties 'intangible', 'point-entered', and 'point-left' are obsolete.
1984 Replaced by properties 'cursor-intangible' and 'cursor-sensor-functions',
1985 implemented by the new 'cursor-intangible-mode' and
1986 'cursor-sensor-mode' minor modes.
1987
1988 +++
1989 ** 'inhibit-point-motion-hooks' now defaults to 't' and is obsolete.
1990 Use the new minor modes 'cursor-intangible-mode' and
1991 'cursor-sensor-mode' instead.
1992
1993 +++
1994 ** New process type 'pipe', which can be used in combination with the
1995 ':stderr' keyword of make-process to handle standard error output
1996 of subprocess.
1997
1998 +++
1999 ** New function 'make-process' provides an alternative interface to
2000 'start-process'. It allows programs to set process parameters such as
2001 process filter, sentinel, etc., through keyword arguments (similar to
2002 'make-network-process').
2003
2004 +++
2005 ** A new function 'directory-files-recursively' returns all matching
2006 files (recursively) under a directory.
2007
2008 +++
2009 ** New variable 'inhibit-message', when bound to non-nil, inhibits
2010 'message' and related functions from displaying messages in the echo
2011 area. The output is still logged to the *Messages* buffer.
2012
2013 +++
2014 ** A new text property 'inhibit-read-only' can be used in read-only
2015 buffers to allow certain parts of the text to be writable.
2016
2017 +++
2018 ** A new variable 'comment-end-can-be-escaped' is useful in languages
2019 such as C and C++ where line comments with escaped newlines are
2020 continued to the next line.
2021
2022 +++
2023 ** New macro 'define-advice'.
2024
2025 +++
2026 ** Emacs Lisp now supports generators.
2027 See the "Generators" section of the ELisp manual for the details.
2028
2029 +++
2030 ** New finalizer facility for running code when objects become unreachable.
2031 See the "Finalizer Type" subsection in the ELisp manual for the
2032 details.
2033
2034 ---
2035 ** lexical closures can use (:documentation FORM) to build their docstring.
2036 It should be placed right where the docstring would be, and FORM is then
2037 evaluated (and should return a string) when the closure is built.
2038
2039 +++
2040 ** define-inline provides a new way to define inlinable functions.
2041
2042 +++
2043 ** New function 'macroexpand-1' to perform a single step of macro expansion.
2044
2045 +++
2046 ** Some "x-*" functions were obsoleted and/or renamed:
2047 *** x-select-text is renamed gui-select-text.
2048 *** x-selection-value is renamed gui-selection-value.
2049 *** x-get-selection is renamed gui-get-selection.
2050 *** x-get-clipboard and x-clipboard-yank are marked obsolete.
2051 *** x-get-selection-value is renamed to gui-get-primary-selection.
2052 *** x-set-selection is renamed to gui-set-selection
2053
2054 +++
2055 ** New function 'string-greaterp', which return the opposite result of
2056 'string-lessp'.
2057
2058 +++
2059 ** The new functions 'string-collate-lessp' and 'string-collate-equalp'
2060 preserve the collation order as defined by the system's locale(1)
2061 environment. For the time being this is implemented for modern POSIX
2062 systems and for MS-Windows, for other systems they fall back to their
2063 counterparts 'string-lessp' and 'string-equal'.
2064
2065 ---
2066 *** The ls-lisp package uses 'string-collate-lessp' to sort file names.
2067 The effect is that, on systems that use ls-lisp for Dired, the default
2068 sort order of the files in Dired is now different from what it was in
2069 previous versions of Emacs. In particular, the file names are sorted
2070 disregarding punctuation, accents, and diacritics, and letter case is
2071 ignored. For example, files whose name begin with a period will no
2072 longer appear near the beginning of the directory listing. If you
2073 want the old, locale-independent sorting, customize the new option
2074 'ls-lisp-use-string-collate' to the nil value.
2075
2076 +++
2077 *** The MS-Windows specific variable 'w32-collate-ignore-punctuation',
2078 if set to a non-nil value, causes the above 2 functions to ignore
2079 symbol and punctuation characters when collating strings. This
2080 emulates the behavior of modern Posix platforms when the locale's
2081 codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
2082 MS-Windows doesn't support UTF-8 as codeset in its locales.
2083
2084 +++
2085 ** New function 'alist-get', which is also a valid place (aka lvalue).
2086
2087 +++
2088 ** New function 'funcall-interactively', which works like 'funcall'
2089 but makes 'called-interactively-p' treat the function as (you guessed it)
2090 called interactively.
2091
2092 +++
2093 ** New function 'function-put' to use instead of 'put' for function properties.
2094
2095 +++
2096 ** The new function 'bidi-find-overridden-directionality' allows you to
2097 find characters whose directionality was, perhaps maliciously,
2098 overridden by directional override control characters. Lisp programs
2099 can use this to detect potential phishing of URLs and other links that
2100 exploits bidirectional display reordering.
2101
2102 +++
2103 ** The new function 'buffer-substring-with-bidi-context' allows you to
2104 copy a portion of a buffer into a different location while preserving
2105 the visual appearance both of the copied text and the text at
2106 destination, even when the copied text includes mixed bidirectional
2107 text and directional control characters.
2108
2109 +++
2110 ** New properties that can be specified with 'declare':
2111 *** (interactive-only INSTEAD), says to use INSTEAD for non-interactive use.
2112 *** (pure VAL), if VAL is non-nil, indicates the function is pure.
2113 *** (side-effect-free VAL), if VAL is non-nil, indicates the function does not
2114 have side effects.
2115
2116 +++
2117 ** New macro 'with-file-modes', for evaluating expressions with default file
2118 permissions set to temporary values (e.g., for creating private files).
2119
2120 +++
2121 ** You can access the slots of structures using 'cl-struct-slot-value'.
2122
2123 +++
2124 ** Function 'sort' can deal with vectors.
2125
2126 ---
2127 ** Function 'system-name' now returns an updated value if the current
2128 system's name has changed or if the Emacs process has changed systems,
2129 and to avoid long waits it no longer consults DNS to canonicalize the
2130 name. The variable 'system-name' is now obsolete.
2131
2132 +++
2133 ** Function 'write-region' no longer outputs "Wrote FILE" in batch mode.
2134
2135 ---
2136 ** If 'pwd' is called with a prefix argument, insert the current default
2137 directory at point.
2138
2139 +++
2140 ** New functions return extended information about fonts and faces.
2141
2142 +++
2143 *** The function 'font-info' now returns more details about a font.
2144 In particular, it now returns the average width of the font's
2145 characters, which can be used for geometry-related calculations.
2146
2147 +++
2148 *** A new function 'default-font-width' returns the average width of a
2149 character in the current buffer's default font. If the default face
2150 is remapped (see 'face-remapping-alist'), the value for the remapped
2151 face is returned. This function complements the existing function
2152 'default-font-height'.
2153
2154 +++
2155 *** New functions 'window-font-height' and 'window-font-width' return
2156 the height and average width of characters in a specified face and
2157 window. If FACE is remapped (see 'face-remapping-alist'), the
2158 function returns the information for the remapped face.
2159
2160 +++
2161 *** A new function 'window-max-chars-per-line' returns the maximal
2162 number of characters that can be displayed on one line. If a face
2163 and/or window are provided, these values are used for the
2164 calculation. This function is different from 'window-body-width' in
2165 that it accounts for (i) continuation glyphs, (ii) the size of the
2166 font, and (iii) the specified window.
2167
2168 ---
2169 ** New utilities in subr-x.el:
2170 *** New macros 'if-let' and 'when-let' allow defining bindings and to
2171 execute code depending whether all values are true.
2172 *** New macros 'thread-first' and 'thread-last' allow threading a form
2173 as the first or last argument of subsequent forms.
2174
2175 +++
2176 ** Documentation strings now support quoting with curved single quotes
2177 in addition to the old style with grave accent and apostrophe. The
2178 new style looks better on today's displays. In the new Electric Quote
2179 mode, you can enter curved single quotes into documentation by typing
2180 grave accent and apostrophe. Outside Electric Quote mode, you can
2181 enter them by typing 'C-x 8 [' and 'C-x 8 ]', or (if your Alt key
2182 works) by typing 'A-[' and 'A-]'. As described above under
2183 'text-quoting-style', the user can specify how to display doc string
2184 quotes.
2185
2186 +++
2187 ** New function 'format-message' is like 'format' and also converts
2188 curved single quotes, grave accents and apostrophes as per
2189 'text-quoting-style'.
2190
2191 +++
2192 ** show-help-function's arg is converted via substitute-command-keys
2193 before being passed to the function. Help strings, help-echo
2194 properties, etc. can therefore contain command key escapes and
2195 quotation marks.
2196
2197 +++
2198 ** Time-related changes:
2199
2200 *** Time conversion functions now accept an optional ZONE argument
2201 that specifies the time zone rules for conversion. ZONE is omitted or
2202 nil for Emacs local time, t for Universal Time, 'wall' for system wall
2203 clock time, or a string as in the TZ environment variable. The
2204 affected functions are 'current-time-string', 'current-time-zone',
2205 'decode-time', and 'format-time-string'. The function 'encode-time',
2206 which already accepted a simple time zone rule argument, has been
2207 extended to accept all the new forms.
2208
2209 *** Incompatible change in the third argument of 'format-time-string'.
2210 Previously, any non-nil argument was interpreted as specifying Universal Time.
2211 This is no longer true; packages that want Universal Time should pass t
2212 as the third argument.
2213
2214 *** Time-related functions now consistently accept numbers
2215 (representing seconds since the epoch) and nil (representing the
2216 current time) as well as the usual list-of-integer representation.
2217 Affected functions include 'current-time-string', 'current-time-zone',
2218 'decode-time', 'float-time', 'format-time-string', 'seconds-to-time',
2219 'time-add', 'time-less-p', 'time-subtract', 'time-to-day-in-year',
2220 'time-to-days', and 'time-to-seconds'.
2221
2222 *** The 'encode-time-value' and 'with-decoded-time-value' macros have
2223 been obsoleted.
2224
2225 *** 'calendar-next-time-zone-transition', 'time-add', and
2226 'time-subtract' no longer return time values in the obsolete and
2227 undocumented integer-pair format. Instead, they return a list of two
2228 integers.
2229
2230 +++
2231 ** New function 'set-binary-mode' allows switching a standard stream
2232 of the Emacs process to binary I/O mode.
2233
2234 +++
2235 ** The new function 'directory-name-p' can be used to check whether a file
2236 name (as returned from, for instance, 'file-name-all-completions') is
2237 a directory file name. It returns non-nil if the last character in
2238 the name is a directory separator character (forward slash on GNU and
2239 Unix systems, forward- or backslash on MS-Windows and MS-DOS).
2240
2241 ---
2242 ** ASCII approximations to curved quotes are put in standard-display-table
2243 if the terminal cannot display curved quotes.
2244
2245 +++
2246 ** Standard output and error streams now transliterate characters via
2247 standard-display-table, and encode output using locale-coding-system.
2248 To force a specific encoding, bind 'coding-system-for-write' to the
2249 coding-system of your choice when invoking functions like 'prin1' and
2250 'message'.
2251
2252 +++
2253 ** New var 'truncate-string-ellipsis' to choose how to indicate truncation.
2254
2255 +++
2256 ** New possible value for 'system-type': 'nacl'.
2257 This is used by Google's Native Client (NaCl).
2258
2259 ** Miscellaneous name change
2260
2261 ---
2262 For consistency with the usual Emacs spelling, the Lisp variable
2263 'hfy-optimisations' has been renamed to 'hfy-optimizations'.
2264 The old name should still work, as an obsolescent alias.
2265
2266 ** Changes in Frame- and Window- Handling
2267
2268 +++
2269 *** Emacs can now draw horizontal scroll bars on some platforms that
2270 provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows.
2271 Horizontal scroll bars are turned off by default.
2272
2273 **** New function 'horizontal-scroll-bars-available-p' telling whether
2274 horizontal scroll bars are available on the underlying system.
2275
2276 **** New mode 'horizontal-scroll-bar-mode' to toggle horizontal scroll
2277 bars on all existing and future frames.
2278
2279 **** New function 'toggle-horizontal-scroll-bar' to toggle horizontal
2280 scroll bars on the selected frame.
2281
2282 **** New frame parameters 'horizontal-scroll-bars' and
2283 'scroll-bar-height' to set horizontal scroll bars and their height
2284 for individual frames and in 'default-frame-alist'.
2285
2286 **** New functions 'frame-scroll-bar-height' and
2287 'window-scroll-bar-height' return the height of horizontal scroll
2288 bars on a specific frame or window.
2289
2290 **** 'set-window-scroll-bars' now accepts five parameters where the last
2291 two specify height and type of the window's horizontal scroll bar.
2292
2293 **** 'window-scroll-bars' now returns type and sizes of horizontal scroll
2294 bars too.
2295
2296 **** New buffer-local variables 'horizontal-scroll-bar' and
2297 'scroll-bar-height'.
2298
2299 +++
2300 *** New functions 'frame-geometry' and 'frame-edges' give access to a
2301 frame's geometry.
2302
2303 +++
2304 *** New functions 'mouse-absolute-pixel-position' and
2305 'set-mouse-absolute-pixel-position' get/set screen coordinates of the
2306 mouse cursor.
2307
2308 +++
2309 *** The function 'window-edges' now accepts three additional arguments to
2310 retrieve body, absolute and pixel edges of the window.
2311
2312 +++
2313 *** The functions 'window-inside-edges', 'window-inside-pixel-edges' and
2314 'window-inside-absolute-pixel-edges' have been renamed to respectively
2315 'window-body-edges', 'window-body-pixel-edges' and
2316 'window-absolute-body-pixel-edges'. The old names are kept as aliases.
2317
2318 +++
2319 *** New function 'window-absolute-pixel-position' to get the screen
2320 coordinates of a visible buffer position.
2321
2322 +++
2323 *** The height of a frame's menu and tool bar are no longer counted in the
2324 frame's text height. This means that the text height stands only for
2325 the height of the frame's root window plus that of the echo area (if
2326 present). This was already the behavior for frames with external tool
2327 and menu bars (like in the Gtk builds) but has now been extended to all
2328 builds.
2329
2330 +++
2331 *** Frames now do not necessarily preserve the number of columns or lines
2332 they display when setting default font, menu bar, fringe width, or
2333 scroll bars. In particular, maximized and fullscreen frames are
2334 conceptually never resized if such settings change. For fullheight and
2335 fullwidth frames, the behavior may depend on the toolkit used.
2336 **** New option 'frame-inhibit-implied-resize' if non-nil, means that
2337 setting default font, menu bar, fringe width, or scroll bars of a
2338 specific frame does not resize that frame in order to preserve the
2339 number of columns or lines it displays.
2340
2341 +++
2342 *** New function 'window-preserve-size' allows you to preserve the size of
2343 a window without "fixing" it. It's supported by 'fit-window-to-buffer',
2344 'temp-buffer-resize-mode' and 'display-buffer'.
2345
2346 +++
2347 *** New 'display-buffer' action function 'display-buffer-use-some-frame'.
2348 This displays the buffer in an existing frame other than the current
2349 frame, and allows the caller to specify a frame predicate to exclude
2350 frames.
2351
2352 +++
2353 *** New minor mode 'window-divider-mode' and options
2354 'window-divider-default-places', 'window-divider-default-bottom-width'
2355 and 'window-divider-default-right-width'.
2356
2357 +++
2358 *** The window displaying the '*Completions*' buffer with minibuffer
2359 completion candidates is now shown at the bottom of the selected
2360 frame. The size of that window is always as large as required to
2361 display all the candidates, except when limited by the minimum size
2362 of the other windows on that frame; those other windows are resized
2363 to provide space for the '*Completions*' display. The Emacs manual
2364 describes how to customize 'display-buffer-alist' to get back the old
2365 behavior, see the node "Temporary Displays" there.
2366
2367 ---
2368 ** Tearoff menus and detachable toolbars for Gtk+ have been removed.
2369 Those features have been deprecated in Gtk+ for a long time.
2370
2371 ** Etags
2372
2373 +++
2374 *** etags no longer qualifies class members by default.
2375
2376 By default, 'etags' will not qualify class members for Perl and C-like
2377 object-oriented languages with their class names and namespaces, and
2378 will remove qualifications used explicitly in the code from the tag
2379 names it puts in TAGS files. This is so the etags.el back-end for
2380 'xref-find-definitions' is more accurate and produces less false
2381 positives.
2382
2383 Use --class-qualify (-Q) if you want the old default behavior of
2384 qualifying class members in C++, Java, Objective C, and Perl. Note
2385 that using -Q might make some class members become "unknown" to 'M-.'
2386 ('xref-find-definitions'); if so, you can use 'C-u M-.' to specify the
2387 qualified names by hand.
2388
2389 +++
2390 *** New language Ruby
2391
2392 Names of modules, classes, methods, functions, and constants are
2393 tagged. Overloaded operators are also tagged.
2394
2395 +++
2396 *** New language Go
2397 Names of packages, functions, and types are tagged.
2398
2399 +++
2400 *** Improved support for Lua
2401
2402 Etags now tags functions even if the "function" keyword follows some
2403 whitespace at line beginning.
2404
2405 \f
2406 * Changes in Emacs 25.1 on Non-Free Operating Systems
2407
2408 ---
2409 ** MS-Windows specific Emacs build scripts are no longer in the distribution
2410 This includes the makefile.w32-in files in various subdirectories, and
2411 the support files. The file nt/configure.bat now just tells the user
2412 to use the procedure described in nt/INSTALL, by running the Posix
2413 'configure' script in the top-level directory.
2414
2415 ---
2416 ** Building Emacs for MS-Windows requires at least Windows XP
2417 or Windows Server 2003. The built binaries still run on all versions
2418 of Windows starting with Windows 9X.
2419
2420 +++
2421 ** Emacs running on MS-Windows now supports the daemon mode.
2422
2423 ---
2424 ** The byte counts in etags-generated TAGS files are now the same on
2425 MS-Windows as they are on other platforms.
2426
2427 ---
2428 ** On OS X, configure creates a Cocoa ("Nextstep") build by default.
2429 Pass '--without-ns' to configure to create an X11 build, the old default.
2430
2431 ---
2432 ** OS X 10.5 or older is no longer supported.
2433
2434 ---
2435 ** OS X on PowerPC is no longer supported.
2436
2437 ---
2438 ** New variable 'ns-use-fullscreen-animation' controls animation for
2439 non-native NS fullscreen. The default is nil. Set to t to enable
2440 animation when entering and leaving fullscreen. For native OSX fullscreen
2441 this has no effect.
2442
2443 ---
2444 ** The new function 'w32-application-type' returns the type of an
2445 MS-Windows application given the name of its executable program file.
2446
2447 ** New variable 'w32-pipe-buffer-size'.
2448 It can be used to tune the size of the buffer of pipes created for
2449 communicating with subprocesses, when the program run by a subprocess
2450 exhibits unusual buffering behavior. Default is zero, which lets the
2451 OS use its default size.
2452
2453 \f
2454 ----------------------------------------------------------------------
2455 This file is part of GNU Emacs.
2456
2457 GNU Emacs is free software: you can redistribute it and/or modify
2458 it under the terms of the GNU General Public License as published by
2459 the Free Software Foundation, either version 3 of the License, or
2460 (at your option) any later version.
2461
2462 GNU Emacs is distributed in the hope that it will be useful,
2463 but WITHOUT ANY WARRANTY; without even the implied warranty of
2464 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2465 GNU General Public License for more details.
2466
2467 You should have received a copy of the GNU General Public License
2468 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
2469
2470 \f
2471 Local variables:
2472 coding: us-ascii
2473 mode: outline
2474 paragraph-separate: "[ \f]*$"
2475 end: