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