This fixes bug #37769.
* lisp/subr.el (global-set-key): Provide a non-nil DONT-DOWNCASE argument to
read-key-sequence.
* etc/NEWS: Add an entry for this change.
* lisp/subr.el (read-password--hide-password): Factor out (bug#17127).
(read-passwd): Use it in post-command-hook instead of
after-change-functions to ensure that we hide the password no
matter what inserts text.
* lisp/epg-config.el (epg-find-configuration): Remove the -unknown
hack, because it led to further problems later when comparing
versions.
* lisp/subr.el (version-regexp-alist): Rate -unknown versions the
same as -alpha releases (bug#37556).
* doc/lispref/variables.texi (Creating Buffer-Local): Document the
new syntax for setq-local.
* lisp/subr.el (setq-local): Ensure that there's an even number of
variable/value pairs, and expand the doc string by taking some
text from `setq'.
* lisp/subr.el (ctl-x-6-map, ctl-x-6-prefix): Move here from tab-bar.el
to make it available to other modes like dired for 'C-x 6 d'.
* lisp/dired.el (dired-other-tab): New command bound to 'C-x 6 d'.
* lisp/tab-bar.el: Bind 'C-x 6 o' to tab-next.
* doc/emacs/frames.texi (Tab Bars): Describe C-x 6 prefix key bindings.
* doc/lispref/text.texi (Checksum/Hash):
* src/fns.c (Fmd5, Fsecure_hash):
* lisp/subr.el (sha1): Doc fix to recommend against SHA-1 and MD5 for
security-related applications, since they are not collision
resistant. (Bug#37420)
Problem reported by Glenn Morris (Bug#583#56).
* lisp/startup.el (startup--xdg-config-default): New constant.
(startup--xdg-config-home-emacs): New var.
(startup--xdg-or-homedot): New function.
(normal-top-level): Use it to set user-emacs-directory early on.
(command-line): Also use it to determine the startup init directory.
* lisp/subr.el (user-emacs-directory): Just initialize to nil.
That way, when Emacs starts in a fresh home directory,
it prefers the new (XDG) convention rather than the old one.
* lisp/files.el (locate-user-emacs-file): Make the parent
directories of user-emacs-directory if needed. This is useful
if user-emacs-directory is "~/.config/emacs" and "~/.config"
does not yet exist.
* lisp/startup.el (command-line):
* lisp/subr.el (user-emacs-directory):
Prefer XDG_CONFIG_HOME to ~/.emacs.d if neither exists.
Fit in better with the XDG conventions.
Something like this was suggested in 2008 (Bug#583)
and the XDG conventions seem to have settled down by now.
* doc/emacs/custom.texi (Init File, Init Syntax, Find Init):
* doc/lispref/files.texi (Standard File Names):
* doc/lispref/os.texi (Init File):
* doc/misc/url.texi (Customization):
* etc/NEWS:
Adjust accordingly.
* lisp/startup.el (startup--load-user-init-file):
If init-file-name is nil, do not load from it; instead
just use the alt-file.
(find-init-path): Remove; no longer used.
(command-line): Don't check twice for XDG.
Look at XDG_CONFIG_HOME instead of assuming it's ~/.config.
Prefer XDG configuration if it exists; the user can disable
this by setting XDG_CONFIG_HOME to some other place.
* lisp/subr.el (user-emacs-directory):
Prefer XDG configuration if it exists.
* lisp/emacs-lisp/cl.el: Move from here...
* lisp/obsolete/cl.el: ...to here.
* lisp/subr.el (do-after-load-evaluation): Use "deprecated" in the
message when loading packages from lisp/obsolete.
* lisp/net/tramp.el (tramp-user-error):
* lisp/subr.el (user-error):
Say that user errors are sometimes called pilot errors.
* lisp/subr.el (error, user-error):
Reorder wording to discuss mechanism first, then formatting advice,
rather than going back and forth between the two topics.
Tighten up the wording a bit.
`replace-regexp-in-string' omits the first START characters of the
input string in its return value. This is a clear bug, but fixing it
probably causes more trouble; document the behaviour instead (bug#36372).
* doc/lispref/searching.texi (Search and Replace)
* lisp/subr.el (replace-regexp-in-string):
Document current behaviour.
* lisp/subr.el (do-after-load-evaluation): Heed
`byte-compile-warning-enabled-p', if defined. This allows
suppressing the warning about packages being obsolete.
* lisp/subr.el (progress-reporter-update)
(progress-reporter-force-update, progress-reporter-do-update): Accept
new optional argument, SUFFIX.
* doc/lispref/display.texi (Progress): Document it.
* etc/NEWS: Announce it.
* lisp/tar-mode.el (tar-untar-buffer): Use a progress reporter instead
of calling message. Suppress message from write-region. Let-bind
write-region-inhibit-fsync to t.
Make it possible to control the relative ordering of functions on hooks by
specifying `depth` in the same was as was possible with `add-function`.
* lisp/electric.el (electric--sort-post-self-insertion-hook):
Delete function.
(electric-indent-mode, electric-layout-mode, electric-quote-mode):
* lisp/elec-pair.el (electric-pair-mode): Use new `depth` arg instead of
electric--sort-post-self-insertion-hook.
* lisp/emacs-lisp/syntax.el (syntax-propertize, syntax-ppss):
Use new `depth` arg to make sure noone accidentally gets added
after syntax-ppss-flush-cache.
* doc/lispref/modes.texi (Setting Hooks): Document new `depth` arg.
* test/lisp/subr-tests.el (subr-tests-add-hook-depth): New test.
Restore lines saying "Maintainer: emacs-devel@gnu.org" when there is
no special maintainer for a file. Although this wasn't documented
it was common practice and removing the lines didn't have consensus.
* doc/lispref/commands.texi (Input Events): Specify that events are
non-nil and remove vestiges of bug#10190.
* doc/lispref/os.texi (Recording Input): Document optional argument
of recent-keys.
* lisp/subr.el (eventp): Check that the car of conses is non-nil.
* etc/NEWS: Announce it as an incompatible change.
* src/keyboard.c (Frecent_keys): Clarify that returned "events" are
not real events.
* lisp/subr.el (alist-get):
Rephrase the initial text to clarify the meaning of the TESTFN argument.
It's an equality predicate, not a look-up function (Bug#35206).
(cherry picked from commit c81465580f)
* lisp/subr.el (alist-get):
Rephrase the initial text to clarify the meaning of the TESTFN argument.
It's an equality predicate, not a look-up function (Bug#35206).
* lisp/emacs-lisp/bytecomp.el (byte-compile-setq-default): Delete.
(byte-compile-set-default): Inline the part that it used.
* lisp/emacs-lisp/edebug.el (setq-default): Remove the debug spec.
* src/data.c (Fsetq_default): Delete.
(syms_of_data): Don't register.
* lisp/subr.el (process-file-shell-command):
Use `with-connection-local-variables'. Do not set "/bin/sh" for
remote buffers, trust settings of `shell-file-name'.
* lisp/net/tramp-adb.el (tramp-methods) <adb>:
* lisp/net/tramp-smb.el (tramp-methods) <smb>:
Remove `tramp-remote-shell' and `tramp-remote-shell-args'.
* lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch)
(tramp-maybe-open-connection): Use proper read syntax for function
names.
* lisp/net/tramp.el (tramp-handle-shell-command): Do not use shell
file names from `tramp-methods'.
Respect `async-shell-command-buffer'. (Bug#24394, Bug#34172)
Use `start-file-process-shell-command' and `process-file-shell-command'.
* test/lisp/net/tramp-tests.el (tramp-test32-shell-command):
Let it run partly for tramp-adb.