12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760 |
- GNU Emacs NEWS -- history of user-visible changes.
- Copyright (C) 2014-2017 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 --with-mailutils' causes Emacs to rely on
- GNU Mailutils to retrieve email. It is recommended, and is the
- default if GNU Mailutils is installed. When --with-mailutils is not
- in effect, the Emacs build procedure by default continues to build and
- install a limited 'movemail' substitute that retrieves POP3 email only
- via insecure channels; to avoid this problem, use either
- --with-mailutils or --without-pop when configuring.
- ** 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.
- ** When GCC warnings are enabled, '--enable-check-lisp-object-type' is
- now enabled by default when configuring.
- +++
- ** 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'.
- +++
- ** 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/)
- ** 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.
- ** 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.
- ** 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
- +++
- ** New option '--fg-daemon'. This is the same as '--daemon', except
- 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
- aspects of daemon behavior themselves. '--bg-daemon' is now an alias
- for '--daemon'.
- +++
- ** New option '--module-assertions'.
- When given 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.
- +++
- ** 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.
- +++
- ** Emacs now obeys the X resource "scrollBar" at startup.
- The effect is similar to that of "toolBar" resource on the tool bar.
- * Changes in Emacs 26.1
- +++
- ** The function 'assoc' now takes an optional third argument 'testfn'.
- This argument, when non-nil, is used for comparison instead of
- 'equal'.
- ---
- ** 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.
- +++
- ** The variable 'emacs-version' no longer includes the build number.
- This is now stored separately in a new variable, 'emacs-build-number'.
- +++
- ** The new function 'mapbacktrace' applies a function to all frames of
- the current stack trace.
- +++
- ** 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.
- +++
- ** The new function 'file-name-case-insensitive-p' tests whether a
- given file is on a case-insensitive filesystem.
- +++
- ** 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.
- ** 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.
- ** 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'.
- +++
- ** 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.
- +++
- ** 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. 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)
- to default-frame-alist. Or inject this parameter into the selected
- frame by evaluating this form:
- (modify-frame-parameters nil '((inhibit-double-buffering . t)))
- ---
- 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 behavior of 'shell-command', 'shell-command-on-region' and
- 'async-shell-command' is as usual.
- +++
- ** The new user option 'async-shell-command-display-buffer' controls
- whether the output buffer of an asynchronous command is shown
- immediately, or only when there is output.
- +++
- ** 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 'mouse-drag-and-drop-region' allows to drag the
- entire region of text to another place or another buffer.
- +++
- ** 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.
- +++
- ** New face 'header-line-highlight'.
- This face is the header-line analogue of 'mode-line-highlight'; it
- should be the preferred mouse-face for mouse-sensitive elements in the
- header line.
- ---
- ** '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.
- +++
- ** 'interrupt-process' consults now the list
- 'interrupt-process-functions', which function has to be called in
- order to deliver the SIGINT signal. This allows Tramp to send the
- SIGINT signal to remote asynchronous processes. The hitherto existing
- implementation has been moved to 'internal-default-interrupt-process'.
- +++
- ** 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.
- +++
- ** Connection-local variables can be used to specify local variables
- with a value depending on the connected remote server. For details,
- see the node "Connection Local Variables" in the ELisp manual.
- ---
- ** 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.
- ---
- ** 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'.
- +++
- ** NUL bytes in strings copied to the system clipboard are now
- replaced with "\0".
- +++
- ** The new variable 'x-ctrl-keysym' has been added to the existing
- roster of X keysyms. It can be used in combination with another
- variable of this kind to swap modifiers in Emacs.
- ---
- ** New input methods: 'cyrillic-tuvan', 'polish-prefix'.
- ---
- ** The 'dutch' input method no longer attempts to support Turkish too.
- 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.
- +++
- ** 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".
- +++
- ** 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.
- +++
- ** 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'.
- +++
- ** Emacsclient has a new option -u/--suppress-output. The option
- suppresses display of return values from the server process.
- ---
- ** 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.
- +++
- ** 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.
- +++
- ** 'describe-key-briefly' now ignores mouse movement events.
- +++
- ** The new variable 'eval-expression-print-maximum-character' prevents
- large integers from being displayed as characters.
- ** Two new commands for finding the source code of Emacs Lisp
- libraries: 'find-library-other-window' and 'find-library-other-frame'.
- +++
- ** The new variable 'display-raw-bytes-as-hex' allows to change the
- display of raw bytes from octal to hex.
- ** You can now provide explicit field numbers in format specifiers.
- For example, '(format "%2$s %1$s" "X" "Y")' produces "Y X".
- ** 'comment-indent-function' values may now return a cons to specify a
- range of indentation.
- +++
- ** 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'.
- If `display-line-numbers' is set to t, Emacs will display the number
- of each line before the line. If set to 'relative', Emacs will
- display the line number relative to the line showing point, with that
- line's number 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.
- Line numbers are not displayed at all in minibuffer windows and in
- tooltips, as they are not useful there.
- 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.
- You can also customize the new buffer-local variable
- 'display-line-numbers-width' to specify a fixed minimal with of the
- area allocated to line-number display. The default is nil, meaning
- that Emacs will dynamically calculate the area width, enlarging or
- shrinking it as needed. Setting it to a non-negative integer
- specifies that as the minimal width; selecting a value that is large
- enough to display all line numbers in a buffer will then keep the
- line-number display area of constant width at all times, if that is
- desired.
- When using `display-line-numbers-mode', you can customize the variable
- `display-line-numbers-grow-only' to a non-nil value; this means that
- Emacs may grow the above area width dynamically, but never shrink it.
- Under this mode, customizing the variable
- `display-line-numbers-width-start' to a non-nil value will cause Emacs
- to set `display-line-numbers-width' to the minimum width necessary to
- display all line numbers in the current buffer when first visiting it.
- Lisp programs can disable line-number display for a particular screen
- line by putting the 'display-line-numbers-disable' text property or
- 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.
- 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'.
- Linum mode and all similar packages are henceforth becoming obsolete.
- Users and developers are encouraged to switch to this new feature
- instead.
- * Editing Changes in Emacs 26.1
- +++
- ** 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.)
- +++
- ** 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.
- +++
- ** 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.
- +++
- ** 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.
- +++
- ** The 'occur' command can now operate on the region.
- +++
- ** 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.
- ** 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.
- *** 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).
- *** 'upper' and 'lower' classes match characters w/o simple cased forms.
- For instance, ß letter and fi ligature are now matched by [[:lower:]]
- regular expression.
- ** 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.
- +++
- ** 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.
- ** 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.
- +++
- ** New commands 'apropos-local-variable' and 'apropos-local-value.
- These are buffer-local versions of 'apropos-variable' and
- 'apropos-value', respectively. They show buffer-local variables whose
- names and values, respectively, match a given pattern.
- +++
- ** 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.
- * Changes in Specialized Modes and Packages in Emacs 26.1
- ** New function `cl-generic-p'.
- ** Dired
- +++
- *** You can answer 'all' in 'dired-do-delete' to delete recursively all
- remaining directories without more prompts.
- +++
- *** Dired supports wildcards in the directory part of the file names.
- +++
- *** You can now use '`?`' in 'dired-do-shell-command'; as ' ? ', it gets replaced
- by the current file name.
- *** html2text is now marked obsolete.
- *** smerge-refine-regions can refine regions in separate buffers
- *** Info menu and index completion uses substring completion by default.
- This can be customized via the info-menu category in
- completion-category-override.
- +++
- *** The ancestor buffer is shown by default in 3way merges.
- A new option ediff-show-ancestor and a new toggle
- ediff-toggle-show-ancestor.
- ** TeX: Add luatex and xetex as alternatives to pdftex
- ** 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'.
- ** Gnus
- ---
- *** The .newsrc file will now only be saved if the native select
- method is an NNTP select method.
- +++
- *** A new command for sorting articles by readedness marks has been
- added: 'C-c C-s C-m C-m'.
- ** Ibuffer
- ---
- *** New command 'ibuffer-jump'.
- ---
- *** 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
- to '/b', '/.', '//', '/*', '/i' and '/v'.
- ---
- *** Two new commands 'ibuffer-filter-chosen-by-completion'
- and 'ibuffer-and-filter', the second bound to '/&'.
- ---
- *** The commands 'ibuffer-pop-filter', 'ibuffer-pop-filter-group',
- 'ibuffer-or-filter' and 'ibuffer-filter-disable' have the alternative
- 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.
- ---
- *** 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.
- ** 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.
- ** Compilation mode
- ---
- *** Messages from CMake are now recognized.
- +++
- *** The number of errors, warnings, and informational messages is now
- displayed in the mode line. These are updated as compilation
- proceeds.
- +++
- *** 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.
- ** 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.
- ** 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'.
- +++
- *** New customizable option 'edebug-max-depth'
- This allows to enlarge the maximum recursion depth when instrumenting
- code.
- ** 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
- +++
- *** New 'M-RET' command for opening a link at point in a new eww buffer.
- +++
- *** 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).
- ---
- *** 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.
- ** 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.
- ** Images
- +++
- *** Images are automatically scaled before displaying based on the
- 'image-scaling-factor' variable (if Emacs supports scaling the images
- in question).
- +++
- *** 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.)
- +++
- *** 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 Lisp reference manual for
- details.
- +++
- *** New setf-able function to access and set image parameters is
- provided: 'image-property'.
- ---
- *** 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.
- ** 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'
- *** Recognizes more tools by default, including pngnq-s9 and OptiPNG
- *** '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'.
- ---
- ** 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.
- ** 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.
- ---
- *** Deleting a package no longer respects 'delete-by-moving-to-trash'.
- ** Tramp
- +++
- *** The method part of remote file names is mandatory now. A valid
- remote file name starts with "/method:host:" or "/method:user@host:".
- +++
- *** The new pseudo method "-" is a marker for the default method.
- "/-::" is the shortest remote file name then.
- +++
- *** The command 'tramp-change-syntax' allows to choose an alternative
- remote file name syntax.
- +++
- *** 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.
- +++
- *** Gateway methods in Tramp have been removed. Instead, the Tramp
- manual documents how to configure ssh and PuTTY accordingly.
- +++
- *** Setting the "ENV" environment variable in
- 'tramp-remote-process-environment' enables reading of shell
- initialization files.
- ---
- *** Tramp is able now to send SIGINT to remote asynchronous processes.
- ---
- *** Variable 'tramp-completion-mode' is obsoleted.
- ---
- ** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
- ** JS mode
- ---
- *** JS mode now sets 'comment-multi-line' to t.
- ---
- *** 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'.
- ** 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.
- ---
- *** CSS mode now binds 'C-h S' to a function that will show
- 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'.
- ---
- *** CSS colors are fontified using the color they represent as the
- background. For instance, #ff0000 would be fontified with a red
- background.
- +++
- ** 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.
- +++
- *** 'vc-dir-mode' now binds 'vc-log-outgoing' to 'O'; and has various
- branch-related commands on a keymap bound to 'B'.
- ** 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.
- ---
- ** New DNS mode command 'dns-mode-ipv6-to-nibbles' to convert IPv6 addresses
- to a format suitable for reverse lookup zone files.
- ** Ispell
- +++
- *** Enchant (version 2.1.0 or later required) is now supported as a
- spell-checker. Enchant is a meta-spell-checker that uses providers
- such as Hunspell to do the actual checking. With it, users can use
- spell-checkers not directly supported by Emacs, such as Voikko, Hspell
- and AppleSpell, more easily share personal word-lists with other
- programs, and configure different spelling-checkers for different
- languages.
- ** 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'.
- ** New library 'xdg' with utilities for some XDG standards and specs.
- ** HTML
- +++
- *** A new submode of 'html-mode', 'mhtml-mode', is now the default
- mode for *.html files. This mode handles indentation,
- fontification, and commenting for embedded JavaScript and CSS.
- ** New mode 'conf-toml-mode' is a sub-mode of conf-mode, specialized
- for editing TOML files.
- ** New mode 'conf-desktop-mode' is a sub-mode of conf-unix-mode,
- specialized for editing freedesktop.org desktop entries.
- ** New minor mode 'pixel-scroll-mode' provides smooth pixel-level scrolling.
- ** New major mode 'less-css-mode' (a minor variant of 'css-mode') for
- editing Less files.
- * Incompatible Lisp Changes in Emacs 26.1
- *** password-data is now a hash-table
- so that `password-read' can use any object for the `key' argument.
- +++
- *** 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 '.'.
- +++
- ** Certain cond/pcase/cl-case forms are now compiled using a faster jump
- table implementation. This uses a new bytecode op 'switch', which isn't
- compatible with previous Emacs versions. This functionality can be disabled
- by setting 'byte-compile-cond-use-jump-table' to nil.
- ** '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.'
- ---
- ** 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.
- ** Some obsolete functions, variables, and faces have been removed:
- *** make-variable-frame-local. Variables cannot be frame-local any more.
- *** From subr.el: window-dot, set-window-dot, read-input, show-buffer,
- eval-current-buffer, string-to-int
- *** icomplete-prospects-length.
- *** All the default-FOO variables that hold the default value of the
- FOO variable. Use 'default-value' and 'setq-default' to access and
- change FOO, respectively. The exhaustive list of removed variables is:
- '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'.
- *** Many variables obsoleted in 22.1 referring to face symbols
- +++
- ** 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.
- +++
- ** 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.
- ** 'upper' and 'lower' character classes are unaffected by case table
- since they are now based purely on Unicode properties.
- +++
- ** '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.
- +++
- ** The variable 'old-style-backquotes' has been made internal and
- renamed to 'lread--old-style-backquotes'. No user code should use
- this variable.
- ** To avoid confusion caused by "smart quotes", the reader no longer
- accepts Lisp symbols which begin with the following quotation
- characters: ‘’‛“”‟〞"', unless they are escaped with backslash.
- +++
- ** 'default-file-name-coding-system' now defaults to a coding system
- that does not process CRLF. For example, it defaults to utf-8-unix
- instead of to utf-8. Before this change, Emacs would sometimes
- mishandle file names containing these control characters.
- +++
- ** 'file-attributes', 'file-symlink-p' and 'make-symbolic-link' no
- longer quietly mutate the target of a local symbolic link, so that
- Emacs can access and copy them reliably regardless of their contents.
- The following changes are involved.
- *** 'file-attributes' and 'file-symlink-p' no longer prepend "/:" to
- symbolic links whose targets begin with "/" and contain ":". For
- example, if a symbolic link "x" has a target "/y:z", (file-symlink-p
- "x") now returns "/y:z" rather than "/:/y:z".
- *** 'make-symbolic-link' no longer looks for file name handlers when
- creating a local symbolic link. For example, (make-symbolic-link
- "/y:z" "x") now creates a symlink to "/y:z" instead of failing.
- *** 'make-symbolic-link' now expands a link target with leading "~"
- only when the optional third arg is an integer, as when invoked
- interactively. For example, (make-symbolic-link "~y" "x") now creates
- a link with target the literal string "~y"; to get the old behavior,
- use (make-symbolic-link (expand-file-name "~y") "x"). To avoid this
- expansion in interactive use, you can now prefix the link target with
- "/:". For example, (make-symbolic-link "/:~y" "x" 1) now creates a
- link to literal "~y".
- +++
- ** 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.
- ---
- ** The arguments LOCKNAME and MUSTBENEW of 'write-region' are
- propagated to file name handlers now.
- ** When built against recent versions of GTK+, Emacs always uses
- gtk_window_move for moving frames and ignores the value of the
- variable 'x-gtk-use-window-move'. The variable is now obsolete.
- * Lisp Changes in Emacs 26.1
- ** New optional argument TEXT in 'make-temp-file'.
- ** New function `define-symbol-prop'.
- +++
- ** New optional argument TESTFN in 'alist-get', 'map-elt' and 'map-put'.
- ** New function 'seq-set-equal-p' to check if SEQUENCE1 and SEQUENCE2
- contain the same elements, regardless of the order.
- ** 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.
- +++
- ** Emacs now supports records for user-defined types, via the new
- functions 'make-record', 'record', and 'recordp'. Records are now
- used internally to represent cl-defstruct and defclass instances, for
- example.
- +++
- ** '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.
- ** string-(to|as|make)-(uni|multi)byte are now declared obsolete.
- ** New variable 'while-no-input-ignore-events' which allow
- setting which special events 'while-no-input' should ignore.
- It is a list of symbols.
- ** New function 'undo-amalgamate-change-group' to get rid of
- undo-boundaries between two states.
- ** 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'.
- ** 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.
- ---
- ** 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'.
- ** New function 'region-bounds' can be used in the interactive spec
- to provide region boundaries (for rectangular regions more than one)
- to an interactively callable function as a single argument instead of
- two separate arguments region-beginning and region-end.
- +++
- ** '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".
- ---
- ** Numeric comparisons and 'logb' no longer return incorrect answers
- due to internal rounding errors. For example, (< most-positive-fixnum
- (+ 1.0 most-positive-fixnum)) now correctly returns t on 64-bit hosts.
- ---
- ** The functions 'ffloor', 'fceiling', 'ftruncate' and 'fround' now
- accept only floating-point arguments, as per their documentation.
- Formerly, they quietly accepted integer arguments and sometimes
- returned nonsensical answers, e.g., (< N (ffloor N)) could return t.
- ---
- ** On hosts like GNU/Linux x86-64 where a 'long double' fraction
- contains at least EMACS_INT_WIDTH - 3 bits, 'format' no longer returns
- incorrect answers due to internal rounding errors when formatting
- Emacs integers with %e, %f, or %g conversions. For example, on these
- hosts (eql N (string-to-number (format "%.0f" N))) now returns t for
- all Emacs integers N.
- ---
- ** Calls that accept floating-point integers (for use on hosts with
- limited integer range) now signal an error if arguments are not
- integral. For example (decode-char 'ascii 0.5) now signals an error.
- +++
- ** 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'.
- +++
- ** 'make-hash-table' now defaults to a rehash threshold of 0.8125
- instead of 0.8, to avoid rounding glitches.
- +++
- ** New function 'add-variable-watcher' can be used to call a function
- when a symbol's value is changed. This is used to implement the new
- debugger command 'debug-on-variable-change'.
- +++
- ** 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'.
- +++
- ** 'format-time-string' now formats "%q" to the calendar quarter.
- ** New built-in function 'mapcan' which avoids unnecessary consing (and garbage
- collection).
- +++
- ** 'car' and 'cdr' compositions 'cXXXr' and 'cXXXXr' are now part of Elisp.
- ---
- ** 'if-let*', 'when-let*', and 'and-let*' are new in subr-x.el.
- The incumbent 'if-let' and 'when-let' are now aliases.
- ** Low-level list functions like 'length' and 'member' now do a better
- job of signaling list cycles instead of looping indefinitely.
- +++
- ** The new functions 'make-nearby-temp-file' and 'temporary-file-directory'
- can be used for creation of temporary files of remote or mounted directories.
- +++
- ** On GNU platforms when operating on a local file, 'file-attributes'
- no longer suffers from a race when called while another process is
- altering the filesystem. On non-GNU platforms 'file-attributes'
- attempts to detect the race, and returns nil if it does so.
- +++
- ** The new function 'file-local-name' can be used to specify arguments
- of remote processes.
- +++
- ** The new functions 'file-name-quote', 'file-name-unquote' and
- 'file-name-quoted-p' can be used to quote / unquote file names with
- the prefix "/:".
- +++
- ** 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.
- +++
- *** New error type 'user-search-failed' like 'search-failed' but
- avoids debugger like 'user-error'.
- +++
- ** The function 'line-number-at-pos' now takes a second optional
- argument 'absolute'. If this parameter is nil, the default, this
- function keeps on returning the line number taking potential narrowing
- into account. If this parameter is non-nil, the function ignores
- narrowing and returns the absolute line number.
- ** Changes in Frame- and Window- Handling
- +++
- *** Resizing a frame no longer runs 'window-configuration-change-hook'.
- 'window-size-change-functions' should be used instead.
- +++
- *** The new function 'frame-size-changed-p' can tell whether a frame has
- been resized since the last time 'window-size-change-functions' has been
- run.
- +++
- *** The function 'frame-geometry' now also returns the width of a
- frame's outer border.
- +++
- *** New frame parameters and changed semantics for older ones
- +++
- **** 'z-group' positions a frame above or below all others.
- +++
- **** 'min-width' and 'min-height' specify the absolute minimum size of a
- frame.
- +++
- **** 'parent-frame' makes a frame the child frame of another Emacs
- frame. The section "Child Frames" in the Elisp manual describes the
- intrinsics of that relationship.
- +++
- **** 'delete-before' triggers deletion of one frame before that of
- another.
- +++
- **** 'mouse-wheel-frame' specifies another frame whose windows shall be
- scrolled instead.
- +++
- **** 'no-other-frame' has 'next-frame' and 'previous-frame' skip this
- frame.
- +++
- **** 'skip-taskbar' removes a frame's icon from the taskbar and has
- Alt-<TAB> skip this frame.
- +++
- **** 'no-focus-on-map' avoids that a frame gets input focus when mapped.
- +++
- **** 'no-accept-focus' means that a frame does not want to get input
- focus via the mouse.
- +++
- **** 'undecorated' removes the window manager decorations from a frame.
- +++
- **** 'override-redirect' tells the window manager to disregard this
- frame.
- +++
- **** 'width' and 'height' allow to specify pixel values and ratios now.
- +++
- **** 'left' and 'top' allow to specify ratios now.
- +++
- **** 'keep-ratio' preserves size and position of child frames when their
- parent frame is resized.
- +++
- **** 'no-special-glyphs' suppresses display of truncation and
- continuation glyphs in a frame.
- +++
- **** 'auto-hide-function' and 'minibuffer-exit' handle auto hiding of
- frames and exiting from minibuffer individually.
- +++
- **** 'fit-frame-to-buffer-margins' and 'fit-frame-to-buffer-sizes'
- handle fitting a frame to its buffer individually.
- +++
- **** 'drag-internal-border', 'drag-with-header-line',
- 'drag-with-mode-line', 'snap-width', 'top-visible' and 'bottom-visible'
- allow to drag and resize frames with the mouse.
- *** The new function 'frame-list-z-order' returns a list of all frames
- in Z (stacking) order.
- +++
- *** The function 'x-focus-frame' optionally tries to not activate its
- frame.
- +++
- *** The variable 'focus-follows-mouse' has a third meaningful value
- 'auto-raise' to indicate that the window manager automatically raises a
- frame when the mouse pointer enters it.
- +++
- *** The new function 'frame-restack' puts a frame above or below
- another on the display.
- +++
- *** The new face 'internal-border' specifies the background of a frame's
- internal border.
- +++
- *** The NORECORD argument of 'select-window' now has a meaningful value
- 'mark-for-redisplay' which is like any other non-nil value but marks
- WINDOW for redisplay.
- +++
- *** 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 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))))
- +++
- *** New window parameter 'no-delete-other-windows' prevents that
- its window gets deleted by 'delete-other-windows'.
- +++
- *** New window parameters 'mode-line-format' and 'header-line-format'
- allow to override the buffer-local formats for this window.
- +++
- *** New command 'window-swap-states' swaps the states of two live
- windows.
- +++
- *** 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.
- +++
- *** The new function 'window-lines-pixel-dimensions' returns the pixel
- dimensions of a window's text lines.
- +++
- *** The new function 'window-largest-empty-rectangle' returns the
- dimensions of the largest rectangular area not occupying any text in a
- window's body.
- +++
- *** The semantics of 'mouse-autoselect-window' has changed slightly.
- For details see the section "Mouse Window Auto-selection" in the Elisp
- manual.
- ---
- ** 'tcl-auto-fill-mode' is now declared obsolete. Its functionality
- can be replicated simply by setting 'comment-auto-fill-only-comments'.
- ** New pcase pattern 'rx' to match against a rx-style regular
- expression.
- * 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.
- ** 'set-mouse-position' and 'set-mouse-absolute-pixel-position' work
- on macOS.
- ** Emacs can now be run as a GUI application from the command line on
- macOS.
- ** 'ns-appearance' and 'ns-transparent-titlebar' change the appearance
- of frame decorations on macOS 10.9+.
- ** 'ns-use-thin-smoothing' enables thin font smoothing on macOS 10.8+.
- ----------------------------------------------------------------------
- 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: utf-8
- mode: outline
- paragraph-separate: "[ ]*$"
- end:
|