aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorPo Lu2023-03-28 09:41:22 +0800
committerPo Lu2023-03-28 09:41:22 +0800
commit64206ee3af9b59da9591aae400439bdea2cda09f (patch)
tree88c333f058f0afac551daca0d8cf2f2e9d8012ea /lisp
parent05f3f9c1c09c3e7a4d9c1d9ac16a34742a4124c1 (diff)
parent66b4394461589d0db8690b7971000f687bd3ad57 (diff)
downloademacs-64206ee3af9b59da9591aae400439bdea2cda09f.tar.gz
emacs-64206ee3af9b59da9591aae400439bdea2cda09f.zip
Merge remote-tracking branch 'origin/master' into feature/android
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/comp.el5
-rw-r--r--lisp/emacs-lisp/easy-mmode.el28
-rw-r--r--lisp/emacs-lisp/gv.el2
-rw-r--r--lisp/help-fns.el2
-rw-r--r--lisp/help.el7
-rw-r--r--lisp/net/eww.el20
-rw-r--r--lisp/net/tramp-cmds.el10
-rw-r--r--lisp/net/tramp-crypt.el12
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/net/tramp-sh.el10
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/net/tramp.el10
-rw-r--r--lisp/org/org-version.el4
-rw-r--r--lisp/org/org.el2
-rw-r--r--lisp/org/ox-texinfo.el11
-rw-r--r--lisp/progmodes/python.el9
-rw-r--r--lisp/progmodes/ruby-ts-mode.el48
-rw-r--r--lisp/savehist.el5
-rw-r--r--lisp/subr.el6
-rw-r--r--lisp/transient.el17
-rw-r--r--lisp/treesit.el16
-rw-r--r--lisp/window.el16
22 files changed, 145 insertions, 99 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 7d9832f588f..3c57ca79b12 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -186,8 +186,9 @@ and above."
186 :type '(repeat string) 186 :type '(repeat string)
187 :version "28.1") 187 :version "28.1")
188 188
189(defcustom native-comp-driver-options (when (eq system-type 'darwin) 189(defcustom native-comp-driver-options
190 '("-Wl,-w")) 190 (cond ((eq system-type 'darwin) '("-Wl,-w"))
191 ((eq system-type 'cygwin) '("-Wl,-dynamicbase")))
191 "Options passed verbatim to the native compiler's back-end driver. 192 "Options passed verbatim to the native compiler's back-end driver.
192Note that not all options are meaningful; typically only the options 193Note that not all options are meaningful; typically only the options
193affecting the assembler and linker are likely to be useful. 194affecting the assembler and linker are likely to be useful.
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 77f4b26d9bb..84e131147cd 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -452,15 +452,23 @@ No problems result if this variable is not bound.
452TURN-ON is a function that will be called with no args in every buffer 452TURN-ON is a function that will be called with no args in every buffer
453and that should try to turn MODE on if applicable for that buffer. 453and that should try to turn MODE on if applicable for that buffer.
454 454
455Each of KEY VALUE is a pair of CL-style keyword arguments. :predicate 455Each of KEY VALUE is a pair of CL-style keyword arguments.
456specifies which major modes the globalized minor mode should be switched on 456The :predicate argument specifies in which major modes should the
457in. As the minor mode defined by this function is always global, any 457globalized minor mode be switched on. The value should be t (meaning
458:global keyword is ignored. Other keywords have the same meaning as in 458switch on the minor mode in all major modes), nil (meaning don't
459`define-minor-mode', which see. In particular, :group specifies the custom 459switch on in any major mode), a list of modes (meaning switch on only
460group. The most useful keywords are those that are passed on to the 460in those modes and their descendants), or a list (not MODES...),
461`defcustom'. It normally makes no sense to pass the :lighter or :keymap 461meaning switch on in any major mode except MODES. The value can also
462keywords to `define-globalized-minor-mode', since these are usually passed 462mix all of these forms, see the info node `Defining Minor Modes' for
463to the buffer-local version of the minor mode. 463details.
464As the minor mode defined by this function is always global, any
465:global keyword is ignored.
466Other keywords have the same meaning as in `define-minor-mode',
467which see. In particular, :group specifies the custom group.
468The most useful keywords are those that are passed on to the `defcustom'.
469It normally makes no sense to pass the :lighter or :keymap keywords
470to `define-globalized-minor-mode', since these are usually passed to
471the buffer-local version of the minor mode.
464 472
465BODY contains code to execute each time the mode is enabled or disabled. 473BODY contains code to execute each time the mode is enabled or disabled.
466It is executed after toggling the mode, and before running 474It is executed after toggling the mode, and before running
@@ -512,7 +520,7 @@ on if the hook has explicitly disabled it.
512 (setq turn-on-function 520 (setq turn-on-function
513 `(lambda () 521 `(lambda ()
514 (require 'easy-mmode) 522 (require 'easy-mmode)
515 (when (easy-mmode--globalized-predicate-p ,(car predicate)) 523 (when (easy-mmode--globalized-predicate-p ,MODE-predicate)
516 (funcall ,turn-on-function))))) 524 (funcall ,turn-on-function)))))
517 (_ (push keyw extra-keywords) (push (pop body) extra-keywords)))) 525 (_ (push keyw extra-keywords) (push (pop body) extra-keywords))))
518 526
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index dad91e92a45..ac001af06bd 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -271,7 +271,7 @@ instead the assignment is turned into something equivalent to
271 (SETTER ARGS... temp) 271 (SETTER ARGS... temp)
272 temp) 272 temp)
273so as to preserve the semantics of `setf'." 273so as to preserve the semantics of `setf'."
274 (declare (debug (sexp (&or symbolp lambda-expr) &optional sexp))) 274 (declare (debug (sexp [&or symbolp lambda-expr] &optional sexp)))
275 (when (eq 'lambda (car-safe setter)) 275 (when (eq 'lambda (car-safe setter))
276 (message "Use `gv-define-setter' or name %s's setter function" name)) 276 (message "Use `gv-define-setter' or name %s's setter function" name))
277 `(gv-define-setter ,name (val &rest args) 277 `(gv-define-setter ,name (val &rest args)
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 6dbdb565b1b..a939cc0b509 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -437,7 +437,7 @@ the C sources, too."
437 (setq file-name 437 (setq file-name
438 (locate-file file-name load-path '(".el" ".elc") 'readable))) 438 (locate-file file-name load-path '(".el" ".elc") 'readable)))
439 ((and (stringp file-name) 439 ((and (stringp file-name)
440 (string-match "[.]*loaddefs.el\\'" file-name)) 440 (string-match "[.]*loaddefs.elc?\\'" file-name))
441 ;; An autoloaded variable or face. Visit loaddefs.el in a buffer 441 ;; An autoloaded variable or face. Visit loaddefs.el in a buffer
442 ;; and try to extract the defining file. The following form is 442 ;; and try to extract the defining file. The following form is
443 ;; from `describe-function-1' and `describe-variable'. 443 ;; from `describe-function-1' and `describe-variable'.
diff --git a/lisp/help.el b/lisp/help.el
index 83be85b1ee4..3e94b5046e5 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -717,6 +717,12 @@ Return nil if KEYS is nil."
717 :group 'help 717 :group 'help
718 :version "29.1") 718 :version "29.1")
719 719
720(defcustom describe-bindings-show-prefix-commands nil
721 "Non-nil means show prefix commands in the output of `describe-bindings'."
722 :type 'boolean
723 :group 'help
724 :version "29.1")
725
720(declare-function outline-hide-subtree "outline") 726(declare-function outline-hide-subtree "outline")
721 727
722(defun describe-bindings (&optional prefix buffer) 728(defun describe-bindings (&optional prefix buffer)
@@ -1699,6 +1705,7 @@ in `describe-map-tree'."
1699 (setq vect (cdr vect)) 1705 (setq vect (cdr vect))
1700 (setq end (caar vect)))) 1706 (setq end (caar vect))))
1701 (when (or (not (eq start end)) 1707 (when (or (not (eq start end))
1708 describe-bindings-show-prefix-commands
1702 ;; Don't output keymap prefixes. 1709 ;; Don't output keymap prefixes.
1703 (not (keymapp definition))) 1710 (not (keymapp definition)))
1704 (when first 1711 (when first
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 02f331697c6..3c7140ef5cc 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -64,16 +64,22 @@ The action to be taken can be further customized via
64 :version "28.1" 64 :version "28.1"
65 :type 'regexp) 65 :type 'regexp)
66 66
67(defcustom eww-download-directory "~/Downloads/"
68 "Default directory where `eww' saves downloaded files."
69 :version "29.1"
70 :group 'eww
71 :type 'directory)
72
67(defun eww--download-directory () 73(defun eww--download-directory ()
68 "Return the name of the download directory. 74 "Return the name of the EWW download directory.
69If ~/Downloads/ exists, that will be used, and if not, the 75The default is specified by `eww-download-directory'; however,
70DOWNLOAD XDG user directory will be returned. If that's 76if that directory doesn't exist and the DOWNLOAD XDG user directory
71undefined, ~/Downloads/ is returned anyway." 77is defined, use the latter instead."
72 (or (and (file-exists-p "~/Downloads/") 78 (or (and (file-exists-p eww-download-directory)
73 "~/Downloads/") 79 eww-download-directory)
74 (when-let ((dir (xdg-user-dir "DOWNLOAD"))) 80 (when-let ((dir (xdg-user-dir "DOWNLOAD")))
75 (file-name-as-directory dir)) 81 (file-name-as-directory dir))
76 "~/Downloads/")) 82 eww-download-directory))
77 83
78(defcustom eww-download-directory 'eww--download-directory 84(defcustom eww-download-directory 'eww--download-directory
79 "Directory where files will downloaded. 85 "Directory where files will downloaded.
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index b0cfdb1ebba..1a9d8003530 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -319,7 +319,7 @@ The remote connection identified by SOURCE is flushed by
319 (read-file-name-function #'read-file-name-default) 319 (read-file-name-function #'read-file-name-default)
320 source target) 320 source target)
321 (if (null connections) 321 (if (null connections)
322 (tramp-user-error nil "There are no remote connections.") 322 (tramp-user-error nil "There are no remote connections")
323 (setq source 323 (setq source
324 ;; Likely, the source remote connection is broken. So we 324 ;; Likely, the source remote connection is broken. So we
325 ;; shall avoid any action on it. 325 ;; shall avoid any action on it.
@@ -367,15 +367,15 @@ The remote connection identified by SOURCE is flushed by
367 (list source target))) 367 (list source target)))
368 368
369 (unless (tramp-tramp-file-p source) 369 (unless (tramp-tramp-file-p source)
370 (tramp-user-error nil "Source %s must be remote." source)) 370 (tramp-user-error nil "Source %s must be remote" source))
371 (when (null target) 371 (when (null target)
372 (or (setq target (tramp-default-rename-file source)) 372 (or (setq target (tramp-default-rename-file source))
373 (tramp-user-error 373 (tramp-user-error
374 nil 374 nil
375 (concat "There is no target specified. " 375 (concat "There is no target specified. "
376 "Check `tramp-default-rename-alist' for a proper entry.")))) 376 "Check `tramp-default-rename-alist' for a proper entry"))))
377 (when (tramp-equal-remote source target) 377 (when (tramp-equal-remote source target)
378 (tramp-user-error nil "Source and target must have different remote.")) 378 (tramp-user-error nil "Source and target must have different remote"))
379 379
380 ;; Append local file name if none is specified. 380 ;; Append local file name if none is specified.
381 (when (string-equal (file-remote-p target) target) 381 (when (string-equal (file-remote-p target) target)
@@ -461,7 +461,7 @@ For details, see `tramp-rename-files'."
461 nil 461 nil
462 (substitute-command-keys 462 (substitute-command-keys
463 (concat "Current buffer is not remote. " 463 (concat "Current buffer is not remote. "
464 "Consider `\\[tramp-rename-files]' instead."))) 464 "Consider `\\[tramp-rename-files]' instead")))
465 (setq target 465 (setq target
466 (when (null current-prefix-arg) 466 (when (null current-prefix-arg)
467 ;; The source remote connection shall not trigger any action. 467 ;; The source remote connection shall not trigger any action.
diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el
index 116c2b143e9..4d15695ccbf 100644
--- a/lisp/net/tramp-crypt.el
+++ b/lisp/net/tramp-crypt.el
@@ -436,7 +436,7 @@ Otherwise, return NAME."
436 crypt-vec (if (eq op 'encrypt) "encode" "decode") 436 crypt-vec (if (eq op 'encrypt) "encode" "decode")
437 tramp-compat-temporary-file-directory localname) 437 tramp-compat-temporary-file-directory localname)
438 (tramp-error 438 (tramp-error
439 crypt-vec 'file-error "%s of file name %s failed." 439 crypt-vec 'file-error "%s of file name %s failed"
440 (if (eq op 'encrypt) "Encoding" "Decoding") name)) 440 (if (eq op 'encrypt) "Encoding" "Decoding") name))
441 (with-current-buffer (tramp-get-connection-buffer crypt-vec) 441 (with-current-buffer (tramp-get-connection-buffer crypt-vec)
442 (goto-char (point-min)) 442 (goto-char (point-min))
@@ -471,7 +471,7 @@ Raise an error if this fails."
471 (file-name-directory infile) 471 (file-name-directory infile)
472 (concat "/" (file-name-nondirectory infile))) 472 (concat "/" (file-name-nondirectory infile)))
473 (tramp-error 473 (tramp-error
474 crypt-vec 'file-error "%s of file %s failed." 474 crypt-vec 'file-error "%s of file %s failed"
475 (if (eq op 'encrypt) "Encrypting" "Decrypting") infile)) 475 (if (eq op 'encrypt) "Encrypting" "Decrypting") infile))
476 (with-current-buffer (tramp-get-connection-buffer crypt-vec) 476 (with-current-buffer (tramp-get-connection-buffer crypt-vec)
477 (write-region nil nil outfile))))) 477 (write-region nil nil outfile)))))
@@ -495,11 +495,11 @@ directory. File names will be also encrypted."
495 ;; (declare (completion tramp-crypt-command-completion-p)) 495 ;; (declare (completion tramp-crypt-command-completion-p))
496 (interactive "DRemote directory name: ") 496 (interactive "DRemote directory name: ")
497 (unless tramp-crypt-enabled 497 (unless tramp-crypt-enabled
498 (tramp-user-error nil "Feature is not enabled.")) 498 (tramp-user-error nil "Feature is not enabled"))
499 (unless (and (tramp-tramp-file-p name) (file-directory-p name)) 499 (unless (and (tramp-tramp-file-p name) (file-directory-p name))
500 (tramp-user-error nil "%s must be an existing remote directory." name)) 500 (tramp-user-error nil "%s must be an existing remote directory" name))
501 (when (file-name-quoted-p name) 501 (when (file-name-quoted-p name)
502 (tramp-user-error nil "%s must not be quoted." name)) 502 (tramp-user-error nil "%s must not be quoted" name))
503 (setq name (file-name-as-directory (expand-file-name name))) 503 (setq name (file-name-as-directory (expand-file-name name)))
504 (unless (member name tramp-crypt-directories) 504 (unless (member name tramp-crypt-directories)
505 (setq tramp-crypt-directories (cons name tramp-crypt-directories))) 505 (setq tramp-crypt-directories (cons name tramp-crypt-directories)))
@@ -518,7 +518,7 @@ kept in their encrypted form."
518 ;; (declare (completion tramp-crypt-command-completion-p)) 518 ;; (declare (completion tramp-crypt-command-completion-p))
519 (interactive "DRemote directory name: ") 519 (interactive "DRemote directory name: ")
520 (unless tramp-crypt-enabled 520 (unless tramp-crypt-enabled
521 (tramp-user-error nil "Feature is not enabled.")) 521 (tramp-user-error nil "Feature is not enabled"))
522 (setq name (file-name-as-directory (expand-file-name name))) 522 (setq name (file-name-as-directory (expand-file-name name)))
523 (when (and (member name tramp-crypt-directories) 523 (when (and (member name tramp-crypt-directories)
524 (delete 524 (delete
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index c84f96d3c61..f925d2f3da5 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1115,7 +1115,7 @@ file names."
1115 (goto-char (point-min)) 1115 (goto-char (point-min))
1116 (tramp-error-with-buffer 1116 (tramp-error-with-buffer
1117 nil v 'file-error 1117 nil v 'file-error
1118 "%s failed, see buffer `%s' for details." 1118 "%s failed, see buffer `%s' for details"
1119 msg-operation (buffer-name))) 1119 msg-operation (buffer-name)))
1120 1120
1121 ;; Some WebDAV server, like the one from QNAP, do 1121 ;; Some WebDAV server, like the one from QNAP, do
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 401cec0e28d..2ef97d540a0 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1147,8 +1147,8 @@ Operations not mentioned here will be handled by the normal Emacs functions.")
1147 (unless (tramp-get-remote-ln v) 1147 (unless (tramp-get-remote-ln v)
1148 (tramp-error 1148 (tramp-error
1149 v 'file-error 1149 v 'file-error
1150 (concat "Making a symbolic link. " 1150 (concat "Making a symbolic link: "
1151 "ln(1) does not exist on the remote host.")))) 1151 "ln(1) does not exist on the remote host"))))
1152 1152
1153 (tramp-skeleton-handle-make-symbolic-link target linkname ok-if-already-exists 1153 (tramp-skeleton-handle-make-symbolic-link target linkname ok-if-already-exists
1154 (and (tramp-send-command-and-check 1154 (and (tramp-send-command-and-check
@@ -2150,7 +2150,7 @@ the uid and gid from FILENAME."
2150 cmd-result) 2150 cmd-result)
2151 (tramp-error-with-buffer 2151 (tramp-error-with-buffer
2152 nil v 'file-error 2152 nil v 'file-error
2153 "Copying directly failed, see buffer `%s' for details." 2153 "Copying directly failed, see buffer `%s' for details"
2154 (buffer-name))))) 2154 (buffer-name)))))
2155 2155
2156 ;; We are on the local host. 2156 ;; We are on the local host.
@@ -2205,7 +2205,7 @@ the uid and gid from FILENAME."
2205 "%s %s %s" cmd 2205 "%s %s %s" cmd
2206 (tramp-shell-quote-argument localname1) 2206 (tramp-shell-quote-argument localname1)
2207 (tramp-shell-quote-argument tmpfile)) 2207 (tramp-shell-quote-argument tmpfile))
2208 "Copying directly failed, see buffer `%s' for details." 2208 "Copying directly failed, see buffer `%s' for details"
2209 (tramp-get-buffer v)) 2209 (tramp-get-buffer v))
2210 ;; We must change the ownership as remote user. 2210 ;; We must change the ownership as remote user.
2211 ;; Since this does not work reliable, we also 2211 ;; Since this does not work reliable, we also
@@ -2238,7 +2238,7 @@ the uid and gid from FILENAME."
2238 "cp -f -p %s %s" 2238 "cp -f -p %s %s"
2239 (tramp-shell-quote-argument tmpfile) 2239 (tramp-shell-quote-argument tmpfile)
2240 (tramp-shell-quote-argument localname2)) 2240 (tramp-shell-quote-argument localname2))
2241 "Copying directly failed, see buffer `%s' for details." 2241 "Copying directly failed, see buffer `%s' for details"
2242 (tramp-get-buffer v))) 2242 (tramp-get-buffer v)))
2243 (t1 2243 (t1
2244 (tramp-run-real-handler 2244 (tramp-run-real-handler
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 740841c24db..add230e2720 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -692,7 +692,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
692 692
693 ;; "rmdir" does not report an error. So we check ourselves. 693 ;; "rmdir" does not report an error. So we check ourselves.
694 (when (file-exists-p directory) 694 (when (file-exists-p directory)
695 (tramp-error v 'file-error "`%s' not removed." directory))))) 695 (tramp-error v 'file-error "`%s' not removed" directory)))))
696 696
697(defun tramp-smb-handle-delete-file (filename &optional trash) 697(defun tramp-smb-handle-delete-file (filename &optional trash)
698 "Like `delete-file' for Tramp files." 698 "Like `delete-file' for Tramp files."
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 6eff5b2ca60..defdb2bd546 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1722,11 +1722,11 @@ default values are used."
1722 (unless (or nodefault non-essential 1722 (unless (or nodefault non-essential
1723 (assoc method tramp-methods)) 1723 (assoc method tramp-methods))
1724 (tramp-user-error 1724 (tramp-user-error
1725 v "Method `%s' is not known." method)) 1725 v "Method `%s' is not known" method))
1726 ;; Only some methods from tramp-sh.el do support multi-hops. 1726 ;; Only some methods from tramp-sh.el do support multi-hops.
1727 (unless (or (null hop) nodefault non-essential (tramp-multi-hop-p v)) 1727 (unless (or (null hop) nodefault non-essential (tramp-multi-hop-p v))
1728 (tramp-user-error 1728 (tramp-user-error
1729 v "Method `%s' is not supported for multi-hops." method))))))) 1729 v "Method `%s' is not supported for multi-hops" method)))))))
1730 1730
1731(put #'tramp-dissect-file-name 'tramp-suppress-trace t) 1731(put #'tramp-dissect-file-name 'tramp-suppress-trace t)
1732 1732
@@ -1755,7 +1755,7 @@ See `tramp-dissect-file-name' for details."
1755 ;; Only some methods from tramp-sh.el do support multi-hops. 1755 ;; Only some methods from tramp-sh.el do support multi-hops.
1756 (unless (or nodefault non-essential (tramp-multi-hop-p v)) 1756 (unless (or nodefault non-essential (tramp-multi-hop-p v))
1757 (tramp-user-error 1757 (tramp-user-error
1758 v "Method `%s' is not supported for multi-hops." 1758 v "Method `%s' is not supported for multi-hops"
1759 (tramp-file-name-method v))) 1759 (tramp-file-name-method v)))
1760 ;; Return result. 1760 ;; Return result.
1761 v)) 1761 v))
@@ -3936,7 +3936,7 @@ Let-bind it when necessary.")
3936 ;; Some handlers for `tramp-get-remote-uid' return nil if they 3936 ;; Some handlers for `tramp-get-remote-uid' return nil if they
3937 ;; can't get the UID; always return -1 in this case for 3937 ;; can't get the UID; always return -1 in this case for
3938 ;; consistency. 3938 ;; consistency.
3939 -1))) 3939 tramp-unknown-id-integer)))
3940 3940
3941(defun tramp-handle-access-file (filename string) 3941(defun tramp-handle-access-file (filename string)
3942 "Like `access-file' for Tramp files." 3942 "Like `access-file' for Tramp files."
@@ -4896,7 +4896,7 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
4896 (unless (tramp-multi-hop-p item) 4896 (unless (tramp-multi-hop-p item)
4897 (setq tramp-default-proxies-alist saved-tdpa) 4897 (setq tramp-default-proxies-alist saved-tdpa)
4898 (tramp-user-error 4898 (tramp-user-error
4899 vec "Method `%s' is not supported for multi-hops." 4899 vec "Method `%s' is not supported for multi-hops"
4900 (tramp-file-name-method item))))) 4900 (tramp-file-name-method item)))))
4901 4901
4902 ;; Some methods ("su", "sg", "sudo", "doas", "ksu") do not use the 4902 ;; Some methods ("su", "sg", "sudo", "doas", "ksu") do not use the
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index 20636a3dd04..fd75f4785d6 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -5,13 +5,13 @@
5(defun org-release () 5(defun org-release ()
6 "The release version of Org. 6 "The release version of Org.
7Inserted by installing Org mode or when a release is made." 7Inserted by installing Org mode or when a release is made."
8 (let ((org-release "9.6.1")) 8 (let ((org-release "9.6.2"))
9 org-release)) 9 org-release))
10;;;###autoload 10;;;###autoload
11(defun org-git-version () 11(defun org-git-version ()
12 "The Git version of Org mode. 12 "The Git version of Org mode.
13Inserted by installing Org or when a release is made." 13Inserted by installing Org or when a release is made."
14 (let ((org-git-version "release_9.6.1-48-g92471e")) 14 (let ((org-git-version "release_9.6.2"))
15 org-git-version)) 15 org-git-version))
16 16
17(provide 'org-version) 17(provide 'org-version)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 2fbb825015f..1649722ab0c 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -9,7 +9,7 @@
9;; URL: https://orgmode.org 9;; URL: https://orgmode.org
10;; Package-Requires: ((emacs "26.1")) 10;; Package-Requires: ((emacs "26.1"))
11 11
12;; Version: 9.6.1 12;; Version: 9.6.2
13 13
14;; This file is part of GNU Emacs. 14;; This file is part of GNU Emacs.
15;; 15;;
diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el
index 4ff482cc3f5..f822f3d110c 100644
--- a/lisp/org/ox-texinfo.el
+++ b/lisp/org/ox-texinfo.el
@@ -2037,10 +2037,13 @@ Once computed, the results remain cached."
2037 "\n"))) 2037 "\n")))
2038 (with-temp-file input-file 2038 (with-temp-file input-file
2039 (insert input-content)) 2039 (insert input-content))
2040 (let* ((output-file (org-texinfo-compile input-file)) 2040 (when-let* ((output-file
2041 (output-content (with-temp-buffer 2041 ;; If compilation fails, consider math to
2042 (insert-file-contents output-file) 2042 ;; be not supported.
2043 (buffer-string)))) 2043 (ignore-errors (org-texinfo-compile input-file)))
2044 (output-content (with-temp-buffer
2045 (insert-file-contents output-file)
2046 (buffer-string))))
2044 (let ((result (string-match-p (regexp-quote math-example) 2047 (let ((result (string-match-p (regexp-quote math-example)
2045 output-content))) 2048 output-content)))
2046 (delete-file input-file) 2049 (delete-file input-file)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 2fe88323c35..bbabce80b4d 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -5854,7 +5854,14 @@ statement."
5854 (save-excursion 5854 (save-excursion
5855 (python-nav-beginning-of-statement) 5855 (python-nav-beginning-of-statement)
5856 (when (and (not (python-syntax-context-type)) 5856 (when (and (not (python-syntax-context-type))
5857 (looking-at (python-rx dedenter))) 5857 (looking-at (python-rx dedenter))
5858 ;; Exclude the first "case" in the block.
5859 (not (and (string= (match-string-no-properties 0)
5860 "case")
5861 (save-excursion
5862 (back-to-indentation)
5863 (python-util-forward-comment -1)
5864 (equal (char-before) ?:)))))
5858 (point)))) 5865 (point))))
5859 5866
5860(defun python-info-line-ends-backslash-p (&optional line-number) 5867(defun python-info-line-ends-backslash-p (&optional line-number)
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index d1034d467ab..97c7cf6480c 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -469,7 +469,7 @@ non-nil."
469 (let* (first-call ) 469 (let* (first-call )
470 (while (and parent 470 (while (and parent
471 (setq first-call (treesit-node-parent parent)) 471 (setq first-call (treesit-node-parent parent))
472 (string-search "call" (treesit-node-type first-call))) 472 (equal "call" (treesit-node-type first-call)))
473 (setq parent first-call)) 473 (setq parent first-call))
474 (treesit-node-start (treesit-search-subtree parent "\\." nil t)))) 474 (treesit-node-start (treesit-search-subtree parent "\\." nil t))))
475 475
@@ -883,32 +883,24 @@ a statement container is a node that matches
883 "Return the fully qualified name of NODE." 883 "Return the fully qualified name of NODE."
884 (let* ((name (ruby-ts--get-name node)) 884 (let* ((name (ruby-ts--get-name node))
885 (delimiter "#")) 885 (delimiter "#"))
886 (when (equal (treesit-node-type node) "singleton_method")
887 (setq delimiter "."
888 name (treesit-node-text (treesit-node-child-by-field-name node "name"))))
886 (while (setq node (treesit-parent-until node #'ruby-ts--class-or-module-p)) 889 (while (setq node (treesit-parent-until node #'ruby-ts--class-or-module-p))
887 (setq name (concat (ruby-ts--get-name node) delimiter name)) 890 (if name
891 (setq name (concat (ruby-ts--get-name node) delimiter name))
892 (setq name (ruby-ts--get-name node)))
888 (setq delimiter "::")) 893 (setq delimiter "::"))
889 name)) 894 name))
890 895
891(defun ruby-ts--imenu-helper (node) 896(defun ruby-ts--imenu-helper (tree)
892 "Convert a treesit sparse tree NODE in an imenu list. 897 "Convert a treesit sparse tree NODE in a flat imenu list."
893Helper for `ruby-ts--imenu' which converts a treesit sparse 898 (if (cdr tree)
894NODE into a list of imenu ( name . pos ) nodes" 899 ;; We only use the "leaf" values in the tree. It does include a
895 (let* ((ts-node (car node)) 900 ;; leaf node for every class or module body.
896 (subtrees (mapcan #'ruby-ts--imenu-helper (cdr node))) 901 (cl-mapcan #'ruby-ts--imenu-helper (cdr tree))
897 (name (when ts-node 902 (list (cons (ruby-ts--full-name (car tree))
898 (ruby-ts--full-name ts-node))) 903 (treesit-node-start (car tree))))))
899 (marker (when ts-node
900 (set-marker (make-marker)
901 (treesit-node-start ts-node)))))
902 (cond
903 ((or (null ts-node) (null name)) subtrees)
904 ;; Don't include the anonymous "class" and "module" nodes
905 ((string-match-p "(\"\\(class\\|module\\)\")"
906 (treesit-node-string ts-node))
907 nil)
908 (subtrees
909 `((,name ,(cons name marker) ,@subtrees)))
910 (t
911 `((,name . ,marker))))))
912 904
913;; For now, this is going to work like ruby-mode and return a list of 905;; For now, this is going to work like ruby-mode and return a list of
914;; class, modules, def (methods), and alias. It is likely that this 906;; class, modules, def (methods), and alias. It is likely that this
@@ -916,8 +908,14 @@ NODE into a list of imenu ( name . pos ) nodes"
916(defun ruby-ts--imenu () 908(defun ruby-ts--imenu ()
917 "Return Imenu alist for the current buffer." 909 "Return Imenu alist for the current buffer."
918 (let* ((root (treesit-buffer-root-node)) 910 (let* ((root (treesit-buffer-root-node))
919 (nodes (treesit-induce-sparse-tree root "^\\(method\\|alias\\|class\\|module\\)$"))) 911 (tree (treesit-induce-sparse-tree root
920 (ruby-ts--imenu-helper nodes))) 912 (rx bol (or "singleton_method"
913 "method"
914 "alias"
915 "class"
916 "module")
917 eol))))
918 (ruby-ts--imenu-helper tree)))
921 919
922(defun ruby-ts--arrow-up-start (arg) 920(defun ruby-ts--arrow-up-start (arg)
923 "Move to the start ARG levels up or out." 921 "Move to the start ARG levels up or out."
diff --git a/lisp/savehist.el b/lisp/savehist.el
index b532668f8a4..ea8968c771b 100644
--- a/lisp/savehist.el
+++ b/lisp/savehist.el
@@ -232,8 +232,9 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
232 savehist-coding-system)) 232 savehist-coding-system))
233 (run-hooks 'savehist-save-hook) 233 (run-hooks 'savehist-save-hook)
234 (let ((print-length nil) 234 (let ((print-length nil)
235 (print-level nil) 235 (print-level nil)
236 (print-quoted t)) 236 (print-quoted t)
237 (print-circle t))
237 ;; Save the minibuffer histories, along with the value of 238 ;; Save the minibuffer histories, along with the value of
238 ;; savehist-minibuffer-history-variables itself. 239 ;; savehist-minibuffer-history-variables itself.
239 (when savehist-save-minibuffer-history 240 (when savehist-save-minibuffer-history
diff --git a/lisp/subr.el b/lisp/subr.el
index c67c7158b76..05c022847d3 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -7151,7 +7151,7 @@ CONDITION is either:
7151- the symbol t, to always match, 7151- the symbol t, to always match,
7152- the symbol nil, which never matches, 7152- the symbol nil, which never matches,
7153- a regular expression, to match a buffer name, 7153- a regular expression, to match a buffer name,
7154- a predicate function that takes a buffer object and ARG as 7154- a predicate function that takes BUFFER-OR-NAME and ARG as
7155 arguments, and returns non-nil if the buffer matches, 7155 arguments, and returns non-nil if the buffer matches,
7156- a cons-cell, where the car describes how to interpret the cdr. 7156- a cons-cell, where the car describes how to interpret the cdr.
7157 The car can be one of the following: 7157 The car can be one of the following:
@@ -7177,8 +7177,8 @@ CONDITION is either:
7177 (string-match-p condition (buffer-name buffer))) 7177 (string-match-p condition (buffer-name buffer)))
7178 ((pred functionp) 7178 ((pred functionp)
7179 (if (eq 1 (cdr (func-arity condition))) 7179 (if (eq 1 (cdr (func-arity condition)))
7180 (funcall condition buffer) 7180 (funcall condition buffer-or-name)
7181 (funcall condition buffer arg))) 7181 (funcall condition buffer-or-name arg)))
7182 (`(major-mode . ,mode) 7182 (`(major-mode . ,mode)
7183 (eq 7183 (eq
7184 (buffer-local-value 'major-mode buffer) 7184 (buffer-local-value 'major-mode buffer)
diff --git a/lisp/transient.el b/lisp/transient.el
index 96e711e950c..4affc414fa6 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -2516,17 +2516,22 @@ prefix argument and pivot to `transient-update'."
2516 2516
2517(defun transient--invalid (msg) 2517(defun transient--invalid (msg)
2518 (ding) 2518 (ding)
2519 (message "%s: `%s' (Use `%s' to abort, `%s' for help) [%s]" 2519 (message "%s: `%s' (Use `%s' to abort, `%s' for help)%s"
2520 msg 2520 msg
2521 (propertize (key-description (this-single-command-keys)) 2521 (propertize (key-description (this-single-command-keys))
2522 'face 'font-lock-warning-face) 2522 'face 'font-lock-warning-face)
2523 (propertize "C-g" 'face 'transient-key) 2523 (propertize "C-g" 'face 'transient-key)
2524 (propertize "?" 'face 'transient-key) 2524 (propertize "?" 'face 'transient-key)
2525 ;; `this-command' is `transient--undefined' or similar at this 2525 ;; `this-command' is `transient-undefined' or `transient-inapt'.
2526 ;; point. Show the command the user actually tried to invoke. 2526 ;; Show the command (`this-original-command') the user actually
2527 (propertize (symbol-name (transient--suffix-symbol 2527 ;; tried to invoke. For an anonymous inapt command that is a
2528 this-original-command)) 2528 ;; lambda expression, which cannot be mapped to a symbol, so
2529 'face 'font-lock-warning-face)) 2529 ;; forgo displaying the command.
2530 (if-let ((cmd (ignore-errors
2531 (symbol-name (transient--suffix-symbol
2532 this-original-command)))))
2533 (format " [%s]" (propertize cmd 'face 'font-lock-warning-face))
2534 ""))
2530 (unless (and transient--transient-map 2535 (unless (and transient--transient-map
2531 (memq transient--transient-map overriding-terminal-local-map)) 2536 (memq transient--transient-map overriding-terminal-local-map))
2532 (let ((transient--prefix (or transient--prefix 'sic))) 2537 (let ((transient--prefix (or transient--prefix 'sic)))
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 2b0eca7f5c2..e3c7d569ea6 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -3056,11 +3056,17 @@ function signals an error."
3056 (apply #'treesit--call-process-signal 3056 (apply #'treesit--call-process-signal
3057 (if (file-exists-p "scanner.cc") c++ cc) 3057 (if (file-exists-p "scanner.cc") c++ cc)
3058 nil t nil 3058 nil t nil
3059 `("-fPIC" "-shared" 3059 (if (eq system-type 'cygwin)
3060 ,@(directory-files 3060 `("-shared" "-Wl,-dynamicbase"
3061 default-directory nil 3061 ,@(directory-files
3062 (rx bos (+ anychar) ".o" eos)) 3062 default-directory nil
3063 "-o" ,lib-name)) 3063 (rx bos (+ anychar) ".o" eos))
3064 "-o" ,lib-name)
3065 `("-fPIC" "-shared"
3066 ,@(directory-files
3067 default-directory nil
3068 (rx bos (+ anychar) ".o" eos))
3069 "-o" ,lib-name)))
3064 ;; Copy out. 3070 ;; Copy out.
3065 (unless (file-exists-p out-dir) 3071 (unless (file-exists-p out-dir)
3066 (make-directory out-dir t)) 3072 (make-directory out-dir t))
diff --git a/lisp/window.el b/lisp/window.el
index 08ce8498655..d53136d406b 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -7510,8 +7510,8 @@ Its value takes effect before processing the ACTION argument of
7510If non-nil, this is an alist of elements (CONDITION . ACTION), 7510If non-nil, this is an alist of elements (CONDITION . ACTION),
7511where: 7511where:
7512 7512
7513 CONDITION is passed to `buffer-match-p', along with the buffer 7513 CONDITION is passed to `buffer-match-p', along with the name of
7514 that is to be displayed and the ACTION argument of 7514 the buffer that is to be displayed and the ACTION argument of
7515 `display-buffer', to check if ACTION should be used. 7515 `display-buffer', to check if ACTION should be used.
7516 7516
7517 ACTION is a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is an 7517 ACTION is a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is an
@@ -7568,12 +7568,16 @@ all fail. It should never be set by programs or users. See
7568(defun display-buffer-assq-regexp (buffer-or-name alist action) 7568(defun display-buffer-assq-regexp (buffer-or-name alist action)
7569 "Retrieve ALIST entry corresponding to buffer specified by BUFFER-OR-NAME. 7569 "Retrieve ALIST entry corresponding to buffer specified by BUFFER-OR-NAME.
7570This returns the cdr of the alist entry ALIST if the entry's 7570This returns the cdr of the alist entry ALIST if the entry's
7571key (its car) and BUFFER-OR-NAME satisfy `buffer-match-p', using 7571key (its car) and the name of the buffer designated by
7572the key as CONDITION argument of `buffer-match-p'. ACTION should 7572BUFFER-OR-NAME satisfy `buffer-match-p', using the key as
7573have the form of the action argument passed to `display-buffer'." 7573CONDITION argument of `buffer-match-p'. ACTION should have the
7574form of the action argument passed to `display-buffer'."
7574 (catch 'match 7575 (catch 'match
7575 (dolist (entry alist) 7576 (dolist (entry alist)
7576 (when (buffer-match-p (car entry) buffer-or-name action) 7577 (when (buffer-match-p (car entry) (if (stringp buffer-or-name)
7578 buffer-or-name
7579 (buffer-name buffer-or-name))
7580 action)
7577 (throw 'match (cdr entry)))))) 7581 (throw 'match (cdr entry))))))
7578 7582
7579(defvar display-buffer--same-window-action 7583(defvar display-buffer--same-window-action