NEWS 57.3 KB
Newer Older
1
GNU Emacs NEWS -- history of user-visible changes.
2

Paul Eggert's avatar
Paul Eggert committed
3
Copyright (C) 2014-2017 Free Software Foundation, Inc.
4
See the end of the file for license conditions.
Dave Love's avatar
#  
Dave Love committed
5

6
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7 8
If possible, use M-x report-emacs-bug.

Eli Zaretskii's avatar
Eli Zaretskii committed
9
This file is about changes in Emacs version 26.
10

Paul Eggert's avatar
Paul Eggert committed
11
See file HISTORY for a list of GNU Emacs versions and release dates.
Eli Zaretskii's avatar
Eli Zaretskii committed
12 13
See files NEWS.25, NEWS.24, NEWS.23, NEWS.22, NEWS.21, NEWS.20,
NEWS.19, NEWS.18, and NEWS.1-17 for changes in older Emacs versions.
14

Paul Eggert's avatar
Paul Eggert committed
15
You can narrow news to a specific version by calling 'view-emacs-news'
16
with a prefix argument or by typing C-u C-h C-n.
17

18 19 20 21 22
Temporary note:
+++ indicates that all necessary documentation updates are complete.
    (This means all relevant manuals in doc/ AND lisp doc-strings.)
--- means no change in the manuals is needed.
When you add a new item, use the appropriate mark if you are sure it applies,
Eli Zaretskii's avatar
Eli Zaretskii committed
23

Michael Albinus's avatar
Michael Albinus committed
24

Eli Zaretskii's avatar
Eli Zaretskii committed
25
* Installation Changes in Emacs 26.1
Michael Albinus's avatar
Michael Albinus committed
26

27 28 29
** By default libgnutls is now required when building Emacs.
Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.

Paul Eggert's avatar
Paul Eggert committed
30 31 32
** GnuTLS version 2.12.2 or later is now required, instead of merely
version 2.6.6 or later.

33 34
** The new option 'configure --with-mailutils' causes Emacs to rely on
GNU Mailutils 'movemail' to retrieve email.  By default, the Emacs
35 36 37
build procedure continues to build and install a limited and insecure
'movemail' substitute.  Although --with-mailutils is recommended, it
is not yet the default due to backward-compatibility concerns.
38

39
** The new option 'configure --enable-gcc-warnings=warn-only' causes
Paul Eggert's avatar
Paul Eggert committed
40 41
GCC to issue warnings without stopping the build.  This behavior is
now the default in developer builds.  As before, use
42 43 44
'--disable-gcc-warnings' to suppress GCC's warnings, and
'--enable-gcc-warnings' to stop the build if GCC issues warnings.

45 46 47
** When GCC warnings are enabled, '--enable-check-lisp-object-type' is
now enabled by default when configuring.

Paul Eggert's avatar
Paul Eggert committed
48
+++
49 50 51 52 53 54
** The Emacs server now has socket-launching support.  This allows
socket based activation, where an external process like systemd can
invoke the Emacs server process upon a socket connection event and
hand the socket over to Emacs.  Emacs uses this socket to service
emacsclient commands.  This new functionality can be disabled with the
configure option '--disable-libsystemd'.
55

56 57 58 59 60 61
+++
** A systemd user unit file is provided.  Use it in the standard way:
systemctl --user enable emacs
(If your Emacs is installed in a non-standard location, you may
need to copy the emacs.service file to eg ~/.config/systemd/user/)

Paul Eggert's avatar
-  
Paul Eggert committed
62
** New configure option '--disable-build-details' attempts to build an
Paul Eggert's avatar
Paul Eggert committed
63 64 65 66 67 68 69
Emacs that is more likely to be reproducible; that is, if you build
and install Emacs twice, the second Emacs is a copy of the first.
Deterministic builds omit the build date from the output of the
emacs-version and erc-cmd-SV functions, and the leave the following
variables nil: emacs-build-system, emacs-build-time,
erc-emacs-build-time.

70 71 72 73 74
** The configure option '--with-gameuser' now defaults to 'no',
as this appears to be the most common configuration in practice.
When it is 'no', the shared game directory and the auxiliary program
update-game-score are no longer needed and are not installed.

Paul Eggert's avatar
Paul Eggert committed
75 76 77
** Emacs no longer works on IRIX.  We expect that Emacs users are not
affected by this, as SGI stopped supporting IRIX in December 2013.

78

Eli Zaretskii's avatar
Eli Zaretskii committed
79
* Startup Changes in Emacs 26.1
80

81 82
+++
** New option '--fg-daemon'.  This is the same as '--daemon', except
83 84
it runs in the foreground and does not fork.  This is intended for
modern init systems such as systemd, which manage many of the traditional
85
aspects of daemon behavior themselves.  '--bg-daemon' is now an alias
86 87
for '--daemon'.

88 89 90 91 92 93
** New option '--module-assertions'.  If the user supplies this
option, Emacs will perform expensive correctness checks when dealing
with dynamic modules.  This is intended for module authors that wish
to verify that their module conforms to the module requirements.  The
option makes Emacs abort if a module-related assertion triggers.

94 95 96 97 98 99
+++
** Emacs now supports 24-bit colors on capable text terminals
Terminal is automatically initialized to use 24-bit colors if the
required capabilities are found in terminfo.  See the FAQ node
"Colors on a TTY" for more information.

100

Eli Zaretskii's avatar
Eli Zaretskii committed
101
* Changes in Emacs 26.1
102

103 104 105 106 107
+++
** The function 'assoc' now takes an optional third argument 'testfn'.
This argument, when non-nil, is used for comparison instead of
'equal'.

108 109 110 111 112 113 114 115 116 117
---
** New variable 'executable-prefix-env' for inserting magic signatures.
This variable affects the format of the interpreter magic number
inserted by 'executable-set-magic'.  If non-nil, the magic number now
takes the form "#!/usr/bin/env interpreter", otherwise the value
determined by 'executable-prefix', which is by default
"#!/path/to/interpreter".  By default, 'executable-prefix-env' is nil,
so the default behavior is not changed.

+++
118 119 120
** The variable 'emacs-version' no longer includes the build number.
This is now stored separately in a new variable, 'emacs-build-number'.

121 122 123 124
+++
** The new function 'mapbacktrace' applies a function to all frames of
the current stack trace.

Eli Zaretskii's avatar
Eli Zaretskii committed
125 126 127 128 129 130 131 132 133 134 135 136 137
+++
** Emacs now provides a limited form of concurrency with Lisp threads.
Concurrency in Emacs Lisp is "mostly cooperative", meaning that
Emacs will only switch execution between threads at well-defined
times: when Emacs waits for input, during blocking operations related
to threads (such as mutex locking), or when the current thread
explicitly yields.  Global variables are shared among all threads, but
a 'let' binding is thread-local.  Each thread also has its own current
buffer and its own match data.

See the chapter "Threads" in the ELisp manual for full documentation
of these facilities.

138 139 140 141
+++
** The new function 'file-name-case-insensitive-p' tests whether a
given file is on a case-insensitive filesystem.

142 143 144 145 146
+++
** The new user variable 'electric-quote-chars' provides a list
of curved quotes for 'electric-quote-mode', allowing user to choose
the types of quotes to be used.

147 148 149 150 151 152 153 154 155
** The new user option 'electric-quote-context-sensitive' makes
'electric-quote-mode' context sensitive.  If it is non-nil, you can
type an ASCII apostrophe to insert an opening or closing quote,
depending on context.  Emacs will replace the apostrophe by an opening
quote character at the beginning of the buffer, the beginning of a
line, after a whitespace character, and after an opening parenthesis;
and it will replace the apostrophe by a closing quote character in all
other cases.

156 157 158 159 160 161
** The new variable 'electric-quote-inhibit-functions' controls when
to disable electric quoting based on context.  Major modes can add
functions to this list; Emacs will temporarily disable
'electric-quote-mode' whenever any of the functions returns non-nil.
This can be used by major modes that derive from 'text-mode' but allow
inline code segments, such as 'markdown-mode'.
162

163 164 165 166 167 168
+++
** The new user variable 'dired-omit-case-fold' allows the user to
customize the case-sensitivity of dired-omit-mode.  It defaults to
the same sensitivity as that of the filesystem for the corresponding
dired buffer.

169 170 171 172
+++
** Emacs now uses double buffering to reduce flicker when editing and
resizing graphical Emacs frames on the X Window System.  This support
requires the DOUBLE-BUFFER extension, which major X servers have
173 174 175 176 177 178
supported for many years.  If your system has this extension, but an
Emacs built with double buffering misbehaves on some displays you use,
you can disable the feature by adding

  '(inhibit-double-buffering . t)

