mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 04:21:24 +00:00
* src/dispextern.h (struct glyph_string): Remove window member (block_buffer_flips, unblock_buffer_flips) (buffer_flipping_blocked_p): Declare. * src/xterm.h (struct x_display_info): New member supports_xdbe. (struct x_output): New members draw_desc and need_buffer_flip. (FRAME_X_DRAWABLE, FRAME_X_RAW_DRAWABLE) (FRAME_X_DOUBLE_BUFFERED_P) (FRAME_X_NEED_BUFFER_FLIP): New macros. (set_up_x_back_buffer, tear_down_x_back_buffer) (initial_set_up_x_back_buffer): Declare. * src/xterm.c: Include Xdbe.h. (x_begin_cr_clip, x_fill_rectangle, x_draw_rectangle) (x_draw_vertical_window_border, x_update_end) (x_setup_relief_color, x_draw_relief_rect) (x_draw_fringe_bitmap, x_shift_glyphs_for_insert) (x_scroll_run, x_draw_hollow_cursor, x_draw_bar_cursor): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local variables appropriately; substitute calls to XClearArea with x_clear_area, which DTRT for double buffering. (x_clear_window, x_clear_area): In double-buffering mode, use rect-drawing X functions instead of XClearWindow and XClearArea, which always operate on the front buffer. (show_back_buffer): New function. (XTframe_up_to_date): Call show_back_buffer when done. (x_clear_frame, x_clear_frame_area): Remove obsolete calls to gtk_widget_queue_draw to refresh scroll bars; scroll bars are now independent X windows. (handle_one_xevent): Call font_drop_xrender_surfaces when XftDraw might need regenerating; perform buffer flip when responding to Expose events; issue front-buffer clearing commands as stopgap while we wait for redisplay. Call flush_dirty_back_buffers. (x_make_frame_visible): Un-bitrot comment; move XSETFRAME earlier in function. (x_free_frame_resources): Call tear_down_x_back_buffer when destroying frame. (x_term_init): Attempt to initialize double buffer extension. (x_flip_and_flush): New function. (x_redisplay_interface): Point to x_flip_and_flush instead of x_flip directly. (flush_dirty_back_buffers): New function. (x_create_terminal): Register buffer_flipping_unblocked_hook. * src/xftfont.c (xftfont_drop_xrender_surfaces): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. (xftfont_draw): Call x_mark_frame_dirty. (xftfont_drop_xrender_surfaces): New function. (syms_of_xftfont): Register it. * src/xfont.c (xfont_draw): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. * src/xfns.c: Include Xdbe.h. (x_set_inhibit_double_buffering, set_up_x_back_buffer) (Fx_double_buffered_p): New functions. (x_window): Call initial_set_up_x_back_buffer. (x_make_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. (Fx_create_frame): Configure `inhibit-double-buffering' frame parameter. (x_create_tip_frame): Call initial_set_up_x_back_buffer. (x_frame_parm_handlers): Register x_set_inhibit_double_buffering. (syms_of_xfns): Register Sx_double_buffered_p. (x_mark_frame_dirty): Define. * src/xfaces.c (x_create_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. * src/xdisp.c (remember_mouse_glyph, init_glyph_string): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. (redisplay_internal): Restart redisplay if a frame is garbaged during updating; explain why. Block buffer flips during redisplay. (redisplay_preserve_echo_area): Block buffer flip during call to redisplay_internal. (buffer_flip_blocked_depth): New variable. (block_buffer_flips, unblock_buffer_flips) (buffer_flipping_blocked_p): New functions. (init_glyph_string): Stop setting window member of struct glyph_string. * src/w32fns.c (w32_frame_parm_handlers): Add placeholder for x_set_inhibit_double_buffering. * src/termhooks.h (struct terminal): Add buffer_flipping_unblocked_hook. * src/nsfns.m (ns_frame_parm_handlers): Add placeholder for x_set_inhibit_double_buffering. * src/image.c (x_create_bitmap_from_data) (x_create_bitmap_from_file, x_create_x_image_and_pixmap) (Create_Pixmap_From_Bitmap_Data) (x_create_bitmap_from_xpm_data, xpm_load, gs_load): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local variables appropriately. * src/gtkutil.c: Include Xdbe.h. (xg_get_widget_from_map): Forward declare. (xg_clear_under_internal_border): Remove obsolete calls to refresh scroll bars. (xg_create_frame_widgets): Call initial_set_up_x_back_buffer. (xg_free_frame_widgets): Call tear_down_x_back_buffer; reset FRAME_X_DRAWABLE as well as FRAME_X_WINDOW and for the same reason. (xg_set_background_color): Set scroll bar background colors. (xg_finish_scroll_bar_creation): New function with common logic of xg_create_scroll_bar, xg_create_horizontal_scroll_bar. Force scroll bars to be real X11 windows. (xg_create_scroll_bar, xg_create_horizontal_scroll_bar): Call xg_finish_scroll_bar_creation. (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos): Remove obsolete calls to refresh scroll bars; fix comments. * src/ftxfont.c (ftxfont_get_gcs, ftxfont_draw_bitmap, (ftxfont_draw_background): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW. * src/frame.c (frame_parms): Add table entry for new `inhibit-double-buffering' frame parameter (syms_of_frame): Register Qinhibit_double_buffering. * src/font.h (struct font_driver): Add new `flush_frame_caches' hook. (font_drop_xrender_surfaces): Declare. * src/font.c (font_drop_xrender_surfaces): New function. * src/Makefile.in (XDBE_LIBS, XDBE_CFLAGS): Substitute. * etc/NEWS: Mention use of double buffering * doc/lispref/frames.texi (Management Parameters): Document `inhibit-double-buffering' frame parameters. (Visibility of Frames): Document `x-double-buffered-p'. * configure.ac: Check for the X double buffer extension
746 lines
26 KiB
Text
746 lines
26 KiB
Text
GNU Emacs NEWS -- history of user-visible changes.
|
||
|
||
Copyright (C) 2014-2016 Free Software Foundation, Inc.
|
||
See the end of the file for license conditions.
|
||
|
||
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
|
||
If possible, use M-x report-emacs-bug.
|
||
|
||
This file is about changes in Emacs version 26.
|
||
|
||
See file HISTORY for a list of GNU Emacs versions and release dates.
|
||
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.
|
||
|
||
You can narrow news to a specific version by calling 'view-emacs-news'
|
||
with a prefix argument or by typing C-u C-h C-n.
|
||
|
||
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,
|
||
|
||
|
||
* Installation Changes in Emacs 26.1
|
||
|
||
** By default libgnutls is now required when building Emacs.
|
||
Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.
|
||
|
||
** GnuTLS version 2.12.2 or later is now required, instead of merely
|
||
version 2.6.6 or later.
|
||
|
||
** The new option 'configure --enable-gcc-warnings=warn-only' causes
|
||
GCC to issue warnings without stopping the build. This behavior is
|
||
now the default in developer builds. As before, use
|
||
'--disable-gcc-warnings' to suppress GCC's warnings, and
|
||
'--enable-gcc-warnings' to stop the build if GCC issues warnings.
|
||
|
||
+++
|
||
** 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'.
|
||
|
||
** New configure option '--disable-build-details' attempts to build an
|
||
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.
|
||
|
||
** Emacs no longer works on IRIX. We expect that Emacs users are not
|
||
affected by this, as SGI stopped supporting IRIX in December 2013.
|
||
|
||
|
||
* Startup Changes in Emacs 26.1
|
||
|
||
|
||
* Changes in Emacs 26.1
|
||
|
||
+++
|
||
** 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.
|
||
|
||
+++
|
||
** 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
|
||
supported for many years.
|
||
|
||
---
|
||
The group 'wp', whose label was "text", is now deprecated.
|
||
Use the new group 'text', which inherits from 'wp', instead.
|
||
|
||
+++
|
||
** The new function 'call-shell-region' executes a command in an
|
||
inferior shell with the buffer region as input.
|
||
|
||
+++
|
||
** The new user option 'shell-command-dont-erase-buffer' controls
|
||
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.
|
||
When 'shell-command-dont-erase-buffer' is nil, the default value,
|
||
the behaviour of 'shell-command', 'shell-command-on-region' and
|
||
'async-shell-command' is as usual.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
---
|
||
** 'find-library-name' will now fall back on looking at 'load-history'
|
||
to try to locate libraries that have been loaded with an explicit path
|
||
outside 'load-path'.
|
||
|
||
+++
|
||
** Faces in 'minibuffer-prompt-properties' no longer overwrite properties
|
||
in the text in functions like 'read-from-minibuffer', but instead are
|
||
added to the end of the face list. This allows users to say things
|
||
like '(read-from-minibuffer (propertize "Enter something: " 'face 'bold))'.
|
||
|
||
+++
|
||
** The new variable 'extended-command-suggest-shorter' has been added
|
||
to control whether to suggest shorter 'M-x' commands or not.
|
||
|
||
---
|
||
** icomplete now respects 'completion-ignored-extensions'.
|
||
|
||
+++
|
||
** Non-breaking hyphens are now displayed with the 'nobreak-hyphen'
|
||
face instead of the 'escape-glyph' face.
|
||
|
||
+++
|
||
** Approximations to quotes are now displayed with the new 'homoglyph'
|
||
face instead of the 'escape-glyph' face.
|
||
|
||
---
|
||
** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
|
||
part of minibuffers.
|
||
|
||
---
|
||
** 'find-library' now takes a prefix argument to pop to a different
|
||
window.
|
||
|
||
---
|
||
** 'process-attributes' on Darwin systems now returns more information.
|
||
|
||
+++
|
||
** Several accessors for the value returned by 'file-attributes'
|
||
have been added. They are: 'file-attribute-type',
|
||
'file-attribute-link-number', 'file-attribute-user-id',
|
||
'file-attribute-group-id', 'file-attribute-access-time',
|
||
'file-attribute-modification-time',
|
||
'file-attribute-status-change-time', 'file-attribute-size',
|
||
'file-attribute-modes', 'file-attribute-inode-number',
|
||
'file-attribute-device-number' and 'file-attribute-collect'.
|
||
|
||
+++
|
||
** The new function 'buffer-hash' computes a fast, non-consing hash of
|
||
a buffer's contents.
|
||
|
||
---
|
||
** 'fill-paragraph' no longer marks the buffer as changed unless it
|
||
actually changed something.
|
||
|
||
---
|
||
** The locale language name 'ca' is now mapped to the language
|
||
environment 'Catalan', which has been added.
|
||
|
||
---
|
||
** 'align-regexp' has a separate history for its interactive argument.
|
||
'align-regexp' no longer shares its history with all other
|
||
history-less functions that use 'read-string'.
|
||
|
||
+++
|
||
** The networking code has been reworked so that it's more
|
||
asynchronous than it was (when specifying :nowait t in
|
||
'make-network-process'). How asynchronous it is varies based on the
|
||
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).
|
||
|
||
Certain process oriented functions (like 'process-datagram-address')
|
||
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.
|
||
|
||
** 'make-network-process' and 'open-network-stream' sometimes allowed
|
||
: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.
|
||
|
||
** It is possible to disable attempted recovery on fatal signals.
|
||
|
||
Two new variables support disabling attempts to recover from stack
|
||
overflow and to avoid automatic auto-save when Emacs is delivered a
|
||
fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil',
|
||
will disable attempts to recover from C stack overflows; Emacs will
|
||
then crash as with any other fatal signal.
|
||
'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
|
||
disable attempts to auto-save the session and shut down in an orderly
|
||
fashion when Emacs receives a fatal signal; instead, Emacs will
|
||
terminate immediately. Both variables are non-'nil' by default.
|
||
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.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
+++
|
||
** A second dir-local file (.dir-locals-2.el) is now accepted.
|
||
See the variable 'dir-locals-file-2' for more information.
|
||
|
||
---
|
||
** International domain names (IDNA) are now encoded via the new
|
||
puny.el library, so that one can visit web sites with non-ASCII URLs.
|
||
|
||
+++
|
||
** The new 'timer-list' command lists all active timers in a buffer,
|
||
where you can cancel them with the 'c' command.
|
||
|
||
+++
|
||
** The new function 'read-multiple-choice' prompts for multiple-choice
|
||
questions, with a handy way to display help texts.
|
||
|
||
+++
|
||
** 'switch-to-buffer-preserve-window-point' now defaults to t.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
|
||
* Editing Changes in Emacs 26.1
|
||
|
||
+++
|
||
** New bindings for 'query-replace-map'.
|
||
'undo', undo the last replacement; bound to 'u'.
|
||
'undo-all', undo all replacements; bound to 'U'.
|
||
|
||
** '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.
|
||
|
||
** 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.
|
||
|
||
|
||
* Changes in Specialized Modes and Packages in Emacs 26.1
|
||
|
||
** Ibuffer
|
||
|
||
---
|
||
*** A new command 'ibuffer-copy-buffername-as-kill'; bound
|
||
to 'B'.
|
||
|
||
---
|
||
*** New command 'ibuffer-change-marks'; bound to '* c'.
|
||
|
||
---
|
||
*** 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.
|
||
|
||
---
|
||
*** A new command 'ibuffer-unmark-all-marks' to unmark
|
||
all buffers without asking confirmation; bound to
|
||
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.
|
||
|
||
---
|
||
*** A new command 'ibuffer-mark-by-content-regexp' to mark buffers
|
||
whose content matches a regexp; bound to '% g'.
|
||
|
||
---
|
||
*** Two new options 'ibuffer-never-search-content-name' and
|
||
'ibuffer-never-search-content-mode' used by
|
||
'ibuffer-mark-by-content-regexp'.
|
||
|
||
** Browse-URL
|
||
|
||
*** Support for opening links to man pages in Man or WoMan mode.
|
||
|
||
** Compilation mode
|
||
|
||
---
|
||
*** Messages from CMake are now recognized.
|
||
|
||
** Dired
|
||
|
||
+++
|
||
*** A new option 'dired-always-read-filesystem' default to nil.
|
||
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.
|
||
|
||
+++
|
||
*** In wdired, when editing files to contain slash characters,
|
||
the resulting directories are automatically created. Whether to do
|
||
this is controlled by the 'wdired-create-parent-directories' variable.
|
||
|
||
+++
|
||
*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
|
||
viewing HTML files and the like.
|
||
|
||
** Edebug
|
||
|
||
*** Edebug can be prevented from pausing 1 second after reaching a
|
||
breakpoint (e.g. with "f" and "o") by customizing the new option
|
||
'edebug-sit-on-break'.
|
||
|
||
** 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.
|
||
|
||
** eww
|
||
|
||
+++
|
||
*** A new 's' command for switching to another eww buffer via the minibuffer.
|
||
|
||
---
|
||
*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
|
||
with the 'o' command from 'image-map'.
|
||
|
||
+++
|
||
*** 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.
|
||
|
||
---
|
||
*** Images that are being loaded are now marked with gray
|
||
"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).
|
||
|
||
** Images
|
||
|
||
+++
|
||
*** Images are automatically scaled before displaying based on the
|
||
'image-scaling-factor' variable (if Emacs supports scaling the images
|
||
in question).
|
||
|
||
+++
|
||
*** 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
|
||
added. See the "SVG Images" section in the lispref manual for
|
||
details.
|
||
|
||
+++
|
||
*** New setf-able function to access and set image parameters is
|
||
provided: 'image-property'.
|
||
|
||
---
|
||
** 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.
|
||
|
||
+++
|
||
** The commands that add ChangeLog entries now prefer a VCS root directory
|
||
for the ChangeLog file, if none already exists. Customize
|
||
'change-log-directory-files' to nil for the old behavior.
|
||
|
||
---
|
||
** Support for non-string values of 'time-stamp-format' has been removed.
|
||
|
||
** Message
|
||
|
||
---
|
||
*** 'message-use-idna' now defaults to t (because Emacs comes with
|
||
built-in IDNA support now).
|
||
|
||
---
|
||
*** 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.)
|
||
|
||
---
|
||
*** 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.
|
||
|
||
** Tramp
|
||
|
||
+++
|
||
*** New connection method "sg", which supports editing files under a
|
||
different group ID.
|
||
|
||
+++
|
||
*** New connection method "doas" for OpenBSD hosts.
|
||
|
||
+++
|
||
*** New connection method "gdrive", which allows to access Google
|
||
Drive onsite repositories.
|
||
|
||
+++
|
||
Setting the "ENV" environment variable in 'tramp-remote-process-environment'
|
||
enables reading of shell initialization files.
|
||
|
||
---
|
||
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
|
||
|
||
** CSS mode
|
||
|
||
---
|
||
*** 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.
|
||
|
||
+++
|
||
** Emacs now supports character name escape sequences in character and
|
||
string literals. The syntax variants \N{character name} and
|
||
\N{U+code} are supported.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
+++
|
||
*** 'url-retrieve-synchronously' now takes an optional timeout parameter.
|
||
|
||
---
|
||
*** The URL package now support HTTPS over proxies supporting CONNECT.
|
||
|
||
+++
|
||
*** 'url-user-agent' now defaults to 'default', and the User-Agent
|
||
string is computed dynamically based on 'url-privacy-level'.
|
||
|
||
** 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.
|
||
|
||
** 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.
|
||
|
||
** Flymake
|
||
|
||
+++
|
||
*** Emacs does no longer prompt the user before killing Flymake
|
||
processes on exit.
|
||
|
||
|
||
* New Modes and Packages in Emacs 26.1
|
||
|
||
** New Elisp data-structure library 'radix-tree'.
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 26.1
|
||
|
||
+++
|
||
** Resizing a frame no longer runs 'window-configuration-change-hook'.
|
||
Put your function on 'window-size-change-functions' instead.
|
||
|
||
** '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
|
||
mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
|
||
|
||
** The grep/rgrep/lgrep functions will now ask about saving files
|
||
before running. This is controlled by the 'grep-save-buffers'
|
||
variable.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
** 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.
|
||
|
||
|
||
* Lisp Changes in Emacs 26.1
|
||
|
||
** New function 'undo-amalgamate-change-group' to get rid of
|
||
undo-boundaries between two states.
|
||
|
||
** New var 'definition-prefixes' is a hashtable 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'.
|
||
|
||
** New var 'syntax-ppss-table' to control the syntax-table used in
|
||
'syntax-ppss'.
|
||
|
||
+++
|
||
** 'define-derived-mode' can now specify an :after-hook form, which
|
||
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.
|
||
|
||
** Autoload files can be generated without timestamps,
|
||
by setting 'autoload-timestamps' to nil.
|
||
FIXME As an experiment, nil is the current default.
|
||
If no insurmountable problems before next release, it can stay that way.
|
||
|
||
---
|
||
** 'gnutls-boot' now takes a parameter ':complete-negotiation' that
|
||
says that negotiation should complete even on non-blocking sockets.
|
||
|
||
+++
|
||
** New functions 'window-pixel-width-before-size-change' and
|
||
'window-pixel-height-before-size-change' support detecting which
|
||
window changed size when 'window-size-change-functions' are run.
|
||
|
||
+++
|
||
** New function 'display-buffer-reuse-mode-window' is an action function
|
||
suitable for use in 'display-buffer-alist'. For example, to avoid creating
|
||
a new window when opening man pages when there's already one, use
|
||
(add-to-list 'display-buffer-alist
|
||
'("\\`\\*Man .*\\*\\'" .
|
||
(display-buffer-reuse-mode-window
|
||
(inhibit-same-window . nil)
|
||
(mode . Man-mode))))
|
||
|
||
---
|
||
** There is now a new variable 'flyspell-sort-corrections-function'
|
||
that allows changing the way corrections are sorted.
|
||
|
||
---
|
||
** The new command 'fortune-message' has been added, which displays
|
||
fortunes in the echo area.
|
||
|
||
+++
|
||
** New function 'func-arity' returns information about the argument list
|
||
of an arbitrary function. This generalizes 'subr-arity' for functions
|
||
that are not built-in primitives. We recommend using this new
|
||
function instead of 'subr-arity'.
|
||
|
||
+++
|
||
** 'parse-partial-sexp' state has a new element. Element 10 is
|
||
non-nil when the last character scanned might be the first character
|
||
of a two character construct, i.e., a comment delimiter or escaped
|
||
character. Its value is the syntax of that last character.
|
||
|
||
+++
|
||
** 'parse-partial-sexp's state, element 9, has now been confirmed as
|
||
permanent and documented, and may be used by Lisp programs. Its value
|
||
is a list of currently open parenthesis positions, starting with the
|
||
outermost parenthesis.
|
||
|
||
---
|
||
** 'read-color' will now display the color names using the color itself
|
||
as the background color.
|
||
|
||
** The function 'redirect-debugging-output' now works on platforms
|
||
other than GNU/Linux.
|
||
|
||
+++
|
||
** The new function 'string-version-lessp' compares strings by
|
||
interpreting consecutive runs of numerical characters as numbers, and
|
||
compares their numerical values. According to this predicate,
|
||
"foo2.png" is smaller than "foo12.png".
|
||
|
||
+++
|
||
** The new function 'char-from-name' converts a Unicode name string
|
||
to the corresponding character code.
|
||
|
||
+++
|
||
** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
|
||
Lisp object suitable for use with 'eq' and 'eql' correspondingly. If
|
||
two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
|
||
('sxhash-eql') on them will be the same.
|
||
|
||
+++
|
||
** Function 'sxhash' has been renamed to 'sxhash-equal' for
|
||
consistency with the new functions. For compatibility, 'sxhash'
|
||
remains as an alias to 'sxhash-equal'.
|
||
|
||
+++
|
||
** Time conversion functions that accept a time zone rule argument now
|
||
allow it to be OFFSET or a list (OFFSET ABBR), where the integer
|
||
OFFSET is a count of seconds east of Universal Time, and the string
|
||
ABBR is a time zone abbreviation. The affected functions are
|
||
'current-time-string', 'current-time-zone', 'decode-time',
|
||
'format-time-string', and 'set-time-zone-rule'.
|
||
|
||
** New built-in function 'mapcan' which avoids unnecessary consing (and garbage
|
||
collection).
|
||
|
||
+++
|
||
** The new functions 'make-nearby-temp-file' and 'temporary-file-directory'
|
||
can be used for creation of temporary files of remote or mounted directories.
|
||
|
||
+++
|
||
** The new error 'file-missing', a subcategory of 'file-error', is now
|
||
signaled instead of 'file-error' if a file operation acts on a file
|
||
that does not exist.
|
||
|
||
+++
|
||
** The function 'delete-directory' no longer signals an error when
|
||
operating recursively and when some other process deletes the directory
|
||
or its files before 'delete-directory' gets to them.
|
||
|
||
** Changes in Frame- and Window- Handling
|
||
|
||
+++
|
||
*** Support for side windows is now official. The display action
|
||
function 'display-buffer-in-side-window' will display its buffer in a
|
||
side window. Functions for toggling all side windows on a frame,
|
||
changing and reversing the layout of side windows and returning the main
|
||
(major non-side) window of a frame are provided. For details consult
|
||
the section "Side Windows" in the Elisp manual.
|
||
|
||
+++
|
||
*** Support for atomic windows - rectangular compositions of windows
|
||
treated by 'split-window', 'delete-window' and 'delete-other-windows'
|
||
like a single live window - is now official. For details consult the
|
||
section "Atomic Windows" in the Elisp manual.
|
||
|
||
+++
|
||
*** New 'display-buffer' alist entry 'window-parameters' allows to
|
||
assign window parameters to the window used for displaying the buffer.
|
||
|
||
+++
|
||
*** New window parameter 'no-delete-other-window' prevents that
|
||
its window gets deleted by 'delete-other-windows'.
|
||
|
||
+++
|
||
*** New command 'window-swap-states' swaps the states of two live
|
||
windows.
|
||
|
||
|
||
* Changes in Emacs 26.1 on Non-Free Operating Systems
|
||
|
||
** Intercepting hotkeys on Windows 7 and later now works better.
|
||
The new keyboard hooking code properly grabs system hotkeys such as
|
||
Win-* and Alt-TAB, in a way that Emacs can get at them before the
|
||
system. This makes the 'w32-register-hot-key' functionality work
|
||
again on all versions of MS-Windows starting with Windows 7. On
|
||
Windows NT and later you can now register any hotkey combination. (On
|
||
Windows 9X, the previous limitations, spelled out in the Emacs manual,
|
||
still apply.)
|
||
|
||
** 'convert-standard-filename' no longer mirrors slashes on MS-Windows.
|
||
Previously, on MS-Windows this function converted slash characters in
|
||
file names into backslashes. It no longer does that. If your Lisp
|
||
program used 'convert-standard-filename' to prepare file names to be
|
||
passed to subprocesses (which is not the recommended usage of that
|
||
function), you will now have to mirror slashes in your application
|
||
code. One possible way is this:
|
||
|
||
(let ((start 0))
|
||
(while (string-match "/" file-name start)
|
||
(aset file-name (match-beginning 0) ?\\)
|
||
(setq start (match-end 0))))
|
||
|
||
** GUI sessions now treat SIGINT like Posix platforms do.
|
||
The effect of delivering a Ctrl-C (SIGINT) signal to a GUI Emacs on
|
||
MS-Windows is now the same as on Posix platforms -- Emacs saves the
|
||
session and exits. In particular, this will happen if you start
|
||
emacs.exe from the Windows shell, then type Ctrl-C into that shell's
|
||
window.
|
||
|
||
---
|
||
** 'signal-process' supports SIGTRAP on Windows XP and later.
|
||
The 'kill' emulation on Windows now maps SIGTRAP to a call to the
|
||
'DebugBreakProcess' API. This causes the receiving process to break
|
||
execution and return control to the debugger. If no debugger is
|
||
attached to the receiving process, the call is typically ignored.
|
||
This is in contrast to the default action on POSIX Systems, where it
|
||
causes the receiving process to terminate with a core dump if no
|
||
debugger has been attached to it.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
This file is part of GNU Emacs.
|
||
|
||
GNU Emacs is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
GNU Emacs is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
|
||
Local variables:
|
||
coding: us-ascii
|
||
mode: outline
|
||
paragraph-separate: "[ ]*$"
|
||
end:
|