aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2021-12-07 09:32:13 +0800
committerPo Lu2021-12-07 09:32:13 +0800
commitd9b3f665bc57bc78716f4c9d5efebf283f7e1964 (patch)
tree4795b7d972c36f84ae57632922a05de2e01fd856
parent0b6a632f99214e2d1e9e1d72b8f8b3a7f054d552 (diff)
parente17aea73a5b2ae5f7cbf9057d7dad286be81ffc0 (diff)
downloademacs-d9b3f665bc57bc78716f4c9d5efebf283f7e1964.tar.gz
emacs-d9b3f665bc57bc78716f4c9d5efebf283f7e1964.zip
Merge remote-tracking branch 'origin/master' into feature/pgtk
-rw-r--r--doc/emacs/dired.texi17
-rw-r--r--etc/tutorials/TUTORIAL14
-rw-r--r--etc/tutorials/TUTORIAL.sv14
-rw-r--r--lisp/bindings.el2
-rw-r--r--lisp/emacs-lisp/bytecomp.el4
-rw-r--r--lisp/gnus/gnus-registry.el3
-rw-r--r--lisp/minibuffer.el5
-rw-r--r--lisp/net/shr.el4
-rw-r--r--lisp/net/tramp-cmds.el7
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/net/tramp-sh.el11
-rw-r--r--lisp/net/tramp-smb.el6
-rw-r--r--lisp/net/tramp-sudoedit.el13
-rw-r--r--lisp/net/tramp.el86
-rw-r--r--lisp/startup.el10
-rw-r--r--src/image.c18
-rw-r--r--test/lisp/emacs-lisp/bytecomp-tests.el5
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el1
-rw-r--r--test/lisp/mail/mail-utils-tests.el3
-rw-r--r--test/lisp/net/tramp-tests.el7
20 files changed, 140 insertions, 92 deletions
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 0edd8bc7da0..48cf5630eea 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -742,6 +742,15 @@ never creates such missing directories; the value @code{always},
742means Dired automatically creates them; the value @code{ask} 742means Dired automatically creates them; the value @code{ask}
743means Dired asks you for confirmation before creating them. 743means Dired asks you for confirmation before creating them.
744 744
745@vindex dired-create-destination-dirs-on-trailing-dirsep
746If the option @code{dired-create-destination-dirs-on-trailing-dirsep}
747is non-@code{nil} in addition to @code{dired-create-destination-dirs},
748a trailing directory separator at the destination directory is treated
749specially. In that case, when copying to @samp{test/} and no
750directory @samp{test} exists already, it will be created and the
751specified source files or directories are copied into the newly
752created directory.
753
745@vindex dired-copy-preserve-time 754@vindex dired-copy-preserve-time
746If @code{dired-copy-preserve-time} is non-@code{nil}, then copying 755If @code{dired-copy-preserve-time} is non-@code{nil}, then copying
747with this command preserves the modification time of the old file in 756with this command preserves the modification time of the old file in
@@ -784,6 +793,14 @@ which to move the files (this is like the shell command @command{mv}).
784The option @code{dired-create-destination-dirs} controls whether Dired 793The option @code{dired-create-destination-dirs} controls whether Dired
785should create non-existent directories in @var{new}. 794should create non-existent directories in @var{new}.
786 795
796The option @code{dired-create-destination-dirs-on-trailing-dirsep},
797when set in addition to @code{dired-create-destination-dirs}, controls
798wether a trailing directory separator at the destination is treated
799specially. In that case, when renaming a directory @samp{old} to
800@samp{new/} and no directory @samp{new} exists already, it will be
801created and @samp{old} is moved into the newly created directory.
802Otherwise, @samp{old} is renamed to @samp{new}.
803
787Dired automatically changes the visited file name of buffers associated 804Dired automatically changes the visited file name of buffers associated
788with renamed files so that they refer to the new names. 805with renamed files so that they refer to the new names.
789 806
diff --git a/etc/tutorials/TUTORIAL b/etc/tutorials/TUTORIAL
index dcdb61f23ec..cbb333470a0 100644
--- a/etc/tutorials/TUTORIAL
+++ b/etc/tutorials/TUTORIAL
@@ -1099,6 +1099,20 @@ manual in the node called "Dired".
1099The manual also describes many other Emacs features. 1099The manual also describes many other Emacs features.
1100 1100
1101 1101
1102* INSTALLING PACKAGES
1103---------------------
1104
1105There's a rich set of packages for Emacs written by the community,
1106which extend Emacs' capabilities. These packages include support for
1107new languages, additional themes, plugins for integrating with
1108external applications, and much, much more.
1109
1110To see a list of all available packages, type M-x list-packages. In
1111the display this shows, you can install or uninstall packages, as well
1112as read packages' descriptions. For more information about package
1113management, consult the manual.
1114
1115
1102* CONCLUSION 1116* CONCLUSION
1103------------ 1117------------
1104 1118
diff --git a/etc/tutorials/TUTORIAL.sv b/etc/tutorials/TUTORIAL.sv
index dacc66d916f..5c9703f8066 100644
--- a/etc/tutorials/TUTORIAL.sv
+++ b/etc/tutorials/TUTORIAL.sv
@@ -1119,6 +1119,20 @@ Emacs-manualen i noden "Dired".
1119Manualen beskriver även många andra funktioner i Emacs. 1119Manualen beskriver även många andra funktioner i Emacs.
1120 1120
1121 1121
1122* INSTALLERA PAKET
1123------------------
1124
1125Det finns en stor mängd paket för Emacs skrivna av användare, som
1126utökar Emacs funktionalitet. Detta kan innefatta stöd för nya språk,
1127fler teman, insticksmoduler för integration med externa program och
1128mycket, mycket annat.
1129
1130Skriv M-x list-packages för att se en lista över alla tillgängliga
1131paket. I detta läge kan du installera eller avinstallera paket samt
1132läsa mer om olika paket. Se användarmanualen för mer information om
1133pakethantering.
1134
1135
1122* SLUTORD 1136* SLUTORD
1123--------- 1137---------
1124 1138
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 578406dd988..ba3bf81b3e3 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -288,7 +288,7 @@ mnemonics of the following coding systems:
288Value is used for `mode-line-frame-identification', which see." 288Value is used for `mode-line-frame-identification', which see."
289 (if (or (null window-system) 289 (if (or (null window-system)
290 (eq window-system 'pc)) 290 (eq window-system 'pc))
291 "-%F " 291 " %F "
292 " ")) 292 " "))
293 293
294;; We need to defer the call to mode-line-frame-control to the time 294;; We need to defer the call to mode-line-frame-control to the time
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index d6b25e02795..b1afa6fe611 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1712,10 +1712,10 @@ It is too wide if it has any lines longer than the largest of
1712 (nth 2 form))))) 1712 (nth 2 form)))))
1713 (when (and (consp name) (eq (car name) 'quote)) 1713 (when (and (consp name) (eq (car name) 'quote))
1714 (setq name (cadr name))) 1714 (setq name (cadr name)))
1715 (setq name (if name (format " `%s'" name) "")) 1715 (setq name (if name (format " `%s' " name) ""))
1716 (when (and kind docs (stringp docs) 1716 (when (and kind docs (stringp docs)
1717 (byte-compile--wide-docstring-p docs col)) 1717 (byte-compile--wide-docstring-p docs col))
1718 (byte-compile-warn "%s%s docstring wider than %s characters" 1718 (byte-compile-warn "%s%sdocstring wider than %s characters"
1719 kind name col)))) 1719 kind name col))))
1720 form) 1720 form)
1721 1721
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 8ce88dc81e4..163d543afd1 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -847,7 +847,8 @@ Overrides existing keywords with FORCE set non-nil."
847(defun gnus-registry-register-message-ids () 847(defun gnus-registry-register-message-ids ()
848 "Register the Message-ID of every article in the group." 848 "Register the Message-ID of every article in the group."
849 (unless (or (gnus-parameter-registry-ignore gnus-newsgroup-name) 849 (unless (or (gnus-parameter-registry-ignore gnus-newsgroup-name)
850 (null gnus-registry-register-all)) 850 (null gnus-registry-register-all)
851 (null (eieio-object-p gnus-registry-db)))
851 (dolist (article gnus-newsgroup-articles) 852 (dolist (article gnus-newsgroup-articles)
852 (let* ((id (gnus-registry-fetch-message-id-fast article)) 853 (let* ((id (gnus-registry-fetch-message-id-fast article))
853 (groups (gnus-registry-get-id-key id 'group))) 854 (groups (gnus-registry-get-id-key id 'group)))
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 0a5fb72774b..28bd1df59ab 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -283,8 +283,9 @@ the form (concat S2 S)."
283 ((eq (car-safe action) 'boundaries) 283 ((eq (car-safe action) 'boundaries)
284 (let ((beg (or (and (eq (car-safe res) 'boundaries) (cadr res)) 0))) 284 (let ((beg (or (and (eq (car-safe res) 'boundaries) (cadr res)) 0)))
285 `(boundaries 285 `(boundaries
286 ,(max (min (length string) (length s1)) 286 ,(min (length string)
287 (+ beg (- (length s1) (length s2)))) 287 (max (length s1)
288 (+ beg (- (length s1) (length s2)))))
288 . ,(and (eq (car-safe res) 'boundaries) (cddr res))))) 289 . ,(and (eq (car-safe res) 'boundaries) (cddr res)))))
289 ((stringp res) 290 ((stringp res)
290 (if (string-prefix-p s2 res completion-ignore-case) 291 (if (string-prefix-p s2 res completion-ignore-case)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index 63522b02ace..829cf151f79 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -1431,9 +1431,7 @@ ones, in case fg and bg are nil."
1431 1431
1432(defun shr-parse-style (style) 1432(defun shr-parse-style (style)
1433 (when style 1433 (when style
1434 (save-match-data 1434 (setq style (replace-regexp-in-string "\n" " " style))
1435 (when (string-search "\n" style)
1436 (setq style (replace-match " " t t style))))
1437 (let ((plist nil)) 1435 (let ((plist nil))
1438 (dolist (elem (split-string style ";")) 1436 (dolist (elem (split-string style ";"))
1439 (when elem 1437 (when elem
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index 63eab1b31a1..2eaebebed9f 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -67,7 +67,7 @@ SYNTAX can be one of the symbols `default' (default),
67 nil 67 nil
68 (mapcar 68 (mapcar
69 (lambda (x) 69 (lambda (x)
70 (with-current-buffer x (when (tramp-tramp-file-p default-directory) x))) 70 (when (tramp-tramp-file-p (tramp-get-default-directory x)) x))
71 (buffer-list)))) 71 (buffer-list))))
72 72
73;;;###tramp-autoload 73;;;###tramp-autoload
@@ -593,9 +593,8 @@ buffer in your bug report.
593 593
594(defun tramp-reporter-dump-variable (varsym mailbuf) 594(defun tramp-reporter-dump-variable (varsym mailbuf)
595 "Pretty-print the value of the variable in symbol VARSYM." 595 "Pretty-print the value of the variable in symbol VARSYM."
596 (let* ((reporter-eval-buffer (symbol-value 'reporter-eval-buffer)) 596 (when-let ((reporter-eval-buffer reporter-eval-buffer)
597 (val (with-current-buffer reporter-eval-buffer 597 (val (buffer-local-value varsym reporter-eval-buffer)))
598 (symbol-value varsym))))
599 598
600 (if (hash-table-p val) 599 (if (hash-table-p val)
601 ;; Pretty print the cache. 600 ;; Pretty print the cache.
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 6d83ae59b06..d7af0d34bd5 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1456,7 +1456,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
1456`file-notify' events." 1456`file-notify' events."
1457 (let* ((events (process-get proc 'events)) 1457 (let* ((events (process-get proc 'events))
1458 (rest-string (process-get proc 'rest-string)) 1458 (rest-string (process-get proc 'rest-string))
1459 (dd (with-current-buffer (process-buffer proc) default-directory)) 1459 (dd (tramp-get-default-directory (process-buffer proc)))
1460 (ddu (regexp-quote (tramp-gvfs-url-file-name dd)))) 1460 (ddu (regexp-quote (tramp-gvfs-url-file-name dd))))
1461 (when rest-string 1461 (when rest-string
1462 (tramp-message proc 10 "Previous string:\n%s" rest-string)) 1462 (tramp-message proc 10 "Previous string:\n%s" rest-string))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 8e66363f03a..c2a02312474 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -2601,7 +2601,7 @@ The method used must be an out-of-band method."
2601 ;; We cannot use `insert-buffer-substring' because the Tramp 2601 ;; We cannot use `insert-buffer-substring' because the Tramp
2602 ;; buffer changes its contents before insertion due to calling 2602 ;; buffer changes its contents before insertion due to calling
2603 ;; `expand-file-name' and alike. 2603 ;; `expand-file-name' and alike.
2604 (insert (with-current-buffer (tramp-get-buffer v) (buffer-string))) 2604 (insert (tramp-get-buffer-string (tramp-get-buffer v)))
2605 2605
2606 ;; We must enable unibyte strings, because the "--dired" 2606 ;; We must enable unibyte strings, because the "--dired"
2607 ;; output counts in bytes. 2607 ;; output counts in bytes.
@@ -3160,8 +3160,7 @@ implementation will be used."
3160 (when outbuf 3160 (when outbuf
3161 (with-current-buffer outbuf 3161 (with-current-buffer outbuf
3162 (insert 3162 (insert
3163 (with-current-buffer (tramp-get-connection-buffer v) 3163 (tramp-get-buffer-string (tramp-get-connection-buffer v))))
3164 (buffer-string))))
3165 (when (and display (get-buffer-window outbuf t)) (redisplay)))) 3164 (when (and display (get-buffer-window outbuf t)) (redisplay))))
3166 ;; When the user did interrupt, we should do it also. We use 3165 ;; When the user did interrupt, we should do it also. We use
3167 ;; return code -1 as marker. 3166 ;; return code -1 as marker.
@@ -3475,8 +3474,7 @@ implementation will be used."
3475 (not 3474 (not
3476 (string-equal 3475 (string-equal
3477 (buffer-string) 3476 (buffer-string)
3478 (with-current-buffer (tramp-get-buffer v) 3477 (tramp-get-buffer-string (tramp-get-buffer v))))
3479 (buffer-string))))
3480 (tramp-error 3478 (tramp-error
3481 v 'file-error 3479 v 'file-error
3482 (concat "Couldn't write region to `%s'," 3480 (concat "Couldn't write region to `%s',"
@@ -3770,8 +3768,7 @@ Fall back to normal file name handler if no Tramp handler exists."
3770 "Read output from \"gio monitor\" and add corresponding `file-notify' events." 3768 "Read output from \"gio monitor\" and add corresponding `file-notify' events."
3771 (let ((events (process-get proc 'events)) 3769 (let ((events (process-get proc 'events))
3772 (remote-prefix 3770 (remote-prefix
3773 (with-current-buffer (process-buffer proc) 3771 (file-remote-p (tramp-get-default-directory (process-buffer proc))))
3774 (file-remote-p default-directory)))
3775 (rest-string (process-get proc 'rest-string)) 3772 (rest-string (process-get proc 'rest-string))
3776 pos) 3773 pos)
3777 (when rest-string 3774 (when rest-string
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 24119539db0..34203076b24 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -1436,9 +1436,9 @@ component is used as the target of the symlink."
1436 (unless (process-live-p proc) 1436 (unless (process-live-p proc)
1437 ;; Accept pending output. 1437 ;; Accept pending output.
1438 (while (tramp-accept-process-output proc)) 1438 (while (tramp-accept-process-output proc))
1439 (with-current-buffer (tramp-get-connection-buffer vec) 1439 (tramp-message
1440 (tramp-message vec 10 "\n%s" (buffer-string)) 1440 vec 10 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
1441 (throw 'tramp-action 'ok)))) 1441 (throw 'tramp-action 'ok)))
1442 1442
1443(defun tramp-smb-handle-set-file-acl (filename acl-string) 1443(defun tramp-smb-handle-set-file-acl (filename acl-string)
1444 "Like `set-file-acl' for Tramp files." 1444 "Like `set-file-acl' for Tramp files."
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 6da00f812da..0309b6b0227 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -453,12 +453,13 @@ the result will be a local, non-Tramp, file name."
453 (if (file-directory-p (expand-file-name f directory)) 453 (if (file-directory-p (expand-file-name f directory))
454 (file-name-as-directory f) 454 (file-name-as-directory f)
455 f)) 455 f))
456 (with-current-buffer (tramp-get-connection-buffer v) 456 (delq
457 (delq 457 nil
458 nil 458 (mapcar
459 (mapcar 459 (lambda (l) (and (not (string-match-p "^[[:space:]]*$" l)) l))
460 (lambda (l) (and (not (string-match-p "^[[:space:]]*$" l)) l)) 460 (split-string
461 (split-string (buffer-string) "\n" 'omit))))))))) 461 (tramp-get-buffer-string (tramp-get-connection-buffer v))
462 "\n" 'omit))))))))
462 463
463(defun tramp-sudoedit-handle-file-readable-p (filename) 464(defun tramp-sudoedit-handle-file-readable-p (filename)
464 "Like `file-readable-p' for Tramp files." 465 "Like `file-readable-p' for Tramp files."
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 552788b4615..7dddd84e556 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1866,6 +1866,20 @@ version, the function does nothing."
1866 :user ,(file-remote-p default-directory 'user) 1866 :user ,(file-remote-p default-directory 'user)
1867 :machine ,(file-remote-p default-directory 'host))))) 1867 :machine ,(file-remote-p default-directory 'host)))))
1868 1868
1869(defsubst tramp-get-default-directory (buffer)
1870 "Return `default-directory' of BUFFER."
1871 (buffer-local-value 'default-directory buffer))
1872
1873(put #'tramp-get-default-directory 'tramp-suppress-trace t)
1874
1875(defsubst tramp-get-buffer-string (&optional buffer)
1876 "Return contents of BUFFER.
1877If BUFFER is not a buffer, return the contents of `current-buffer'."
1878 (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
1879 (substring-no-properties (buffer-string))))
1880
1881(put #'tramp-get-buffer-string 'tramp-suppress-trace t)
1882
1869(defun tramp-debug-buffer-name (vec) 1883(defun tramp-debug-buffer-name (vec)
1870 "A name for the debug buffer for VEC." 1884 "A name for the debug buffer for VEC."
1871 (let ((method (tramp-file-name-method vec)) 1885 (let ((method (tramp-file-name-method vec))
@@ -2084,12 +2098,15 @@ applicable)."
2084 ;; Append connection buffer for error messages, if exists. 2098 ;; Append connection buffer for error messages, if exists.
2085 (when (= level 1) 2099 (when (= level 1)
2086 (ignore-errors 2100 (ignore-errors
2087 (with-current-buffer 2101 (setq fmt-string (concat fmt-string "\n%s")
2088 (if (processp vec-or-proc) 2102 arguments
2089 (process-buffer vec-or-proc) 2103 (append
2090 (tramp-get-connection-buffer vec-or-proc 'dont-create)) 2104 arguments
2091 (setq fmt-string (concat fmt-string "\n%s") 2105 `(,(tramp-get-buffer-string
2092 arguments (append arguments (list (buffer-string))))))) 2106 (if (processp vec-or-proc)
2107 (process-buffer vec-or-proc)
2108 (tramp-get-connection-buffer
2109 vec-or-proc 'dont-create))))))))
2093 ;; Translate proc to vec. 2110 ;; Translate proc to vec.
2094 (when (processp vec-or-proc) 2111 (when (processp vec-or-proc)
2095 (setq vec-or-proc (process-get vec-or-proc 'vector)))) 2112 (setq vec-or-proc (process-get vec-or-proc 'vector))))
@@ -2151,8 +2168,8 @@ an input event arrives. The other arguments are passed to `tramp-error'."
2151 (and (tramp-file-name-p vec-or-proc) 2168 (and (tramp-file-name-p vec-or-proc)
2152 (tramp-get-connection-buffer vec-or-proc)))) 2169 (tramp-get-connection-buffer vec-or-proc))))
2153 (vec (or (and (tramp-file-name-p vec-or-proc) vec-or-proc) 2170 (vec (or (and (tramp-file-name-p vec-or-proc) vec-or-proc)
2154 (and buf (with-current-buffer buf 2171 (and buf (tramp-dissect-file-name
2155 (tramp-dissect-file-name default-directory)))))) 2172 (tramp-get-default-directory buf))))))
2156 (unwind-protect 2173 (unwind-protect
2157 (apply #'tramp-error vec-or-proc signal fmt-string arguments) 2174 (apply #'tramp-error vec-or-proc signal fmt-string arguments)
2158 ;; Save exit. 2175 ;; Save exit.
@@ -2567,8 +2584,7 @@ Must be handled by the callers."
2567 ;; PROC. 2584 ;; PROC.
2568 ((member operation '(file-notify-rm-watch file-notify-valid-p)) 2585 ((member operation '(file-notify-rm-watch file-notify-valid-p))
2569 (when (processp (nth 0 args)) 2586 (when (processp (nth 0 args))
2570 (with-current-buffer (process-buffer (nth 0 args)) 2587 (tramp-get-default-directory (process-buffer (nth 0 args)))))
2571 default-directory)))
2572 ;; VEC. 2588 ;; VEC.
2573 ((member operation '(tramp-get-remote-gid tramp-get-remote-uid)) 2589 ((member operation '(tramp-get-remote-gid tramp-get-remote-uid))
2574 (tramp-make-tramp-file-name (nth 0 args))) 2590 (tramp-make-tramp-file-name (nth 0 args)))
@@ -2845,7 +2861,7 @@ whether HANDLER is to be called. Add operations defined in
2845(defun tramp-command-completion-p (_symbol buffer) 2861(defun tramp-command-completion-p (_symbol buffer)
2846 "A predicate for Tramp interactive commands. 2862 "A predicate for Tramp interactive commands.
2847They are completed by \"M-x TAB\" only if the current buffer is remote." 2863They are completed by \"M-x TAB\" only if the current buffer is remote."
2848 (with-current-buffer buffer (tramp-tramp-file-p default-directory))) 2864 (tramp-tramp-file-p (tramp-get-default-directory buffer)))
2849 2865
2850(defun tramp-connectable-p (vec-or-filename) 2866(defun tramp-connectable-p (vec-or-filename)
2851 "Check, whether it is possible to connect the remote host w/o side-effects. 2867 "Check, whether it is possible to connect the remote host w/o side-effects.
@@ -4705,8 +4721,8 @@ of."
4705 (save-window-excursion 4721 (save-window-excursion
4706 (pop-to-buffer (tramp-get-connection-buffer vec)) 4722 (pop-to-buffer (tramp-get-connection-buffer vec))
4707 (read-string (match-string 0))))))) 4723 (read-string (match-string 0)))))))
4708 (with-current-buffer (tramp-get-connection-buffer vec) 4724 (tramp-message
4709 (tramp-message vec 6 "\n%s" (buffer-string))) 4725 vec 6 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
4710 (tramp-message vec 3 "Sending login name `%s'" user) 4726 (tramp-message vec 3 "Sending login name `%s'" user)
4711 (tramp-send-string vec (concat user tramp-local-end-of-line))) 4727 (tramp-send-string vec (concat user tramp-local-end-of-line)))
4712 t) 4728 t)
@@ -4749,8 +4765,8 @@ See also `tramp-action-yn'."
4749 (unless (yes-or-no-p (match-string 0)) 4765 (unless (yes-or-no-p (match-string 0))
4750 (kill-process proc) 4766 (kill-process proc)
4751 (throw 'tramp-action 'permission-denied)) 4767 (throw 'tramp-action 'permission-denied))
4752 (with-current-buffer (tramp-get-connection-buffer vec) 4768 (tramp-message
4753 (tramp-message vec 6 "\n%s" (buffer-string))) 4769 vec 6 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
4754 (tramp-send-string vec (concat "yes" tramp-local-end-of-line))) 4770 (tramp-send-string vec (concat "yes" tramp-local-end-of-line)))
4755 t) 4771 t)
4756 4772
@@ -4763,8 +4779,8 @@ See also `tramp-action-yesno'."
4763 (unless (y-or-n-p (match-string 0)) 4779 (unless (y-or-n-p (match-string 0))
4764 (kill-process proc) 4780 (kill-process proc)
4765 (throw 'tramp-action 'permission-denied)) 4781 (throw 'tramp-action 'permission-denied))
4766 (with-current-buffer (tramp-get-connection-buffer vec) 4782 (tramp-message
4767 (tramp-message vec 6 "\n%s" (buffer-string))) 4783 vec 6 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
4768 (tramp-send-string vec (concat "y" tramp-local-end-of-line))) 4784 (tramp-send-string vec (concat "y" tramp-local-end-of-line)))
4769 t) 4785 t)
4770 4786
@@ -4772,15 +4788,15 @@ See also `tramp-action-yesno'."
4772 "Tell the remote host which terminal type to use. 4788 "Tell the remote host which terminal type to use.
4773The terminal type can be configured with `tramp-terminal-type'." 4789The terminal type can be configured with `tramp-terminal-type'."
4774 (tramp-message vec 5 "Setting `%s' as terminal type." tramp-terminal-type) 4790 (tramp-message vec 5 "Setting `%s' as terminal type." tramp-terminal-type)
4775 (with-current-buffer (tramp-get-connection-buffer vec) 4791 (tramp-message
4776 (tramp-message vec 6 "\n%s" (buffer-string))) 4792 vec 6 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
4777 (tramp-send-string vec (concat tramp-terminal-type tramp-local-end-of-line)) 4793 (tramp-send-string vec (concat tramp-terminal-type tramp-local-end-of-line))
4778 t) 4794 t)
4779 4795
4780(defun tramp-action-confirm-message (_proc vec) 4796(defun tramp-action-confirm-message (_proc vec)
4781 "Return RET in order to confirm the message." 4797 "Return RET in order to confirm the message."
4782 (with-current-buffer (tramp-get-connection-buffer vec) 4798 (tramp-message
4783 (tramp-message vec 6 "\n%s" (buffer-string))) 4799 vec 6 "\n%s" (tramp-get-buffer-string (tramp-get-connection-buffer vec)))
4784 (tramp-send-string vec tramp-local-end-of-line) 4800 (tramp-send-string vec tramp-local-end-of-line)
4785 t) 4801 t)
4786 4802
@@ -5068,8 +5084,8 @@ nil."
5068 ;; The process could have timed out, for example due to session 5084 ;; The process could have timed out, for example due to session
5069 ;; timeout of sudo. The process buffer does not exist any longer then. 5085 ;; timeout of sudo. The process buffer does not exist any longer then.
5070 (ignore-errors 5086 (ignore-errors
5071 (with-current-buffer (process-buffer proc) 5087 (tramp-message
5072 (tramp-message proc 6 "\n%s" (buffer-string)))) 5088 proc 6 "\n%s" (tramp-get-buffer-string (process-buffer proc))))
5073 (unless found 5089 (unless found
5074 (if timeout 5090 (if timeout
5075 (tramp-error 5091 (tramp-error
@@ -5590,14 +5606,12 @@ are written with verbosity of 6."
5590 (with-temp-buffer 5606 (with-temp-buffer
5591 (setq result 5607 (setq result
5592 (apply 5608 (apply
5593 #'call-process program infile (or destination t) display args)) 5609 #'call-process program infile (or destination t) display args)
5610 output (tramp-get-buffer-string destination))
5594 ;; `result' could also be an error string. 5611 ;; `result' could also be an error string.
5595 (when (stringp result) 5612 (when (stringp result)
5596 (setq error result 5613 (setq error result
5597 result 1)) 5614 result 1)))
5598 (with-current-buffer
5599 (if (bufferp destination) destination (current-buffer))
5600 (setq output (buffer-string))))
5601 (error 5615 (error
5602 (setq error (error-message-string err) 5616 (setq error (error-message-string err)
5603 result 1))) 5617 result 1)))
@@ -5628,10 +5642,10 @@ are written with verbosity of 6."
5628 ;; `result' could also be an error string. 5642 ;; `result' could also be an error string.
5629 (when (stringp result) 5643 (when (stringp result)
5630 (signal 'file-error (list result))) 5644 (signal 'file-error (list result)))
5631 (with-current-buffer (if (bufferp buffer) buffer (current-buffer)) 5645 (if (zerop result)
5632 (if (zerop result) 5646 (tramp-message vec 6 "%d" result)
5633 (tramp-message vec 6 "%d" result) 5647 (tramp-message
5634 (tramp-message vec 6 "%d\n%s" result (buffer-string))))) 5648 vec 6 "%d\n%s" result (tramp-get-buffer-string buffer))))
5635 (error 5649 (error
5636 (setq result 1) 5650 (setq result 1)
5637 (tramp-message vec 6 "%d\n%s" result (error-message-string err)))) 5651 (tramp-message vec 6 "%d\n%s" result (error-message-string err))))
@@ -5696,7 +5710,7 @@ Invokes `password-read' if available, `read-passwd' else."
5696 (format "%s for %s " (capitalize (match-string 1)) key)))) 5710 (format "%s for %s " (capitalize (match-string 1)) key))))
5697 (auth-source-creation-prompts `((secret . ,pw-prompt))) 5711 (auth-source-creation-prompts `((secret . ,pw-prompt)))
5698 ;; Use connection-local value. 5712 ;; Use connection-local value.
5699 (auth-sources (with-current-buffer (process-buffer proc) auth-sources)) 5713 (auth-sources (buffer-local-value 'auth-sources (process-buffer proc)))
5700 ;; We suspend the timers while reading the password. 5714 ;; We suspend the timers while reading the password.
5701 (stimers (with-timeout-suspend)) 5715 (stimers (with-timeout-suspend))
5702 auth-info auth-passwd) 5716 auth-info auth-passwd)
@@ -5922,5 +5936,11 @@ BODY is the backend specific code."
5922;; and friends, for most of the handlers this is the major 5936;; and friends, for most of the handlers this is the major
5923;; difference between the different backends. Other handlers but 5937;; difference between the different backends. Other handlers but
5924;; *-process-file would profit from this as well. 5938;; *-process-file would profit from this as well.
5939;;
5940;; * Implement file name abbreviation for a different user. That is,
5941;; (abbreviate-file-name "/ssh:user1@host:/home/user2") =>
5942;; "/ssh:user1@host:~user2".
5943;;
5944;; * Implement file name abbreviation for user and host names.
5925 5945
5926;;; tramp.el ends here 5946;;; tramp.el ends here
diff --git a/lisp/startup.el b/lisp/startup.el
index 0065bf85d17..88708f0670b 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1840,18 +1840,22 @@ a face or button specification."
1840 (unless concise 1840 (unless concise
1841 (fancy-splash-insert 1841 (fancy-splash-insert
1842 :face 'variable-pitch 1842 :face 'variable-pitch
1843 "\nTo start... " 1843 "\nTo start...\t"
1844 :link `("Open a File" 1844 :link `("Open a File"
1845 ,(lambda (_button) (call-interactively 'find-file)) 1845 ,(lambda (_button) (call-interactively 'find-file))
1846 "Specify a new file's name, to edit the file") 1846 "Specify a new file's name, to edit the file")
1847 " " 1847 "\t\t"
1848 :link `("Open Home Directory" 1848 :link `("Open Home Directory"
1849 ,(lambda (_button) (dired "~")) 1849 ,(lambda (_button) (dired "~"))
1850 "Open your home directory, to operate on its files") 1850 "Open your home directory, to operate on its files")
1851 " " 1851 "\n\t"
1852 :link `("Customize Startup" 1852 :link `("Customize Startup"
1853 ,(lambda (_button) (customize-group 'initialization)) 1853 ,(lambda (_button) (customize-group 'initialization))
1854 "Change initialization settings including this screen") 1854 "Change initialization settings including this screen")
1855 "\t"
1856 :link `("Explore Packages"
1857 ,(lambda (_button) (call-interactively 'package-list-packages))
1858 "Explore, install and remove Emacs packages (requires Internet connection)")
1855 "\n")) 1859 "\n"))
1856 (fancy-splash-insert 1860 (fancy-splash-insert
1857 :face 'variable-pitch "To quit a partially entered command, type " 1861 :face 'variable-pitch "To quit a partially entered command, type "
diff --git a/src/image.c b/src/image.c
index f8188292d46..2c33a8eaa21 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3187,14 +3187,6 @@ gui_put_x_image (struct frame *f, Emacs_Pix_Container pimg,
3187 XFreeGC (FRAME_X_DISPLAY (f), gc); 3187 XFreeGC (FRAME_X_DISPLAY (f), gc);
3188#endif /* HAVE_X_WINDOWS */ 3188#endif /* HAVE_X_WINDOWS */
3189 3189
3190#ifdef HAVE_NTGUI
3191#if 0 /* I don't think this is necessary looking at where it is used. */
3192 HDC hdc = get_frame_dc (f);
3193 SetDIBits (hdc, pixmap, 0, height, pimg->data, &(pimg->info), DIB_RGB_COLORS);
3194 release_frame_dc (f, hdc);
3195#endif
3196#endif /* HAVE_NTGUI */
3197
3198#ifdef HAVE_NS 3190#ifdef HAVE_NS
3199 eassert (pimg == pixmap); 3191 eassert (pimg == pixmap);
3200 ns_retain_object (pimg); 3192 ns_retain_object (pimg);
@@ -11124,16 +11116,6 @@ x_kill_gs_process (Pixmap pixmap, struct frame *f)
11124 free_color_table (); 11116 free_color_table ();
11125#endif 11117#endif
11126 XDestroyImage (ximg); 11118 XDestroyImage (ximg);
11127
11128#if 0 /* This doesn't seem to be the case. If we free the colors
11129 here, we get a BadAccess later in image_clear_image when
11130 freeing the colors. */
11131 /* We have allocated colors once, but Ghostscript has also
11132 allocated colors on behalf of us. So, to get the
11133 reference counts right, free them once. */
11134 if (img->ncolors)
11135 x_free_colors (f, img->colors, img->ncolors);
11136#endif
11137 } 11119 }
11138 else 11120 else
11139 image_error ("Cannot get X image of `%s'; colors will not be freed", 11121 image_error ("Cannot get X image of `%s'; colors will not be freed",
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el
index b82afd353cf..7e51f820b70 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -851,8 +851,7 @@ byte-compiled. Run with dynamic binding."
851 (byte-compile-file ,(ert-resource-file file)) 851 (byte-compile-file ,(ert-resource-file file))
852 (ert-info ((buffer-string) :prefix "buffer: ") 852 (ert-info ((buffer-string) :prefix "buffer: ")
853 (,(if reverse 'should-not 'should) 853 (,(if reverse 'should-not 'should)
854 (re-search-forward ,(string-replace " " "[ \n]+" re-warning) 854 (re-search-forward ,re-warning nil t))))))
855 nil t))))))
856 855
857(bytecomp--define-warning-file-test "error-lexical-var-with-add-hook.el" 856(bytecomp--define-warning-file-test "error-lexical-var-with-add-hook.el"
858 "add-hook.*lexical var") 857 "add-hook.*lexical var")
@@ -980,7 +979,7 @@ byte-compiled. Run with dynamic binding."
980 979
981(bytecomp--define-warning-file-test 980(bytecomp--define-warning-file-test
982 "warn-wide-docstring-defun.el" 981 "warn-wide-docstring-defun.el"
983 "wider than .* characters") 982 "Warning: docstring wider than .* characters")
984 983
985(bytecomp--define-warning-file-test 984(bytecomp--define-warning-file-test
986 "warn-wide-docstring-defvar.el" 985 "warn-wide-docstring-defvar.el"
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
index ee52d831d69..e881e46a2d1 100644
--- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
@@ -325,6 +325,7 @@
325 ()) 325 ())
326 326
327(with-suppressed-warnings ((obsolete defmethod) 327(with-suppressed-warnings ((obsolete defmethod)
328 (obsolete defgeneric)
328 (obsolete next-method-p) 329 (obsolete next-method-p)
329 (obsolete call-next-method)) 330 (obsolete call-next-method))
330 (defmethod initialize-instance :after ((_this eitest-Jb) &rest _slots) 331 (defmethod initialize-instance :after ((_this eitest-Jb) &rest _slots)
diff --git a/test/lisp/mail/mail-utils-tests.el b/test/lisp/mail/mail-utils-tests.el
index 5b54f2440c7..f75de5c620c 100644
--- a/test/lisp/mail/mail-utils-tests.el
+++ b/test/lisp/mail/mail-utils-tests.el
@@ -85,7 +85,8 @@
85 "foo@example.org\\|bar@example.org\\|baz@example.org"))) 85 "foo@example.org\\|bar@example.org\\|baz@example.org")))
86 86
87(ert-deftest mail-utils-tests-mail-rfc822-time-zone () 87(ert-deftest mail-utils-tests-mail-rfc822-time-zone ()
88 (should (stringp (mail-rfc822-time-zone (current-time))))) 88 (with-suppressed-warnings ((obsolete mail-rfc822-time-zone))
89 (should (stringp (mail-rfc822-time-zone (current-time))))))
89 90
90(ert-deftest mail-utils-test-mail-rfc822-date/contains-year () 91(ert-deftest mail-utils-test-mail-rfc822-date/contains-year ()
91 (should (string-match (rx " 20" digit digit " ") 92 (should (string-match (rx " 20" digit digit " ")
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index c047f666dae..a572ff83d3f 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -219,8 +219,7 @@ is greater than 10.
219 (when (and (null tramp--test-instrument-test-case-p) (> tramp-verbose 3)) 219 (when (and (null tramp--test-instrument-test-case-p) (> tramp-verbose 3))
220 (untrace-all) 220 (untrace-all)
221 (dolist (buf (tramp-list-tramp-buffers)) 221 (dolist (buf (tramp-list-tramp-buffers))
222 (with-current-buffer buf 222 (message ";; %s\n%s" buf (tramp-get-buffer-string buf))
223 (message ";; %s\n%s" buf (buffer-string)))
224 (kill-buffer buf)))))) 223 (kill-buffer buf))))))
225 224
226(defsubst tramp--test-message (fmt-string &rest arguments) 225(defsubst tramp--test-message (fmt-string &rest arguments)
@@ -5054,8 +5053,8 @@ INPUT, if non-nil, is a string sent to the process."
5054 "echo foo >&2; echo bar" (current-buffer) stderr) 5053 "echo foo >&2; echo bar" (current-buffer) stderr)
5055 (should (string-equal "bar\n" (buffer-string))) 5054 (should (string-equal "bar\n" (buffer-string)))
5056 ;; Check stderr. 5055 ;; Check stderr.
5057 (with-current-buffer stderr 5056 (should
5058 (should (string-equal "foo\n" (buffer-string))))) 5057 (string-equal "foo\n" (tramp-get-buffer-string stderr))))
5059 5058
5060 ;; Cleanup. 5059 ;; Cleanup.
5061 (ignore-errors (kill-buffer stderr)))))) 5060 (ignore-errors (kill-buffer stderr))))))