179 180
to default-frame-alist.  Or inject this parameter into the selected
frame by evaluating this form:
181 182

  (modify-frame-parameters nil '((inhibit-double-buffering . t)))
183

184 185 186 187
---
The group 'wp', whose label was "text", is now deprecated.
Use the new group 'text', which inherits from 'wp', instead.

Tino Calancha's avatar
Tino Calancha committed
188
+++
Paul Eggert's avatar
Paul Eggert committed
189
** The new function 'call-shell-region' executes a command in an
Tino Calancha's avatar
Tino Calancha committed
190 191
inferior shell with the buffer region as input.

192
+++
193
** The new user option 'shell-command-dont-erase-buffer' controls
194 195 196 197
if the output buffer is erased between shell commands; if non-nil,
the output buffer is not erased; this variable also controls where
to set the point in the output buffer: beginning of the output,
end of the buffer or save the point.
198
When 'shell-command-dont-erase-buffer' is nil, the default value,
Paul Eggert's avatar
Paul Eggert committed
199
the behavior of 'shell-command', 'shell-command-on-region' and
200 201
'async-shell-command' is as usual.

202 203 204 205 206 207 208
+++
** The new user option 'mouse-select-region-move-to-beginning'
controls the position of point when double-clicking mouse-1 on the end
of a parenthetical grouping or string-delimiter: the default value nil
keeps point at the end of the region, setting it to non-nil moves
point to the beginning of the region.

209 210 211 212
+++
** The new user option 'mouse-drag-and-drop-region' allows to drag the
entire region of text to another place or another buffer.

213 214 215 216 217 218 219
+++
** The new user option 'confirm-kill-processes' allows the user to
skip a confirmation prompt for killing subprocesses when exiting
Emacs.  When set to t (the default), Emacs will prompt for
confirmation before killing subprocesses on exit, which is the same
behavior as before.

220
---
Paul Eggert's avatar
Paul Eggert committed
221
** 'find-library-name' will now fall back on looking at 'load-history'
222
to try to locate libraries that have been loaded with an explicit path
Paul Eggert's avatar
Paul Eggert committed
223
outside 'load-path'.
224

225
+++
Paul Eggert's avatar
Paul Eggert committed
226 227
** Faces in 'minibuffer-prompt-properties' no longer overwrite properties
in the text in functions like 'read-from-minibuffer', but instead are
228
added to the end of the face list.  This allows users to say things
Paul Eggert's avatar
Paul Eggert committed
229
like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
230

231
+++
Paul Eggert's avatar
Paul Eggert committed
232 233
** The new variable 'extended-command-suggest-shorter' has been added
to control whether to suggest shorter 'M-x' commands or not.
234

235
---
Paul Eggert's avatar
Paul Eggert committed
236
** icomplete now respects 'completion-ignored-extensions'.
237 238

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

Paul Eggert's avatar
Paul Eggert committed
242 243 244 245
+++
** Approximations to quotes are now displayed with the new 'homoglyph'
face instead of the 'escape-glyph' face.

246
---
Paul Eggert's avatar
Paul Eggert committed
247
** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
248 249
part of minibuffers.

250
---
Paul Eggert's avatar
Paul Eggert committed
251
** 'find-library' now takes a prefix argument to pop to a different
252 253
window.

254
---
255
** 'process-attributes' on Darwin systems now returns more information.
256

257
+++
258 259
** Several accessors for the value returned by 'file-attributes'
have been added.  They are: 'file-attribute-type',
Paul Eggert's avatar
-  
Paul Eggert committed
260 261 262 263
'file-attribute-link-number', 'file-attribute-user-id',
'file-attribute-group-id', 'file-attribute-access-time',
'file-attribute-modification-time',
'file-attribute-status-change-time', 'file-attribute-size',
264 265
'file-attribute-modes', 'file-attribute-inode-number',
'file-attribute-device-number' and 'file-attribute-collect'.
266

267
+++
Glenn Morris's avatar
Glenn Morris committed
268 269
** The new function 'buffer-hash' computes a fast, non-consing hash of
a buffer's contents.
270

271
---
272
** 'fill-paragraph' no longer marks the buffer as changed unless it
273 274
actually changed something.

275
---
Paul Eggert's avatar
-  
Paul Eggert committed
276 277
** The locale language name 'ca' is now mapped to the language
environment 'Catalan', which has been added.
278

279
---
280
** 'align-regexp' has a separate history for its interactive argument.
Paul Eggert's avatar
-  
Paul Eggert committed
281
'align-regexp' no longer shares its history with all other
282
history-less functions that use 'read-string'.
283

284 285 286
+++
** The networking code has been reworked so that it's more
asynchronous than it was (when specifying :nowait t in
Paul Eggert's avatar
-  
Paul Eggert committed
287
'make-network-process').  How asynchronous it is varies based on the
288 289 290 291 292 293
capabilities of the system, but on a typical GNU/Linux system the DNS
resolution, the connection, and (for TLS streams) the TLS negotiation
are all done without blocking the main Emacs thread.  To get
asynchronous TLS, the TLS boot parameters have to be passed in (see
the manual for details).

Paul Eggert's avatar
-  
Paul Eggert committed
294
Certain process oriented functions (like 'process-datagram-address')
295 296 297 298 299
will block until socket setup has been performed.  The recommended way
to deal with asynchronous sockets is to avoid interacting with them
until they have changed status to "run".  This is most easily done
from a process sentinel.

Paul Eggert's avatar
-  
Paul Eggert committed
300
** 'make-network-process' and 'open-network-stream' sometimes allowed
Paul Eggert's avatar
Paul Eggert committed
301 302 303
:service to be an integer string (e.g., :service "993") and sometimes
required an integer (e.g., :service 993).  This difference has been
eliminated, and integer strings work everywhere.
304

305
** It is possible to disable attempted recovery on fatal signals.
306

307
Two new variables support disabling attempts to recover from stack
308
overflow and to avoid automatic auto-save when Emacs is delivered a
Paul Eggert's avatar
-  
Paul Eggert committed
309
fatal signal.  'attempt-stack-overflow-recovery', if set to 'nil',
310 311
will disable attempts to recover from C stack overflows; Emacs will
then crash as with any other fatal signal.
Paul Eggert's avatar
-  
Paul Eggert committed
312
'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
313 314
disable attempts to auto-save the session and shut down in an orderly
fashion when Emacs receives a fatal signal; instead, Emacs will
Paul Eggert's avatar
-  
Paul Eggert committed
315
terminate immediately.  Both variables are non-'nil' by default.
316 317 318 319
These variables are for users who would like to avoid the small
probability of data corruption due to techniques Emacs uses to recover
in these situations.

320 321 322 323 324
+++
** File local and directory local variables are now initialized each
time the major mode is set, not just when the file is first visited.
These local variables will thus not vanish on setting a major mode.

325 326 327 328
+++
** A second dir-local file (.dir-locals-2.el) is now accepted.
See the variable 'dir-locals-file-2' for more information.

329 330
+++
** Connection-local variables can be used to specify local variables
331 332
with a value depending on the connected remote server.  For details,
see the node "Connection Local Variables" in the ELisp manual.
333

334 335 336 337 338
---
** International domain names (IDNA) are now encoded via the new
puny.el library, so that one can visit web sites with non-ASCII URLs.

+++
339
** The new 'timer-list' command lists all active timers in a buffer,
340 341 342
where you can cancel them with the 'c' command.

+++
343 344
** The new function 'read-multiple-choice' prompts for multiple-choice
questions, with a handy way to display help texts.
345

346 347 348
+++
** 'switch-to-buffer-preserve-window-point' now defaults to t.

349 350 351 352 353
+++
** The new variable 'debugger-stack-frame-as-list' allows displaying
all call stack frames in a Lisp backtrace buffer as lists.  Both
debug.el and edebug.el have been updated to heed to this variable.

354 355 356 357 358
---
** Values in call stack frames are now displayed using 'cl-prin1'.
The old behaviour of using 'prin1' can be restored by customizing the
new option 'debugger-print-function'.

359 360 361 362
+++
** NUL bytes in strings copied to the system clipboard are now
replaced with "\0".

363
+++
Paul Eggert's avatar
Paul Eggert committed
364
** The new variable 'x-ctrl-keysym' has been added to the existing
365 366 367
roster of X keysyms.  It can be used in combination with another
variable of this kind to swap modifiers in Emacs.

Wojciech Gac's avatar
Wojciech Gac committed
368
---
369
** New input methods: 'cyrillic-tuvan', 'polish-prefix'.
Wojciech Gac's avatar
Wojciech Gac committed
370

371 372
---
** The 'dutch' input method no longer attempts to support Turkish too.
373 374 375
Also, it no longer converts 'IJ' and 'ij' to the compatibility
characters U+0132 LATIN CAPITAL LIGATURE IJ and U+0133 LATIN SMALL
LIGATURE IJ.
376

377 378 379 380 381 382
+++
** File name quoting by adding the prefix "/:" is now possible for the
local part of a remote file name.  Thus, if you have a directory named
"/~" on the remote host "foo", you can prevent it from being
substituted by a home directory by writing it as "/foo:/:/~/file".

383 384 385 386 387
+++
** The new variable 'maximum-scroll-margin' allows having effective
settings of 'scroll-margin' up to half the window size, instead of
always restricting the margin to a quarter of the window.

388 389 390 391 392 393
+++
** Emacs can scroll horizontally using mouse, touchpad, and trackbar.
You can enable this by customizing 'mwheel-tilt-scroll-p'.  If you
want to reverse the direction of the scroll, customize
'mwheel-flip-direction'.

394 395 396 397
+++
** Emacsclient has a new option -u/--suppress-output.  The option
suppresses display of return values from the server process.

398 399 400 401 402 403
---
** New user option 'dig-program-options' and extended functionality
for DNS-querying functions 'nslookup-host', 'dns-lookup-host',
and 'run-dig'.  Each function now accepts an optional name server
argument interactively (with a prefix argument) and non-interactively.

404 405 406 407 408 409 410 411
+++
** Emacsclient has a new option -T/--tramp.
This helps with using a local Emacs session as the server for a remote
emacsclient.  With appropriate setup, one can now set the EDITOR
environment variable on a remote machine to emacsclient, and
use the local Emacs to edit remote files via Tramp.  See the node
"emacsclient Options" in the user manual for the details.

412 413 414
+++
** 'describe-key-briefly' now ignores mouse movement events.

415 416 417 418
+++
** The new variable 'eval-expression-print-maximum-character' prevents
large integers from being displayed as characters.

419 420 421
** Two new commands for finding the source code of Emacs Lisp
libraries: 'find-library-other-window' and 'find-library-other-frame'.

422 423 424 425
+++
** The new variable 'display-raw-bytes-as-hex' allows to change the
display of raw bytes from octal to hex.

426
** You can now provide explicit field numbers in format specifiers.
427
For example, '(format "%2$s %1$s" "X" "Y")' produces "Y X".
428

429 430 431
** 'comment-indent-function' values may now return a cons to specify a
range of indentation.

432
+++
433 434 435 436 437 438
** Emacs now supports optional display of line numbers in the buffer.
This is similar to what linum-mode provides, but much faster and
doesn't usurp the display margin for the line numbers.  Customize the
buffer-local variable 'display-line-numbers' to activate this optional
display.  If set to t, Emacs will display the number of each line
before the line.  If set to 'relative', Emacs will display the line
Eli Zaretskii's avatar
Eli Zaretskii committed
439
number relative to the line showing point, with that line's number
440 441 442 443 444 445 446 447 448 449 450 451
displayed as absolute.  If set to 'visual', Emacs will display a
relative number for every screen line, i.e. it will count screen lines
rather than buffer lines.  The default is nil, which doesn't display
the line numbers.

In 'relative' and 'visual' modes, the variable
'display-line-numbers-current-absolute' controls what number is
displayed for the line showing point.  By default, this variable's
value is t, which means display the absolute line number for the line
showing point.  Customizing this variable to a nil value will cause
Emacs to show zero instead, which preserves horizontal space of the
window in large buffers.
452

Eli Zaretskii's avatar
Eli Zaretskii committed
453 454 455
Line numbers are not displayed at all in minibuffer windows and in
tooltips, as they are not useful there.

456 457 458 459
The new face 'line-number' is used to display the line numbers.  The
new face 'line-number-current-line' can be customized to display the
current line's number differently from all the other line numbers; by
default these two faces are identical.
Eli Zaretskii's avatar
Eli Zaretskii committed
460

461
You can also customize the new variable 'display-line-numbers-width' to
Eli Zaretskii's avatar
Eli Zaretskii committed
462
specify a fixed minimal with of the area allocated to line-number
463
display.  The default is nil, meaning that Emacs will dynamically
Eli Zaretskii's avatar
Eli Zaretskii committed
464 465
calculate the area width, enlarging or shrinking it as needed.
Setting it to a non-negative integer specifies that as the minimal
466
width; selecting a value  that is large enough to display all line
Eli Zaretskii's avatar
Eli Zaretskii committed
467 468
numbers in a buffer will then keep the line-number display area of
constant width at all times, if that is desired.
469

470 471
Lisp programs can disable line-number display for a particular screen
line by putting the 'display-line-numbers-disable' text property or
Eli Zaretskii's avatar
Eli Zaretskii committed
472 473
overlay property on the first character of that screen line.  This is
intended for add-on packages that need a finer control of the display.
474

475 476 477 478
Lisp programs that need to know how much screen estate is used up for
line-number display in a window can use the new function
'line-number-display-width'.

479 480 481 482
Linum mode and all similar packages are henceforth becoming obsolete.
Users and developers are encouraged to switch to this new feature
instead.

483

Eli Zaretskii's avatar
Eli Zaretskii committed
484
* Editing Changes in Emacs 26.1
485

486 487 488 489 490 491 492 493 494 495
+++
** New variable 'column-number-indicator-zero-based'.
Traditionally, in Column Number mode, the displayed column number
counts from zero starting at the left margin of the window.  This
behavior is now controlled by 'column-number-indicator-zero-based'.
If you would prefer for the displayed column number to count from one,
you may set this variable to nil.  (Behind the scenes, there is now a
new mode line construct, '%C', which operates exactly as '%c' does
except that it counts from one.)

496
+++
497 498 499 500 501 502
** New single-line horizontal scrolling mode.
The 'auto-hscroll-mode' variable can now have a new special value,
'current-line', which causes only the line where the cursor is
displayed to be horizontally scrolled when lines are truncated on
display and point moves outside the left or right window margin.

503 504 505 506 507 508 509 510 511 512
+++
** New mode line constructs '%o' and '%q', and user option
'mode-line-percent-position'.  '%o' displays the "degree of travel" of
the window through the buffer.  Unlike the default '%p', this
percentage approaches 100% as the window approaches the end of the
buffer.  '%q' displays the percentage offsets of both the start and
the end of the window, e.g. "5-17%".  The new option
'mode-line-percent-position' makes it easier to switch between '%p',
'%P', and these new constructs.

513 514 515 516 517
+++
** Two new user options 'list-matching-lines-jump-to-current-line' and
'list-matching-lines-current-line-face' to show highlighted the current
line in *Occur* buffer.

518 519 520
+++
** The 'occur' command can now operate on the region.

521 522 523 524 525
+++
** New bindings for 'query-replace-map'.
'undo', undo the last replacement; bound to 'u'.
'undo-all', undo all replacements; bound to 'U'.

526 527 528 529 530 531
** 'delete-trailing-whitespace' deletes whitespace after form feed.
In modes where form feed was treated as a whitespace character,
'delete-trailing-whitespace' would keep lines containing it unchanged.
It now deletes whitespace after the last form feed thus behaving the
same as in modes where the character is not whitespace.

532 533 534 535
** No more prompt about changed file when the file's content is unchanged.
Instead of only checking the modification time, Emacs now also checks
the file's actual content before prompting the user.

536 537 538 539 540 541 542 543 544 545 546
** Various casing improvements.

*** 'upcase', 'upcase-region' et al. convert title case characters
(such as Dz) into their upper case form (such as DZ).

*** 'capitalize', 'upcase-initials' et al. make use of title-case forms
of initial characters (correctly producing for example Džungla instead
of incorrect DŽungla).

*** Characters which turn into multiple ones when cased are correctly handled.
For example, fi ligature is converted to FI when upper cased.
547

548 549 550 551 552
*** Greek small sigma is correctly handled when at the end of the word.
Strings such as ΌΣΟΣ are now correctly converted to Όσος when
capitalized instead of incorrect Όσοσ (compare lowercase sigma at the
end of the word).

553 554 555 556 557 558
** Emacs can now auto-save buffers to visited files in a more robust
manner via the new mode 'auto-save-visited-mode'.  Unlike
'auto-save-visited-file-name', this mode uses the normal saving
procedure and therefore obeys saving hooks.
'auto-save-visited-file-name' is now obsolete.

559 560 561 562 563 564 565 566 567
+++
** New behavior of 'mark-defun' implemented
Prefix argument selects that many (or that many more) defuns.
Negative prefix arg flips the direction of selection.  Also,
'mark-defun' between defuns correctly selects N following defuns (or
-N previous for negative arguments).  Finally, comments preceding the
defun are selected unless they are separated from the defun by a blank
line.

568 569 570 571 572
** New command 'replace-buffer-contents'.
This command replaces the contents of the accessible portion of the
current buffer with the contents of the accessible portion of a
different buffer while keeping point, mark, markers, and text
properties as intact as possible.
573

574 575 576 577 578 579
+++
** More user control of reordering bidirectional text for display.
The two new variables, 'bidi-paragraph-start-re' and
'bidi-paragraph-separate-re', allow customization of what exactly are
paragraphs, for the purposes of bidirectional display.

Michael Albinus's avatar
Michael Albinus committed
580

Eli Zaretskii's avatar
Eli Zaretskii committed
581
* Changes in Specialized Modes and Packages in Emacs 26.1
Michael Albinus's avatar
Michael Albinus committed
582

583
** Dired
584 585 586

+++
*** You can now use '`?`' in 'dired-do-shell-command'; as ' ? ', it gets replaced
587 588
by the current file name.

589 590
*** html2text is now marked obsolete.

591 592
*** smerge-refine-regions can refine regions in separate buffers

593
*** Info menu and index completion uses substring completion by default.
594
This can be customized via the info-menu category in
595 596
completion-category-override.

597 598 599 600 601
+++
*** The ancestor buffer is shown by default in 3way merges.
A new option ediff-show-ancestor and a new toggle
ediff-toggle-show-ancestor.

602 603
** TeX: Add luatex and xetex as alternatives to pdftex

604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621
** Electric-Buffer-menu

+++
*** Key 'U' is bound to 'Buffer-menu-unmark-all' and key 'M-DEL' is
bound to 'Buffer-menu-unmark-all-buffers'.

** bs

---
*** Two new commands 'bs-unmark-all', bound to 'U', and
'bs-unmark-previous', bound to <backspace>.

** Buffer-menu

+++
*** Two new commands 'Buffer-menu-unmark-all', bound to 'U' and
'Buffer-menu-unmark-all-buffers', bound to 'M-DEL'.

622 623 624 625 626 627
** Gnus

---
*** The .newsrc file will now only be saved if the native select
method is an NNTP select method.

628 629
+++
*** A new command for sorting articles by readedness marks has been
630
added: 'C-c C-s C-m C-m'.
631

632 633
** Ibuffer

634 635 636
---
*** New command 'ibuffer-jump'.

637
---
638 639 640 641
*** New filter commands 'ibuffer-filter-by-basename',
'ibuffer-filter-by-file-extension', 'ibuffer-filter-by-directory',
'ibuffer-filter-by-starred-name', 'ibuffer-filter-by-modified'
and 'ibuffer-filter-by-visiting-file'; bound respectively
642 643 644 645
to '/b', '/.', '//', '/*', '/i' and '/v'.

---
*** Two new commands 'ibuffer-filter-chosen-by-completion'
646
and 'ibuffer-and-filter', the second bound to '/&'.
647 648

---
649 650
*** The commands 'ibuffer-pop-filter', 'ibuffer-pop-filter-group',
'ibuffer-or-filter' and 'ibuffer-filter-disable' have the alternative
651 652 653 654 655 656 657
bindings '/<up>', '/S-<up>', '/|' and '/DEL', respectively.

---
*** The data format specifying filters has been extended to allow
explicit logical 'and', and a more flexible form for logical 'not'.
See 'ibuffer-filtering-qualifiers' doc string for full details.

Tino Calancha's avatar
Tino Calancha committed
658 659 660 661
---
*** A new command 'ibuffer-copy-buffername-as-kill'; bound
to 'B'.

Tino Calancha's avatar
Tino Calancha committed
662 663 664
---
*** New command 'ibuffer-change-marks'; bound to '* c'.

Tino Calancha's avatar
Tino Calancha committed
665 666 667 668 669 670 671 672 673
---
*** A new command 'ibuffer-mark-by-locked' to mark
all locked buffers;  bound to '% L'.

---
*** A new option 'ibuffer-locked-char' to indicate
locked buffers; Ibuffer shows a new column displaying
'ibuffer-locked-char' for locked buffers.

674 675 676 677 678
---
*** A new command 'ibuffer-unmark-all-marks' to unmark
all buffers without asking confirmation;  bound to
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.

679
---
Paul Eggert's avatar
Paul Eggert committed
680
*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers
681
whose content matches a regexp; bound to '% g'.
682 683

---
Paul Eggert's avatar
Paul Eggert committed
684 685 686
*** Two new options 'ibuffer-never-search-content-name' and
'ibuffer-never-search-content-mode' used by
'ibuffer-mark-by-content-regexp'.
687

688 689 690 691
** Browse-URL

*** Support for opening links to man pages in Man or WoMan mode.

692 693 694 695 696 697
** Comint

---
*** New user option 'comint-move-point-for-matching-input' to control
where to place point after C-c M-r and C-c M-s.

Jö Fahlke's avatar
Jö Fahlke committed
698 699 700 701 702
** Compilation mode

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

Tino Calancha's avatar
Tino Calancha committed
703
+++
704
*** A new option 'dired-always-read-filesystem' default to nil.
Tino Calancha's avatar
Tino Calancha committed
705 706 707 708 709 710
If non-nil, buffers visiting files are reverted before search them;
for instance, in 'dired-mark-files-containing-regexp' a non-nil value
of this option means the file is revisited in a temporary buffer;
this temporary buffer is the actual buffer searched: the original buffer
visiting the file is not modified.

711 712
+++
*** In wdired, when editing files to contain slash characters,
713 714
the resulting directories are automatically created.  Whether to do
this is controlled by the 'wdired-create-parent-directories' variable.
715 716 717 718 719

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

720 721 722 723 724 725 726 727 728 729 730 731
** Grep

---
*** Grep commands will now use GNU grep's '--null' option if
available, which allows distinguishing the filename from contents if
they contain colons.  This can be controlled by the new custom option
'grep-use-null-filename-separator'.

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

732
** Edebug
733

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

738 739 740 741 742
+++
*** New customizable option 'edebug-max-depth'
This allows to enlarge the maximum recursion depth when instrumenting
code.

743 744 745 746 747 748 749
** Eshell

*** 'eshell-input-filter's value is now a named function
'eshell-input-filter-default', and has a new custom option
'eshell-input-filter-initial-space' to ignore adding commands prefixed
with blank space to eshell history.

750 751
** eww

752 753 754
+++
*** New 'M-RET' command for opening a link at point in a new eww buffer.

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

Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
758
---
Paul Eggert's avatar
-  
Paul Eggert committed
759 760
*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
with the 'o' command from 'image-map'.
Lars Ingebrigtsen's avatar
Lars Ingebrigtsen committed
761

762 763 764 765 766 767
+++
*** A new command 'C' ('eww-toggle-colors') can be used to toggle
whether to use the HTML-specified colors or not.  The user can also
customize the 'shr-use-colors' variable.

---
768
*** Images that are being loaded are now marked with gray
769 770 771 772 773
"placeholder" images of the size specified by the HTML.  They are then
replaced by the real images asynchronously, which will also now
respect width/height HTML specs (unless they specify widths/heights
bigger than the current window).

774 775 776 777 778 779 780
---
*** The 'w' command on links is now 'shr-maybe-probe-and-copy-url'.
'shr-copy-url' now only copies the url at point; users who wish to
avoid accidentally accessing remote links may rebind 'w' and 'u' in
'eww-link-keymap' to it.


781 782 783 784 785 786 787
** Ido

*** The commands 'find-alternate-file-other-window',
'dired-other-window', 'dired-other-frame', and
'display-buffer-other-window' are now remapped to Ido equivalents if
Ido mode is active.

788 789 790 791 792 793 794
** Images

+++
*** Images are automatically scaled before displaying based on the
'image-scaling-factor' variable (if Emacs supports scaling the images
in question).

795 796 797 798 799 800 801 802
+++
*** It's now possible to specify aspect-ratio preserving combinations
of :width/:max-height and :height/:max-width keywords.  In either
case, the "max" keywords win.  (Previously some combinations would,
depending on the aspect ratio of the image, just be ignored and in
other instances this would lead to the aspect ratio not being
preserved.)

803 804 805 806 807 808 809 810 811
+++
*** Images inserted with 'insert-image' and related functions get a
keymap put into the text properties (or overlays) that span the
image.  This keymap binds keystrokes for manipulating size and
rotation, as well as saving the image to a file.  These commands are
also available in 'image-mode'.

+++
*** A new library for creating and manipulating SVG images has been
Paul Eggert's avatar
Paul Eggert committed
812
added.  See the "SVG Images" section in the Lisp reference manual for
813 814 815 816 817 818
details.

+++
*** New setf-able function to access and set image parameters is
provided: 'image-property'.

819 820 821 822 823 824
---
*** New commands 'image-scroll-left' and 'image-scroll-right'
for 'image-mode' that complement 'image-scroll-up' and
'image-scroll-down': they have the same prefix arg behavior and stop
at image boundaries.

Mark Oteiza's avatar
Mark Oteiza committed
825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851
** Image-Dired

*** Now provides a minor mode 'image-dired-minor-mode' which replaces
the function 'image-dired-setup-dired-keybindings'.

*** Thumbnail generation is now asynchronous
The number of concurrent processes is limited by the variable
'image-dired-thumb-job-limit'.

*** 'image-dired-thumbnail-storage' has a new option 'standard-large'
for generating 256x256 thumbnails according to the Thumbnail Managing
Standard.

*** Inherits movement keys from 'image-mode' for viewing full images.
This includes the usual char, line, and page movement commands.

*** All the -options types have been changed to argument lists
instead of shell command strings.  This change affects
'image-dired-cmd-create-thumbnail-options',
'image-dired-cmd-create-temp-image-options',
'image-dired-cmd-rotate-thumbnail-options',
'image-dired-cmd-rotate-original-options',
'image-dired-cmd-write-exif-data-options',
'image-dired-cmd-read-exif-data-options', and introduces
'image-dired-cmd-pngnq-options', 'image-dired-cmd-pngcrush-options',
'image-dired-cmd-create-standard-thumbnail-options'

Mark Oteiza's avatar
Mark Oteiza committed
852
*** Recognizes more tools by default, including pngnq-s9 and OptiPNG
Mark Oteiza's avatar
Mark Oteiza committed
853 854 855 856 857

*** 'find-file' and related commands now work on thumbnails and
displayed images, providing a default argument of the original file name
via an addition to 'file-name-at-point-functions'.

858 859 860 861 862
---
** The default 'Info-default-directory-list' no longer checks some obsolete
directory suffixes (gnu, gnu/lib, gnu/lib/emacs, emacs, lib, lib/emacs)
when searching for info directories.

863 864 865
+++
** The commands that add ChangeLog entries now prefer a VCS root directory
for the ChangeLog file, if none already exists.  Customize
Paul Eggert's avatar
-  
Paul Eggert committed
866
'change-log-directory-files' to nil for the old behavior.
867

868
---
Paul Eggert's avatar
-  
Paul Eggert committed
869
** Support for non-string values of 'time-stamp-format' has been removed.
870

871 872 873
** Message

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

877 878 879 880 881 882 883
---
*** When sending HTML messages with embedded images, and you have
exiftool installed, and you rotate images with EXIF data (i.e.,
JPEGs), the rotational information will be inserted into the outgoing
image in the message.  (The original image will not have its
orientation affected.)

884 885 886 887 888 889 890 891 892 893 894
---
*** The 'message-valid-fqdn-regexp' variable has been removed, since
there are now top-level domains added all the time.  Message will no
longer warn about sending emails to top-level domains it hasn't heard
about.

*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
In 'visual-line-mode' it will look for the true beginning of a header
while in non-'visual-line-mode' it will move the point to the indented
header's value.

895 896 897 898 899 900 901
** Package

+++
*** The new variable 'package-gnupghome-dir' has been added to control
where the GnuPG home directory (used for signature verification) is
located and whether GnuPG's option "--homedir" is used or not.

902 903 904
---
*** Deleting a package no longer respects 'delete-by-moving-to-trash'.

905 906
** Tramp

907
+++
908 909 910
*** The method part of remote file names is mandatory now.  A valid
remote file name starts with "/method:host:" or "/method:user@host:".

911 912
+++
*** The new pseudo method "-" is a marker for the default method.
913 914
"/-::" is the shortest remote file name then.

Michael Albinus's avatar
Michael Albinus committed
915 916 917 918
+++
*** The command 'tramp-change-syntax' allows to choose an alternative
remote file name syntax.

919
+++
920
*** New connection method "sg", which supports editing files under a
Michael Albinus's avatar
Michael Albinus committed
921 922
different group ID.

923 924 925
+++
*** New connection method "doas" for OpenBSD hosts.

926 927 928 929
+++
*** New connection method "gdrive", which allows to access Google
Drive onsite repositories.

930 931 932 933
+++
*** Gateway methods in Tramp have been removed.  Instead, the Tramp
manual documents how to configure ssh and PuTTY accordingly.

Michael Albinus's avatar
Michael Albinus committed
934
+++
Michael Albinus's avatar
Michael Albinus committed
935 936 937
*** Setting the "ENV" environment variable in
'tramp-remote-process-environment' enables reading of shell
initialization files.
Michael Albinus's avatar
Michael Albinus committed
938

939 940 941
---
*** Variable 'tramp-completion-mode' is obsoleted.

Michael Albinus's avatar
Michael Albinus committed
942
---
Paul Eggert's avatar
-  
Paul Eggert committed
943
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
Michael Albinus's avatar
Michael Albinus committed
944

945 946 947 948 949
** JS mode

---
*** JS mode now sets 'comment-multi-line' to t.

950
---
951 952 953
*** New variable 'js-indent-align-list-continuation', when set to nil,
will not align continuations of bracketed lists, but will indent them
by the fixed width 'js-indent-level'.
954

955 956 957
** CSS mode

---
958 959 960 961
*** Support for completing attribute values, at-rules, bang-rules,
HTML tags, classes and IDs using the 'completion-at-point' command.
Completion candidates for HTML classes and IDs are retrieved from open
HTML mode buffers.
962

963
---
964
*** CSS mode now binds 'C-h S' to a function that will show
965 966 967 968 969
information about a CSS construct (an at-rule, property, pseudo-class,
pseudo-element, with the default being guessed from context).  By
default the information is looked up on the Mozilla Developer Network,
but this can be customized using 'css-lookup-url-format'.

970 971 972 973 974
---
*** CSS colors are fontified using the color they represent as the
background.  For instance, #ff0000 would be fontified with a red
background.

975 976 977 978 979
+++
** Emacs now supports character name escape sequences in character and
string literals.  The syntax variants \N{character name} and
\N{U+code} are supported.

980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003
+++
** Prog mode has some support for multi-mode indentation.
This allows better indentation support in modes that support multiple
programming languages in the same buffer, like literate programming
environments or ANTLR programs with embedded Python code.

A major mode can provide indentation context for a sub-mode through
the 'prog-indentation-context' variable.  To support this, modes that
provide indentation should use 'prog-widen' instead of 'widen' and
'prog-first-column' instead of a literal zero.  See the node
"Mode-Specific Indent" in the ELisp manual for more details.

** ERC

*** New variable 'erc-default-port-tls' used to connect to TLS IRC
servers.

** URL

+++
*** The new function 'url-cookie-delete-cookie' can be used to
programmatically delete all cookies, or cookies from a specific
domain.

1004
+++
Paul Eggert's avatar
Paul Eggert committed
1005
*** 'url-retrieve-synchronously' now takes an optional timeout parameter.
1006 1007

---
1008
*** The URL package now support HTTPS over proxies supporting CONNECT.
1009

1010
+++
1011 1012
*** 'url-user-agent' now defaults to 'default', and the User-Agent
string is computed dynamically based on 'url-privacy-level'.
1013

1014 1015 1016 1017 1018 1019 1020
** VC and related modes

---
*** The VC state indicator in the mode line now defaults to more
colorful faces to make it more obvious to the user what the state is.
See the 'vc-faces' customization group.

Tom Tromey's avatar
Tom Tromey committed
1021 1022 1023 1024
+++
*** 'vc-dir-mode' now binds 'vc-log-outgoing' to 'O'; and has various
branch-related commands on a keymap bound to 'B'.

1025 1026 1027 1028 1029 1030 1031
** CC mode

*** Opening a .h file will turn C or C++ mode depending on language used.
This is done with the help of 'c-or-c++-mode' function which analyses
contents of the buffer to determine whether it's a C or C++ source
file.

1032 1033 1034 1035
---
** New DNS mode command 'dns-mode-ipv6-to-nibbles' to convert IPv6 addresses
to a format suitable for reverse lookup zone files.

1036 1037 1038 1039 1040 1041
** Flymake

+++
*** Emacs does no longer prompt the user before killing Flymake
processes on exit.

1042

Eli Zaretskii's avatar
Eli Zaretskii committed
1043
* New Modes and Packages in Emacs 26.1
1044

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

Mark Oteiza's avatar
Mark Oteiza committed
1047 1048
** New library 'xdg' with utilities for some XDG standards and specs.

Tom Tromey's avatar
Tom Tromey committed
1049 1050 1051
** HTML

+++
Paul Eggert's avatar
Paul Eggert committed
1052
*** A new submode of 'html-mode', 'mhtml-mode', is now the default
1053 1054
mode for *.html files.  This mode handles indentation,
fontification, and commenting for embedded JavaScript and CSS.
Tom Tromey's avatar
Tom Tromey committed
1055

1056 1057
** New minor mode 'pixel-scroll-mode' provides smooth pixel-level scrolling.

1058

Eli Zaretskii's avatar
Eli Zaretskii committed
1059
* Incompatible Lisp Changes in Emacs 26.1
1060

Tino Calancha's avatar
Tino Calancha committed
1061 1062 1063 1064 1065
+++
*** Command 'dired-mark-extension' now automatically prepends a '.' to the
extension when not present.  The new command 'dired-mark-suffix' behaves
similarly but it doesn't prepend a '.'.

1066 1067
+++
** Certain cond/pcase/cl-case forms are now compiled using a faster jump
Paul Eggert's avatar
Paul Eggert committed
1068
table implementation. This uses a new bytecode op 'switch', which isn't
1069
compatible with previous Emacs versions. This functionality can be disabled
Paul Eggert's avatar
Paul Eggert committed
1070
by setting 'byte-compile-cond-use-jump-table' to nil.
1071

1072 1073 1074 1075 1076 1077
** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
mode to send the same escape sequences that xterm does.  This makes
things like forward-word in readline work.

---
** hideshow mode got four key bindings that are analogous to outline
1078
mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
1079

1080 1081 1082 1083 1084 1085 1086
---
** Customizable variable 'query-replace-from-to-separator'
now doesn't propertize the string value of the separator.
Instead, text properties are added by query-replace-read-from.
Additionally, the new nil value restores pre-24.5 behavior
of not providing replacement pairs via the history.

1087
** Some obsolete functions, variables, and faces have been removed:
1088
*** make-variable-frame-local.  Variables cannot be frame-local any more.
1089 1090
*** From subr.el: window-dot, set-window-dot, read-input, show-buffer,
eval-current-buffer, string-to-int
1091
*** icomplete-prospects-length.
1092 1093
*** All the default-FOO variables that hold the default value of the
FOO variable.  Use 'default-value' and 'setq-default' to access and
Paul Eggert's avatar
Paul Eggert committed
1094
change FOO, respectively.  The exhaustive list of removed variables is:
1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108
'default-mode-line-format', 'default-header-line-format',
'default-line-spacing', 'default-abbrev-mode', 'default-ctl-arrow',
'default-truncate-lines', 'default-left-margin', 'default-tab-width',
'default-case-fold-search', 'default-left-margin-width',
'default-right-margin-width', 'default-left-fringe-width',
'default-right-fringe-width', 'default-fringes-outside-margins',
'default-scroll-bar-width', 'default-vertical-scroll-bar',
'default-indicate-empty-lines', 'default-indicate-buffer-boundaries',
'default-fringe-indicator-alist', 'default-fringe-cursor-alist',
'default-scroll-up-aggressively', 'default-scroll-down-aggressively',
'default-fill-column', 'default-cursor-type',
'default-cursor-in-non-selected-windows',
'default-buffer-file-coding-system', 'default-major-mode', and
'default-enable-multibyte-characters'.
Mark Oteiza's avatar
Mark Oteiza committed
1109
*** Many variables obsoleted in 22.1 referring to face symbols
1110

1111 1112 1113 1114 1115 1116
+++
** The variable 'text-quoting-style' no longer affects the treatment
of curved quotes in format arguments to functions like 'message' and
'format-message'.  In particular, when this variable's value is
'grave', all quotes in formats are output as-is.

1117 1118 1119 1120
** Functions like 'check-declare-file' and 'check-declare-directory'
now generate less chatter and more-compact diagnostics.  The auxiliary
function 'check-declare-errmsg' has been removed.

1121 1122 1123 1124 1125 1126
+++
** The regular expression character class [:blank:] now matches
Unicode horizontal whitespace as defined in the Unicode Technical
Standard #18.  If you only want to match space and tab, use [ \t]
instead.

1127
+++
1128 1129 1130 1131 1132
** 'min' and 'max' no longer round their results.  Formerly, they
returned a floating-point value if any argument was floating-point,
which was sometimes numerically incorrect.  For example, on a 64-bit
host (max 1e16 10000000000000001) now returns its second argument
instead of its first.
1133

1134 1135 1136 1137 1138
+++
** The variable 'old-style-backquotes' has been made internal and
renamed to 'lread--old-style-backquotes'.  No user code should use
this variable.

1139 1140 1141 1142 1143 1144
+++
** Module functions are now implemented slightly differently; in
particular, the function 'internal--module-call' has been removed.
Code that depends on undocumented internals of the module system might
break.

1145

Eli Zaretskii's avatar
Eli Zaretskii committed
1146
* Lisp Changes in Emacs 26.1
1147

1148 1149 1150
+++
** New optional argument TESTFN in 'alist-get', 'map-elt' and 'map-put'.

1151 1152 1153
** New function 'seq-set-equal-p' to check if SEQUENCE1 and SEQUENCE2
contain the same elements, regardless of the order.

1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167
** Checksum/Hash

+++
** New function 'secure-hash-algorithms' to list the algorithms that
'secure-hash' supports.
See the node "(elisp) Checksum/Hash" in the ELisp manual for details.

+++
** Emacs now exposes the GnuTLS cryptographic API with the functions
'gnutls-macs' and 'gnutls-hash-mac'; 'gnutls-digests' and
'gnutls-hash-digest'; 'gnutls-ciphers' and 'gnutls-symmetric-encrypt'
and 'gnutls-symmetric-decrypt'.
See the node "(elisp) GnuTLS Cryptography" in the ELisp manual for details.

1168 1169
+++
** Emacs now supports records for user-defined types, via the new
1170 1171 1172
functions 'make-record', 'record', and 'recordp'.  Records are now
used internally to represent cl-defstruct and defclass instances, for
example.
1173

1174
+++
1175 1176 1177 1178 1179
** 'save-some-buffers' now uses 'save-some-buffers-default-predicate'
to decide which buffers to ask about, if the PRED argument is nil.
The default value of 'save-some-buffers-default-predicate' is nil,
which means ask about all file-visiting buffers.

1180
** string-(to|as|make)-(uni|multi)byte are now declared obsolete.
1181 1182 1183 1184
** New variable 'while-no-input-ignore-events' which allow
setting which special events 'while-no-input' should ignore.
It is a list of symbols.

1185 1186
** New function 'undo-amalgamate-change-group' to get rid of
undo-boundaries between two states.
1187

Paul Eggert's avatar
Paul Eggert committed
1188 1189 1190 1191
** New var 'definition-prefixes' is a hash table mapping prefixes to
the files where corresponding definitions can be found.  This can be
used to fetch definitions that are not yet loaded, for example for
'C-h f'.
1192

1193 1194
** New var 'syntax-ppss-table' to control the syntax-table used in
'syntax-ppss'.
1195

1196
+++
1197
** 'define-derived-mode' can now specify an :after-hook form, which
1198 1199 1200 1201
gets evaluated after the new mode's hook has run.  This can be used to
incorporate configuration changes made in the mode hook into the
mode's setup.

Glenn Morris's avatar