]> code.delx.au - gnu-emacs/blob - etc/NEWS
Remove lib-src/grep-changelog
[gnu-emacs] / etc / NEWS
1 GNU Emacs NEWS -- history of user-visible changes.
2
3 Copyright (C) 2014 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 files NEWS.24, NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18,
12 and NEWS.1-17 for changes in older Emacs versions.
13
14 You can narrow news to a specific version by calling `view-emacs-news'
15 with a prefix argument or by typing C-u C-h C-n.
16
17 Temporary note:
18 +++ indicates that all necessary documentation updates are complete.
19 (This means all relevant manuals in doc/ AND lisp doc-strings.)
20 --- means no change in the manuals is needed.
21 When you add a new item, use the appropriate mark if you are sure it applies,
22 otherwise leave it unmarked.
23
24 \f
25 * Installation Changes in Emacs 25.1
26
27 +++
28 ** Building Emacs now requires C99 or later.
29
30 ** Building Emacs now requires GNU make, version 3.81 or later.
31
32 ** By default, Emacs no longer works on IRIX. We expect that Emacs
33 users are not affected by this, as SGI stopped supporting IRIX in
34 December 2013. If you are affected, please send a bug report. You
35 should be able to work around the problem either by porting the Emacs
36 undumping code to GCC under IRIX, or by configuring --with-wide-int,
37 or by sticking with Emacs 24.4.
38
39 ---
40 ** The configure option `--with-pkg-config-prog' has been removed.
41 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
42
43 ** The configure option '--enable-silent-rules' and the command
44 'make V=0' now do a better job of suppressing chatter.
45
46 ---
47 ** The `grep-changelog' script (and its manual page) are no longer included.
48 It has no particular connection to Emacs and has not changed in years,
49 so if you want to use it, you can always take a copy from an older Emacs.
50
51 \f
52 * Startup Changes in Emacs 25.1
53
54 \f
55 * Changes in Emacs 25.1
56
57 +++
58 ** Network security (TLS/SSL certificate validity and the like) is
59 added via the new Network Security Manager (NSM) and controlled via
60 the `network-security-level' variable.
61
62 ** C-h l now also lists the commands that were run.
63
64 ---
65 ** The new M-s M-w key binding uses eww to search the web for the
66 text in the region.
67
68 ** M-x suggests shorthands and ignores obsolete commands for completion.
69 ** x-select-enable-clipboard is renamed select-enable-clipboard.
70 x-select-enable-primary and renamed select-enable-primary.
71 Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
72 name it), with the proviso that on some systems (e.g. Windows)
73 select-enable-primary is ineffective since the system doesn't
74 have the equivalent of a primary selection.
75
76 +++
77 ** terpri gets an optional arg ENSURE to conditionally output a newline.
78
79 +++
80 ** New macro `define-advice'.
81
82 ** `insert-register' now leaves point after the inserted text
83 when called interactively. A prefix argument toggles this behavior.
84
85 ** New var `truncate-string-ellipsis' to choose how to indicate truncation.
86
87 +++
88 ** The new variable `term-file-aliases' replaces some files from lisp/term.
89 The function `tty-run-terminal-initialization' consults this variable
90 when deciding what terminal-specific initialization code to run.
91
92 ---
93 ** New variable `system-configuration-features', listing some of the
94 main features that Emacs was compiled with. This is mainly intended
95 for use in Emacs bug reports.
96
97 +++
98 ** A password is now hidden also when typed in batch mode. Another
99 hiding character but the default `.' can be used by let-binding the
100 variable `read-hide-char'.
101
102 ** The new functions `string-collate-lessp' and `string-collate-equalp'
103 preserve the collation order as defined by the system's locale(1)
104 environment. For the time being this is implemented for modern POSIX
105 systems and for MS-Windows, for other systems they fall back to their
106 counterparts `string-lessp' and `string-equal'.
107
108 +++
109 ** The new function `bidi-find-overridden-directionality' allows to
110 find characters whose directionality was, perhaps maliciously,
111 overridden by directional override control characters. Lisp programs
112 can use this to detect potential phishing of URLs and other links that
113 exploits bidirectional display reordering.
114
115 +++
116 ** The new function `buffer-substring-with-bidi-context' allows to
117 copy a portion of a buffer into a different location while preserving
118 the visual appearance both of the copied text and the text at
119 destination, even when the copied text includes mixed bidirectional
120 text and directional control characters.
121
122 *** The ls-lisp package uses `string-collate-lessp' to sort file names.
123 If you want the old, locale-independent sorting, customize the new
124 option `ls-lisp-use-string-collate' to a nil value.
125
126 *** The MS-Windows specific variable `w32-collate-ignore-punctuation',
127 if set to a non-nil value, causes the above 2 functions to ignore
128 symbol and punctuation characters when collating strings. This
129 emulates the behavior of modern Posix platforms when the locale's
130 codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
131 MS-Windows doesn't support UTF-8 as codeset in its locales.
132
133 ** New variable `ns-use-fullscreen-animation' controls animation for
134 non-native NS fullscreen. The default is nil. Set to t to enable
135 animation when entering and leaving fullscreen. For native OSX fullscreen
136 this has no effect.
137
138 ** A new text property `inhibit-read-only' can be used in read-only
139 buffers to allow certain parts of the text to be writable.
140
141 ** A new function `file-tree-walk' allows to apply a certain action
142 to all the files and subdirectories of a directory, similarly to the C
143 library function `ftw'.
144
145 ** A new function `directory-files-recursively' returns all matching
146 files (recursively) under a directory.
147
148 ** The new `directory-name-p' can be used to check whether a file
149 name (as returned from, for instance, `file-name-all-completions' is
150 a directory file name. It returns non-nil if the last character in
151 the name is a forward slash.
152
153 \f
154 * Editing Changes in Emacs 25.1
155
156 ** New minor mode global-eldoc-mode is enabled by default.
157
158 ** Emacs now supports "bracketed paste mode" when running on a terminal
159 that supports it. This facility allows Emacs to understand pasted
160 chunks of text as strings to be inserted, instead of interpreting each
161 character in the pasted text as actual user input. This results in a
162 paste experience similar to that under a window system, and significant
163 performance improvements when pasting large amounts of text.
164
165 ** Emacs now supports the latest version of the UBA.
166 The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
167 was updated to support all the latest additions and changes introduced
168 in Unicode Standard versions 6.3 and 7.0, and a few changes suggested
169 for Unicode 8.0. This includes full support for directional isolates
170 and the Bidirectional Parentheses Algorithm (BPA) specified by these
171 Unicode standards.
172
173 \f
174 * Changes in Specialized Modes and Packages in Emacs 25.1
175 ** ido
176 *** New command `ido-bury-buffer-at-head' bound to C-S-b
177 Bury the buffer at the head of `ido-matches', analogous to how C-k
178 kills the buffer at head.
179
180 ** Minibuffer
181
182 *** You can use <up> and <down> keys to move point in the multi-line
183 minibuffer just as in an ordinary buffer. Only when point moves over
184 the bottom/top of the minibuffer it goes to the next/previous history
185 element. The new commands bound to <up> and <down> in the minibuffer:
186 `next-line-or-history-element' and `previous-line-or-history-element'.
187
188 ** Search and Replace
189
190 *** Query-replace history is enhanced.
191 When query-replace reads the FROM string from the minibuffer, typing
192 `M-p' will now show previous replacements as "FROM SEP TO", where FROM
193 and TO are the original text and its replacement, and SEP is an arrow
194 string defined by the new variable `query-replace-from-to-separator'.
195 To select a prior replacement, type `M-p' until the desired
196 replacement appears in the minibuffer, and then exit the minibuffer by
197 typing RET.
198
199 ** Calc
200 +++
201 *** If `quick-calc' is called with a prefix argument, insert the
202 result of the calculation into the current buffer.
203
204 ** ElDoc
205 *** New minor mode global-eldoc-mode
206 *** eldoc-documentation-function now defaults to nil
207
208 ** eww
209
210 +++
211 *** A new command `R' (`eww-readable') will try do identify the main
212 textual parts of a web page and display only that, leaving menus and
213 the like off the page.
214
215 ---
216 *** You can now use several eww buffers in parallel by renaming eww
217 buffers you want to keep separate.
218
219 +++
220 *** Partial state of the eww buffers (the URIs and the titles of the
221 pages visited) is now preserved in the desktop file.
222
223 +++
224 *** `eww-after-render-hook' is now called after eww has rendered
225 the data in the buffer.
226
227 ---
228 *** The `eww-reload' command now takes a prefix to not reload via
229 the net, but just use the local copy of the HTML.
230
231 +++
232 *** The DOM shr and eww uses has been changed to the general Emacs
233 xml.el/libxml2 DOM, and a new package dom.el has been added to
234 interact with this DOM. See the Emacs Lisp manual for interface
235 details.
236
237 +++
238 *** `mailcap-mime-data' is now consulted when displaying PDF files.
239
240 +++
241 *** The new `S' command will list all eww buffers, and allow managing
242 them.
243
244 ---
245 *** https pages with valid certificates have headers marked in green, while
246 invalid certificates are marked in red.
247
248 ** Message mode
249
250 *** text/html messages that contain inline image parts will be
251 transformed into multipart/related messages before sending.
252
253 ** pcase
254 *** New UPatterns `quote' and `app'.
255 *** New UPatterns can be defined with `pcase-defmacro'.
256 +++
257 *** New vector QPattern.
258
259 ** Lisp mode
260 *** Strings after `:documentation' are highlighted as docstrings.
261
262 ** Rectangle editing
263 *** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
264 *** C-x C-x in rectangle-mark-mode now cycles through the four corners.
265 *** `string-rectangle' provides on-the-fly preview of the result.
266
267 ** New font-lock functions font-lock-ensure and font-lock-flush, which
268 should be used instead of font-lock-fontify-buffer when called from Elisp.
269
270 ** Macro `minibuffer-with-setup-hook' takes (:append FUN) to mean
271 appending FUN to `minibuffer-setup-hook'.
272
273 ** cl-lib
274 *** New functions cl-fresh-line, cl-digit-char-p and cl-parse-integer.
275
276 ** Calendar and diary
277
278 +++
279 *** New commands to insert diary entries with Chinese dates:
280 `diary-chinese-insert-anniversary-entry' `diary-chinese-insert-entry'
281 `diary-chinese-insert-monthly-entry', `diary-chinese-insert-yearly-entry'.
282
283 +++
284 *** The calendar can now list and mark diary entries with Chinese dates.
285 See `diary-chinese-list-entries' and `diary-chinese-mark-entries'.
286
287 ---
288 *** The option `calendar-mode-line-format' can now be nil,
289 which means to do nothing special with the mode line in calendars.
290
291 ---
292 *** Many items obsolete since at least version 23.1 have been removed.
293 The majority were function/variable/face aliases, too numerous to list here.
294 The remainder were:
295
296 **** Functions `calendar-one-frame-setup', `calendar-only-one-frame-setup',
297 `calendar-two-frame-setup', `european-calendar', `american-calendar'.
298
299 **** Hooks `cal-menu-load-hook', `cal-x-load-hook'.
300
301 **** Macro `calendar-for-loop'.
302
303 **** Variables `european-calendar-style', `diary-face', `hebrew-holidays-{1,4}'.
304
305 **** The nil and list forms of `diary-display-function'.
306
307 ** New ERT function `ert-summarize-tests-batch-and-exit'.
308
309 ---
310 ** `Info-fontify-maximum-menu-size' can be t for no limit.
311
312 ---
313 ** ntlm.el has support for NTLM2.
314
315 ---
316 ** The Rmail commands d, C-d and u now handle repeat counts to delete or
317 undelete multiple messages.
318
319 ** Rmail can now render HTML mail messages if your Emacs was built with
320 libxml2 or if you have the Lynx browser installed. By default, Rmail
321 will display the HTML version of a mail message that has both HTML and
322 plain text parts, if display of HTML email is possible; customize the
323 `rmail-mime-prefer-html' option to `nil' if you don't want that.
324
325 ** SES now supports local printer functions; see `ses-define-local-printer'.
326
327 ** In sh-mode, you can now use `sh-shell' as a file-local variable to
328 specify the type of shell in use (bash, csh, etc).
329
330 ** TLS
331 ---
332 *** Fatal TLS errors are now silent by default.
333
334 ** URL
335
336 *** The URL package accepts now the protocols "ssh", "scp" and "rsync".
337 When `url-handler-mode' is enabled, file operations for these
338 protocols as well as for "telnet" and "ftp" are passed to Tramp.
339
340 *** The URL package allows customizing the `url-user-agent' string.
341 The new `url-user-agent' variable can be customized to be a string or
342 a function.
343
344 *** The new interface variable `url-request-noninteractive' can be used
345 to specify that we're running in a noninteractive context, and that
346 we should not be queried about things like TLS certificate validity.
347
348 *** If URL is used with a https connection, the first callback argument
349 plist will contain a :peer element that has the output of
350 `gnutls-peer-status' (if Emacs is built with GnuTLS support).
351
352 ** Tramp
353
354 *** New connection method "nc", which allows to access dumb busyboxes.
355
356 ** SQL mode
357
358 *** New user variable `sql-default-directory' enables remote
359 connections using Tramp.
360
361 *** New command `sql-send-line-and-next' sends the current line to the
362 interactive buffer and advances to the next line, skipping whitespace
363 and comments.
364
365 *** Add support for Vertica SQL.
366
367 ** VC and related modes
368
369 *** The new command vc-region-history shows the log+diff of the active region.
370
371 *** New option `vc-annotate-background-mode' controls whether
372 the color range from `vc-annotate-color-map' is applied to the
373 background or to the foreground.
374
375 *** compare-windows now compares text with the most recently used window
376 instead of the next window. The new option `compare-windows-get-window-function'
377 allows to customize this.
378
379 ** Calculator: decimal display mode uses "," groups, so it's more
380 fitting for use in money calculations; factorial works with
381 non-integer inputs.
382
383 ** HideIfDef mode now support full C/C++ expressions, argumented macro expansions
384 , interactive macro evaluation and automatic scanning of #defined symbols.
385
386 *** New custom variable `hide-ifdef-header-regexp' to define C/C++ header file
387 name patterns. Default case-insensitive .h, .hh, .hpp and .hxx.
388 *** New custom variable `hide-ifdef-expand-reinclusion-protection' to prevent
389 reinclusion protected header files from being fully hidden.
390 *** New custom variable `hide-ifdef-exclude-define-regexp' to define symbol
391 name patterns (e.x. all "FOR_DOXYGEN_ONLY_*") to be excluded.
392
393 ** TeX mode
394
395 *** New custom variable `tex-print-file-extension' to help users who
396 use PDF instead of DVI.
397
398 ** whitespace-mode: new 'big-indent style highlighting too much indentation.
399 By default, 32 spaces and four TABs are considered to be too much but
400 `whitespace-big-indent-regexp' can be configured to change that.
401
402 ** tildify: `tildify-space-string', `tildify-pattern', and
403 `tildify-foreach-region-function' variables added making
404 `tildify-string-alist', `tildify-pattern-alist', and
405 `tildify-ignored-environments-alist' variables (as well as a few
406 helper functions) obsolete.
407
408 ** Obsolete packages
409
410 ---
411 *** gulp.el
412
413 \f
414 * New Modes and Packages in Emacs 25.1
415
416 ** scss-mode (a minor variant of css-mode)
417 \f
418 * Incompatible Lisp Changes in Emacs 25.1
419
420 ** completion-table-dynamic stays in the minibuffer.
421 If you want the old behavior of calling the function in the buffer
422 from which the minibuffer was entered, call it with the new argument
423 `switch-buffer'.
424
425 ** window-configurations no longer record the buffers's marks.
426
427 ** inhibit-modification-hooks now also inhibits lock-file checks, as well as
428 active region handling.
429
430 ** deactivate-mark is now buffer-local.
431
432 ** `cl-the' now asserts that its argument is of the given type.
433
434 +++
435 ** Mouse click events on mode line or header line no longer include
436 any reference to a buffer position. The 6th member of the mouse
437 position list returned for such events is now nil.
438
439 ** Menu items in keymaps do not support the "key shortcut cache" any more.
440 These slots used to hold key-shortcut data, but have been obsolete since
441 Emacs-21.
442
443 \f
444 * Lisp Changes in Emacs 25.1
445
446 ** define-inline provides a new way to define inlinable functions.
447
448 ** New function macroexpand-1 to perform a single step of macroexpansion.
449
450 ** Some "x-*" were obsoleted:
451 *** x-select-text is renamed gui-select-text.
452 *** x-selection-value is renamed gui-selection-value.
453 *** x-get-selection is renamed gui-get-selection.
454 *** x-get-clipboard and x-clipboard-yank are marked obsolete.
455 *** x-get-selection-value is renamed to gui-get-primary-selection.
456 *** x-set-selection is renamed to gui-set-selection
457
458 ** New function `alist-get', which is also a valid place (aka lvalue).
459
460 ** New function `funcall-interactively', which works like `funcall'
461 but makes `called-interactively-p' treat the function as (you guessed it)
462 called interactively.
463
464 ** New function `function-put' to use instead of `put' for function properties.
465
466 +++
467 ** New properties that can be specified with `declare':
468 *** (interactive-only INSTEAD), says to use INSTEAD for non-interactive use.
469 *** (pure VAL), if VAL is non-nil, indicates the function is pure.
470 *** (side-effect-free VAL), if VAL is non-nil, indicates the function does not
471 have side effects.
472
473 +++
474 ** New macro `with-file-modes', for evaluating expressions with default file
475 permissions set to temporary values (e.g., for creating private files).
476
477 ** You can access the slots of structures using `cl-struct-slot-value'.
478
479 ** Functions `rmail-delete-forward' and `rmail-delete-backward' take an
480 optional repeat-count argument.
481
482 ** Function `sort' can deal with vectors.
483
484 ---
485 ** New utilities in subr-x.el:
486 *** New macros `if-let' and `when-let' allow defining bindings and to
487 execute code depending whether all values are true.
488 *** New macros `thread-first' and `thread-last' allow threading a form
489 as the first or last argument of subsequent forms.
490
491 +++
492 ** Time-related changes:
493
494 *** Time-related functions now consistently accept numbers
495 (representing seconds since the epoch) and nil (representing the
496 current time) as well as the usual list-of-integer representation.
497 Affected functions include `current-time-string', `current-time-zone',
498 `decode-time', `float-time', `format-time-string', `seconds-to-time',
499 `time-add', `time-less-p', `time-subtract', `time-to-day-in-year',
500 `time-to-days', and `time-to-seconds'.
501
502 *** The `encode-time-value' and `with-decoded-time-value' macros have
503 been obsoleted.
504
505 *** `calendar-next-time-zone-transition', `time-add', and
506 `time-subtract' no longer return time values in the obsolete and
507 undocumented integer-pair format. Instead, they return a list of two
508 integers.
509
510 \f
511 * Changes in Frames and Windows Code in Emacs 25.1
512
513 +++
514 ** Emacs can now draw horizontal scroll bars on some platforms that
515 provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows.
516 Horizontal scroll bars are turned off by default.
517 *** New function `horizontal-scroll-bars-available-p' telling whether
518 horizontal scroll bars are available on the underlying system.
519 *** New mode `horizontal-scroll-bar-mode' to toggle horizontal scroll
520 bars on all existing and future frames.
521 *** New function `toggle-horizontal-scroll-bar' to toggle horizontal
522 scroll bars on the selected frame.
523 *** New frame parameters `horizontal-scroll-bars' and
524 `scroll-bar-height' to set horizontal scroll bars and their height
525 for individual frames and in `default-frame-alist'.
526 *** New functions `frame-scroll-bar-height' and
527 `window-scroll-bar-height' return the height of horizontal scroll
528 bars on a specific frame or window.
529 *** `set-window-scroll-bars' now accepts five parameters where the last
530 two specify height and type of the window's horizontal scroll bar.
531 *** `window-scroll-bars' now returns type and sizes of horizontal scroll
532 bars too.
533 *** New buffer-local variables `horizontal-scroll-bar' and
534 `scroll-bar-height'.
535
536 +++
537 ** The height of a frame's menu and tool bar are no more counted in the
538 frame's text height. This means that the text height stands only for
539 the height of the frame's root window plus that of the echo area (if
540 present). This was already the behavior for frames with external tool
541 and menu bars (like in the Gtk builds) but has now been extended to all
542 builds.
543
544 +++
545 ** Frames now do not necessarily preserve the number of columns or lines
546 they display when setting default font, menu bar, fringe width, or
547 scroll bars. In particular, maximized and fullscreen frames are
548 conceptually never resized if such settings change. For fullheight and
549 fullwidth frames, the behavior may depend on the toolkit used.
550 *** New option `frame-inhibit-implied-resize' if non-nil, means that
551 setting default font, menu bar, fringe width, or scroll bars of a
552 specific frame does not resize that frame in order to preserve the
553 number of columns or lines it displays.
554
555 ** Tearoff menus and detachable toolbars for Gtk+ has been removed.
556 Those features have been deprecated in Gtk+ for a long time.
557
558 \f
559 * Changes in Emacs 25.1 on Non-Free Operating Systems
560
561 ---
562 ** Building Emacs for MS-Windows requires at least Windows XP
563 or Windows Server 2003. The built binaries still run on all versions
564 of Windows starting with Windows 9X.
565
566 ** OS X 10.5 or older is no longer supported.
567
568 ** OS X on PowerPC is no longer supported.
569
570 \f
571 ----------------------------------------------------------------------
572 This file is part of GNU Emacs.
573
574 GNU Emacs is free software: you can redistribute it and/or modify
575 it under the terms of the GNU General Public License as published by
576 the Free Software Foundation, either version 3 of the License, or
577 (at your option) any later version.
578
579 GNU Emacs is distributed in the hope that it will be useful,
580 but WITHOUT ANY WARRANTY; without even the implied warranty of
581 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
582 GNU General Public License for more details.
583
584 You should have received a copy of the GNU General Public License
585 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
586
587 \f
588 Local variables:
589 coding: utf-8
590 mode: outline
591 paragraph-separate: "[ \f]*$"
592 end: