Ура, emacs-26 теперь с нескучным скролом.
Highlights of this release include:
- Limited form of concurrency with Lisp threads
- Support for optional display of line numbers in the buffer
- Emacs now uses double buffering to reduce flicker on the X Window
System
- Flymake has been completely redesigned
- TRAMP has a new connection method for Google Drive
- New single-line horizontal scrolling mode
- A systemd user unit file is provided
- Support for 24-bit colors on capable text terminals
** 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 "(elisp) Threads" in the ELisp manual for full
documentation of these facilities.
** 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.
** 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. Alternatively, you can use the 'display-line-numbers-mode'
minor mode or the global 'global-display-line-numbers-mode'. When
using these modes, customize 'display-line-numbers-type' with the same
value as you would use with 'display-line-numbers'.