aboutsummaryrefslogtreecommitdiffstats
path: root/etc (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | ; Cosmetic changes to etc/NEWSMichael Albinus2018-12-221-9/+9
| | | |
* | | | * lisp/windmove.el (windmove-delete-in-direction): Change prefix arg C-uJuri Linkov2018-12-211-2/+3
| | | | | | | | | | | | | | | | | | | | to kill the buffer. Add prefix arg M-0 to delete the selected window. (Bug#32790)
* | | | * lisp/window.el (switch-to-buffer-obey-display-actions): New defcustom.Juri Linkov2018-12-211-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (switch-to-buffer): Use it. (Bug#32790) (switch-to-buffer-preserve-window-point): Mention it in docstring. * lisp/windmove.el (windmove-display-in-direction): Mention it in docstring. * doc/lispref/windows.texi (Switching Buffers): Document switch-to-buffer-obey-display-actions.
* | | | * lisp/emacs-lisp/map.el: Add support for plistsStefan Monnier2018-12-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (map--plist-p, map--plist-delete): New functions. (map-elt, map-delete, map-length, map-into, map-put!, map-insert) (map-apply, map-do): Handle the plist case. * test/lisp/emacs-lisp/map-tests.el (with-maps-do): Add sample plist. (test-map-put!): The behavior of map-put! is not the same for plists as for alists.
* | | | Syntactic fontification of diff hunks (bug#33567)Juri Linkov2018-12-181-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/vc/diff-mode.el (diff-font-lock-syntax): New defcustom. (diff-default-directory): New buffer-local variable. (diff-indicator-removed, diff-indicator-added) (diff-indicator-changed): Set foreground to distinctive colors. (diff-context): Remove colors to make room for syntax highlighting. (diff-font-lock-keywords): Add diff--font-lock-syntax. (diff--font-lock-cleanup): Remove diff-mode syntax overlays. (diff--font-lock-syntax, diff--font-lock-syntax--refresh) (diff-syntax-fontify-revisions, diff-syntax-fontify-hunk) (diff-syntax-fontify-props): New functions. * lisp/vc/diff.el (diff-no-select): Set diff-default-directory to default-directory. * doc/emacs/files.texi (Diff Mode): Document diff-font-lock-syntax.
* | | | * lisp/emacs-lisp/map.el: Avoid special casing lists.Stefan Monnier2018-12-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (map-not-inplace, map-inplace): New errors. (map-insert): New generic function. (map-put!): Signal map-not-inplace rather than a generic 'error'. (map-elt): Use map-not-inplace and map-insert to avoid hardcoding a special case for lists. * test/lisp/emacs-lisp/map-tests.el (test-map-put!): Rename from test-map-put. Also test the errors signaled.
* | | | New function flatten-treeAlex Branham2018-12-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Basil L. Contovounesios <contovob@tcd.ie> * doc/lispref/lists.texi: Document `flatten-tree'. * lisp/progmodes/js.el (js--maybe-join): * lisp/printing.el (pr-switches): * lisp/lpr.el (lpr-print-region): * lisp/gnus/nnimap.el (nnimap-find-wanted-parts): * lisp/gnus/message.el (message-talkative-question): * lisp/gnus/gnus-sum.el (gnus-remove-thread) (gnus-thread-highest-number, gnus-thread-latest-date): * lisp/eshell/esh-util.el (eshell-flatten-and-stringify): * lisp/eshell/esh-opt.el (eshell-eval-using-options): * lisp/eshell/esh-ext.el (eshell-external-command): * lisp/eshell/em-xtra.el (eshell/expr): * lisp/eshell/em-unix.el (eshell/rm, eshell-mvcpln-template) (eshell/cat, eshell/make, eshell-poor-mans-grep, eshell-grep) (eshell/du, eshell/time, eshell/diff, eshell/locate): * lisp/eshell/em-tramp.el (eshell/su, eshell/sudo): * lisp/eshell/em-term.el (eshell-exec-visual): * lisp/eshell/em-dirs.el (eshell-dirs-substitute-cd, eshell/cd): * lisp/eshell/em-basic.el (eshell/printnl): Use new flatten-tree. * lisp/progmodes/js.el (js--flatten-list): * lisp/lpr.el (lpr-flatten-list): * lisp/gnus/message.el (message-flatten-list): * lisp/eshell/esh-util.el (eshell-flatten-list): Obsolete in favor of Emacs-wide `flatten-tree'. * lisp/subr.el (flatten-list): Alias to `flatten-tree' for discoverability. * lisp/subr.el (flatten-tree): New defun. * test/lisp/subr-tests.el (subr-tests-flatten-tree): New test.
* | | | Add Tramp sudoedit methodMichael Albinus2018-12-161-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/tramp.texi (Quick Start Guide): New section "Using sudoedit". (External methods) <sudoedit>: Describe. * lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist): * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist): * lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist): * lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist) * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add handler. * lisp/net/tramp-sh.el (tramp-sh-handle-set-file-uid-gid): Rename from `tramp-sh-handle-set-file-uid-gid'. Handle only remote file names. * lisp/net/tramp-sudoedit.el: New file. * lisp/net/tramp.el (tramp-file-name-for-operation): Handle also `tramp-set-file-uid-gid'. (tramp-set-file-uid-gid): New defun. (tramp-get-local-uid, tramp-get-local-gid): Cache result. * test/lisp/net/tramp-tests.el (tramp--test-sudoedit-p): New defun. (tramp-test20-file-modes, tramp-test22-file-times) (tramp--test-sudoedit-p): Use it.
* | | | * lisp/emacs-lisp/map.el: Make the functions genericStefan Monnier2018-12-111-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make them document their delegation relationship, to clarify when a method is needed. (map--dispatch): Give more info in the error message. (map-elt): Make it generic and deprecate the 'testfn' arg. (map-put): Make it obsolete. (map-length): Make it work on hash-tables. (map-apply): Define it in terms of map-do. (map-do, map-into): Use cl-generic dispatch instead of map--dispatch. (map-empty-p): Define it in terms of map-length. (map-contains-key): Deprecate 'testfn'. Make it return a boolean, so it can return non-nil even if 'key' is nil. Improve implementation to avoid constructing an intermediate list of all keys. (map-merge-with): Use 'eql' rather than `eq'. (map-put!): Rename from map--put and make it generic, to replace map-put. (map--apply-alist, map--apply-hash-table, map--apply-array): Turn them into methods of map-apply. (map--do-alist, map--do-array): Turn them into methods of map-do. (map--into-hash-table): Turn it into a method of map-into.
* | | | * lisp/vc/vc.el (vc-root-version-diff): New command (bug#33650).Juri Linkov2018-12-111-0/+4
| |/ / |/| | | | | | | | (vc-root-diff): Call it interactively on a prefix argument.
* | | Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacsEli Zaretskii2018-12-081-0/+6
|\ \ \
| * | | New buffer display action alist entry 'window-min-height' (Bug#32825)Martin Rudalics2018-12-081-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/window.el (display-buffer-below-selected): Handle 'window-min-height' action alist entry (Bug#32825). * doc/lispref/windows.texi (Buffer Display Action Functions) (Buffer Display Action Alists): Add documentation for 'window-min-height' action alist entries. * etc/NEWS: Mention 'window-min-height' action alist entry.
* | | | Document that Eshell follows symlinks in history file namesEli Zaretskii2018-12-081-2/+9
|/ / / | | | | | | | | | | | | * etc/NEWS: Mention that Eshell now follows symlinks in history file names.
* | | Mention EMACS_SOCKET_NAME, not XDG_RUNTIME_DIR.Paul Eggert2018-12-061-2/+2
| | |
* | | Mention unsetting XDG_RUNTIME_DIR in doc.Paul Eggert2018-12-061-0/+2
| | |
* | | Support IBM038 (a.k.a. "EBCDIC-INT") encodingEli Zaretskii2018-12-041-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/international/mule-conf.el (ibm038): New charset. (ebcdic-int, cp038): Alias charsets of ibm038. * lisp/language/english.el (ibm038): New coding-system. (ebcdic-int, cp038): Alias coding-systems of ibm038. (Bug#33612) * etc/NEWS: Announce the new coding system ibm038.
* | | * lisp/isearch.el (isearch-yank-on-move): New defcustomJuri Linkov2018-12-041-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with shift-move related options extracted from `search-exit-option'. (isearch-pre-command-hook): Rename search-exit-option to isearch-yank-on-move in shift-move related places. (isearch-post-command-hook): Check for isearch-pre-move-point instead of search-exit-option. (Bug#15839) * doc/emacs/search.texi (Not Exiting Isearch): Rename search-exit-option to isearch-yank-on-move. * lisp/menu-bar.el (menu-bar-i-search-menu): Add more isearch commands.
* | | * lisp/isearch.el (isearch-allow-scroll): New option `unlimited'.Juri Linkov2018-12-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | (isearch-pre-command-hook): Call isearch-pre-scroll-point unless isearch-allow-scroll is 'unlimited'. (isearch-post-command-hook): Use `when' instead of `cond'. Call isearch-lazy-highlight-new-loop when isearch-allow-scroll is 'unlimited'. (Bug#15839)
* | | Merge from origin/emacs-26Glenn Morris2018-12-026-5/+10
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | 317b354 ; Add notes about cross-compiling macOS versions 4b176eb Fix macOS run-time feature check c03574b * etc/NEWS-*: Fix capitalization of "Emacs" # Conflicts: # etc/NEWS
| * | ; Add notes about cross-compiling macOS versionsAlan Third2018-12-011-0/+5
| | |
| * | * etc/NEWS-*: Fix capitalization of "Emacs"Stefan Monnier2018-12-015-5/+5
| | |
* | | emacsclient: prefer XDG_RUNTIME_DIR (Bug#33367)Paul Eggert2018-12-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib-src/emacsclient.c: Disable -Wformat-truncation=2, to avoid false alarms about the new snprintf calls. (local_sockname): New function. (set_local_socket): Use it. Prefer XDG_RUNTIME_DIR (if set) for location of socket directory. Avoid unnecessary memory allocation by using snprintf to destination. * lisp/server.el (server-socket-dir): Prefer XDG_RUNTIME_DIR if set.
* | | * lisp/windmove.el: Directional window deletion (bug#32790)Juri Linkov2018-11-251-2/+10
| | | | | | | | | | | | | | | | | | | | | * lisp/windmove.el (windmove-delete-in-direction) (windmove-delete-left, windmove-delete-up) (windmove-delete-right, windmove-delete-down) (windmove-delete-default-keybindings): New functions.
* | | Merge from origin/emacs-26Glenn Morris2018-11-241-4/+6
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 56e3e4f Improve indexing in the ELisp manual 7a4992a More Symbola-related extensions for default fontset 4ae0a75 Better support for display of U+1F900..U+1F9FF block 8f0c788 Improve documentation of 'edit-abbrevs-mode' 3c643e7 ; NEWS tweak 477414a Improve documentation of 'dired-do-compress' 9c09b1d ; * etc/NES: Minor change in the description of Dired's 'Z'. 52715e3 Improve doc string and display of 'describe-character' 93242b1 * etc/NEWS: Clarify what 'Z' does in Dired. (Bug#33450) 0d59ae3 Update the docs of object internals Conflicts: etc/NEWS
| * | ; NEWS tweakGlenn Morris2018-11-221-3/+3
| | |
| * | ; * etc/NES: Minor change in the description of Dired's 'Z'.Eli Zaretskii2018-11-221-5/+5
| | |
| * | * etc/NEWS: Clarify what 'Z' does in Dired. (Bug#33450)Eli Zaretskii2018-11-211-1/+3
| | |
* | | Merge branch 'master' of git.sv.gnu.org:/srv/git/emacsMichael Albinus2018-11-241-0/+3
|\ \ \
| * | | Add tool-bar and menu-bar menu for Isearch (Bug#32990)Charles A. Roelli2018-11-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS (Search and Replace): Mention this change. * lisp/isearch.el: Declare the new, non-autoloaded function 'tmm-menubar-keymap'. (isearch-tmm-menubar): New function. (isearch-menu-bar-commands): New variable. (isearch-menu-bar-yank-map, isearch-menu-bar-map): New variables. (isearch-mode-map): Define a menu-bar search menu and remap 'tmm-menubar' bindings to point to 'isearch-tmm-menubar'. (isearch-tool-bar-old-map): New variable. (isearch-tool-bar-image): New function. (isearch-tool-bar-map): New variable. (minor-mode-map-alist): Add an entry for Isearch so that 'isearch-menu-bar-map' shows during search. (isearch-mode, isearch-done): Save and restore possible buffer-local 'tool-bar-map' using 'isearch-tool-bar-old-map'. (iseacrh-mouse-commands): New variable. (isearch-mouse-leave-buffer): Allow commands in isearch-mouse-commands. (with-isearch-suspended): Only push changed states of Isearch after running the body argument of this macro. (isearch-pre-command-hook): Additionally allow bindings in 'isearch-tool-bar-map' to pass through, as well as commands in isearch-menu-bar-commands. (isearch-post-command-hook): Call 'force-mode-line-update' at its end to make sure the menu- and tool-bars are up-to-date. * lisp/tmm.el (tmm-menubar-keymap): New function factored out from 'tmm-menubar'. (tmm-menubar): Use 'tmm-menubar-keymap'. (tmm-prompt): New optional argument 'no-execute'.
* | | | Add Tramp rclone methodMichael Albinus2018-11-241-0/+4
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/tramp.texi (Top): Remove "History". (History): Remove node. (Quick Start Guide): New section "Using rclone". (External methods) <rclone>: Describe. * etc/NEWS: Mention Tramp rclone method. * lisp/net/tramp-rclone.el: New file.
* | | Add Isearch commands for going to absolute occurrence of matches (bug#29321)Juri Linkov2018-11-231-0/+8
| | | | | | | | | | | | | | | | | | * lisp/isearch.el (isearch-mode-map): Bind 'M-s M-<' to 'isearch-beginning-of-buffer' and 'isearch-end-of-buffer' to 'M-s M->'. (isearch-beginning-of-buffer, isearch-end-of-buffer): New commands.
* | | Add prefix arg to isearch-forward-symbol-at-point (bug#29321)Juri Linkov2018-11-211-0/+2
| | | | | | | | | | | | * lisp/isearch.el (isearch-forward-symbol-at-point): Add optional arg.
* | | Let Tramp sudo sessions expire after a timeoutMichael Albinus2018-11-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/tramp.texi (Inline methods) <sudo, doas>: Both methods expire the underlying session per default. (Predefined connection information): Explain "session-timeout". * etc/NEWS: Mention Tramp session expiration. * lisp/net/tramp-sh.el (tramp-methods) <sudo, doas>: Add `tramp-session-timeout'. (tramp-timeout-session): New defun. (tramp-maybe-open-connection): Handle session timeout. * lisp/net/tramp.el (tramp-methods): Adapt docstring. (tramp-equal-remote): Extend.
* | | Add prefix arg to isearch-repeat-forward/backward (bug#14563, bug#29321)Juri Linkov2018-11-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/isearch.el (isearch-repeat): Add optional arg COUNT. Add a while-loop that calls `isearch-search' COUNT times. (isearch-repeat-forward, isearch-repeat-backward): Add optional prefix ARG passed down to `isearch-repeat'. Handle reversed directions.
* | | Merge from origin/emacs-26Glenn Morris2018-11-201-3/+5
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 070e82b ; * src/window.c (window_scroll): Improve commentary. 60457d7 Improve documentation of the window tree ea1a014 Fix window scrolling on TTY frames when there's no mode line df7ed10 Fix decoding XML files encoded in ISO-8859 7851ae8 (tag: emacs-26.1.90) ; ChangeLog.3 update 1958808 * etc/AUTHORS: Update. 7252507 Fix description of some window hooks 88762b4 Run 'window--adjust-process-windows' when frame size changes ... d6542ea Avoid errors in zone.el when there's overlay at EOB
| * | * etc/AUTHORS: Update.Nicolas Petton2018-11-191-3/+5
| | |
* | | * src/cmds.c (Fself_insert_command): Get last-command-event via (new) arg.Stefan Monnier2018-11-171-0/+3
| | |
* | | Merge from origin/emacs-26Glenn Morris2018-11-161-0/+10
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | 936a8f3 (origin/emacs-26) Document Emacs 26 behavior of Dired's 'Z' o... 99f99a1 ; Minor editing change in windows.texi 13bb665 Fix a typo in the Emacs manual # Conflicts: # etc/NEWS
| * | Document Emacs 26 behavior of Dired's 'Z' on directoriesEli Zaretskii2018-11-161-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | * doc/emacs/dired.texi (Operating on Files): Document behavior of 'Z' on directories. * etc/NEWS: Belatedly announce the new behavior of Dired's 'Z' on directory names and on .tar.gz archives.
* | | Merge from origin/emacs-26Glenn Morris2018-11-161-11/+13
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | edcd6b7 Small documentation correction. 168a8c2 * src/coding.c (Fcheck_coding_systems_region): Doc fix. (Bug... 3287a7c Fix Bug#33364 acee0a8 ; Cosmetic changes in etc/NEWS a6ef167 * test/README: Explain $REMOTE_TEMPORARY_FILE_DIRECTORY. # Conflicts: # etc/NEWS
| * | ; Cosmetic changes in etc/NEWSMichael Albinus2018-11-131-11/+13
| | |
* | | ; Further cosmetic changes in etc/NEWSMichael Albinus2018-11-161-36/+42
| | |
* | | * lisp/windmove.el: Directional window display (bug#32790)Juri Linkov2018-11-161-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/windmove.el (windmove-display-no-select): New defcustom. (windmove-display-in-direction, windmove-display-left) (windmove-display-up, windmove-display-right) (windmove-display-down, windmove-display-same-window) (windmove-display-default-keybindings): New functions.
* | | * lisp/windmove.el: Support more prefix args (bug#32790)Juri Linkov2018-11-161-0/+1
| | | | | | | | | | | | | | | | | | * lisp/windmove.el (windmove-left, windmove-up, windmove-right) (windmove-down): Use prefix-numeric-value to support more prefix args like 'C-u' and 'M--'. Doc fix.
* | | Isearch hit count. (Bug#29321)Juri Linkov2018-11-151-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/isearch.el (isearch-lazy-count): New defcustom. (lazy-count): New defgroup. (lazy-count-prefix-format, lazy-count-suffix-format): New defcustom. (isearch-lazy-count-format): New function. (isearch-message-prefix, isearch-message-suffix): Use it. (isearch-lazy-highlight-window-start-changed) (isearch-lazy-highlight-window-end-changed) (isearch-lazy-count-current, isearch-lazy-count-total) (isearch-lazy-count-hash): New variables. (isearch-lazy-highlight-new-loop): Reset isearch-lazy-count-total and update isearch-lazy-count-current for isearch-message. (isearch-lazy-highlight-update): Run full-buffer loop for isearch-lazy-count. (isearch-lazy-highlight-buffer-update): Count isearch-lazy-count-total. Set isearch-lazy-count-current at the end.
* | | Minor copyedits in documentation of HOME handlingEli Zaretskii2018-11-141-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS: Reword the recent entry regarding the change in how relative file names are interpreted in $HOME. * doc/emacs/cmdargs.texi (General Variables): Advise against using relative directory names in $HOME.
* | | Document recent change to HOME handlingPaul Eggert2018-11-141-0/+4
| | | | | | | | | | | | | | | | | | | | | * doc/emacs/cmdargs.texi (General Variables): * doc/emacs/custom.texi (Find Init): * doc/lispref/files.texi (File Name Expansion): * etc/NEWS: Document behavior when HOME is a relative file name.
* | | New option vc-find-revision-no-save to not write revision to fileJuri Linkov2018-11-141-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/vc/vc.el (vc-find-revision-no-save): New defcustom (bug#33319). (vc-find-revision): Depending on vc-find-revision-no-save, call either vc-find-revision-no-save or vc-find-revision-save. (vc-find-revision-save): Rename from vc-find-revision. (vc-find-revision-no-save): New function. * lisp/vc/diff-mode.el (diff-find-source-location): Let-bind vc-find-revision-no-save to t.
* | | Support VC revisions in diff-goto-source (bug#33319)Juri Linkov2018-11-141-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/vc/diff-mode.el (diff-vc-revisions): New defvar. (diff-find-source-location): Call vc-find-revision for non-nil values of 'other', diff-vc-backend, diff-vc-revisions. * lisp/vc/vc.el (vc-diff-internal): Set buffer-local diff-vc-revisions to the list of used revisions. * doc/emacs/files.texi (Diff Mode): Update diff-goto-source for VC-related prefix argument.
* | | Root emacsclient no longer connects to non-root socketsGlenn Morris2018-11-131-1/+7
| | | | | | | | | | | | | | | | | | * lib-src/emacsclient.c (set_local_socket): Don't ignore socket ownership when run by root. Ref: http://lists.gnu.org/r/emacs-devel/2018-11/msg00019.html