diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 18116229337..9385b023392 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -5025,11 +5025,13 @@ tramp-handle-make-process ?h (or host "") ?u (or user "") ?p (or port "") ?c (format-spec (or options "") (format-spec-make ?t tmpfile)) ?d (or device "") ?a (or pta "") ?l "")))) + ;; Suppress `internal-default-process-sentinel', which is + ;; set when :sentinel is nil. (Bug#71049) p (make-process :name name :buffer buffer :command (append `(,login-program) login-args command) :coding coding :noquery noquery :connection-type connection-type - :sentinel sentinel :stderr stderr)) + :sentinel (or sentinel #'ignore) :stderr stderr)) ;; Set filter. Prior Emacs 29.1, it doesn't work reliably ;; to provide it as `make-process' argument when filter is ;; t. See Bug#51177. diff --git a/lisp/simple.el b/lisp/simple.el index bcd26da13ed..714accab1af 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4863,11 +4863,14 @@ display-message-or-buffer ;; We have a sentinel to prevent insertion of a termination message ;; in the buffer itself, and to set the point in the buffer when ;; `shell-command-dont-erase-buffer' is non-nil. +;; For remote shells, `process-command' does not serve the proper shell +;; command. We use process property `remote-command' instead. (Bug#71049) (defun shell-command-sentinel (process signal) (when (memq (process-status process) '(exit signal)) (shell-command-set-point-after-cmd (process-buffer process)) (message "%s: %s." - (car (cdr (cdr (process-command process)))) + (car (cdr (cdr (or (process-get process 'remote-command) + (process-command process))))) (substring signal 0 -1)))) (defun shell-command-on-region (start end command