unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Spencer Baugh <sbaugh@janestreet.com>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: 63539@debbugs.gnu.org
Subject: bug#63539: 29.0.90; TRAMP fails to detect shell prompts containing ]
Date: Wed, 17 May 2023 10:04:28 -0400	[thread overview]
Message-ID: <ier8rdnoxzn.fsf@janestreet.com> (raw)
In-Reply-To: <87wn17ukrq.fsf@gmx.de> (Michael Albinus's message of "Wed, 17 May 2023 15:53:29 +0200")

[-- Attachment #1: Type: text/plain, Size: 1401 bytes --]

Michael Albinus <michael.albinus@gmx.de> writes:

> Spencer Baugh <sbaugh@janestreet.com> writes:
>
> Hi Spencer,
>
>>>> One can work around this by configuring the machine's prompt, but []
>>>> seem relatively common in prompts (in my personal experience), and it
>>>> would be nice if this worked by default.  (So far I've only seen [] in
>>>> custom prompts but there are probably some OSs/distributions with [] in
>>>> their prompt by default)
>>>
>>> What's wrong with the recipe for your remote .profile:
>>>
>>> [[ $TERM == "dumb" ]] && PS1='$ ' && return
>>>
>>> The Tramp manual gives an extended version of the recipe, which handles
>>> also the zsh line editing problem, but you see the idea.
>>
>> [] seem relatively common in prompts (in my personal experience), and it
>> would be nice if this worked by default.
>
> "[whatever]" is covered in Tramp. What isn't covered is your use case
> "[user@hostname] foo/bar/path $".

Again I want to note that "[user@hostname] $" is the default on
RHEL/Fedora machines, which surely are common enough that TRAMP to them
needs to be supported out of the box in Emacs.  And indeed they work
today in Emacs, they only break when the prompt is colored.

How about this patch, which is a separate enhancement to
shell-prompt-pattern to allow it to match colored prompts?  Which is a
useful feature for shell-mode, and as a side-effect fixes this bug.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Support-color-in-shell-prompt-pattern.patch --]
[-- Type: text/x-patch, Size: 1310 bytes --]

From 0f1c35e4c05e021198d75d94ad2dc6b987cc72a2 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@janestreet.com>
Date: Wed, 17 May 2023 09:59:48 -0400
Subject: [PATCH] Support color in shell-prompt-pattern

shell-prompt-pattern works well, but it doesn't support escape
characters coming after the prompt like tramp-shell-prompt-pattern.
This change adds matching for escape characters, and also switches it
to be defined with rx for clarity.  As a side-effect, this fixes
Bug#63539

* lisp/shell.el (shell-prompt-pattern): Switch to rx and allow color
codes after the prompt.
---
 lisp/shell.el | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lisp/shell.el b/lisp/shell.el
index 5cf108bfa3b..16cd5d42998 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -122,9 +122,12 @@ shell-dumb-shell-regexp
   :type 'regexp
   :group 'shell)
 
-(defcustom shell-prompt-pattern "^[^#$%>\n]*[#$%>] *"
+(defcustom shell-prompt-pattern (rx (* (not (any "#$%>\n")))
+      (any "#$%>")
+      (* blank)
+      ;; Escape characters.
+      (* "^[[" (* (any ";" digit)) alpha (* blank)))
   "Regexp to match prompts in the inferior shell.
-Defaults to \"^[^#$%>\\n]*[#$%>] *\", which works pretty well.
 This variable is used to initialize `comint-prompt-regexp' in the
 shell buffer.
 
-- 
2.30.2


  reply	other threads:[~2023-05-17 14:04 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-16 16:40 bug#63539: 29.0.90; TRAMP fails to detect shell prompts containing ] Spencer Baugh
2023-05-16 17:53 ` Michael Albinus
2023-05-16 19:28   ` Spencer Baugh
2023-05-16 20:06     ` Spencer Baugh
2023-05-17 14:07       ` Michael Albinus
2023-05-17 14:59         ` Spencer Baugh
2023-05-17 15:39           ` Michael Albinus
2023-05-17 16:56             ` Michael Albinus
2023-05-17 17:28               ` Michael Albinus
2023-05-17 18:08                 ` Spencer Baugh
2023-05-17 18:41                   ` Michael Albinus
2023-05-18 15:49                     ` Michael Albinus
2023-05-20 10:18                       ` Michael Albinus
2023-05-22 17:30                         ` Spencer Baugh
2023-05-22 19:17                           ` Michael Albinus
2023-05-22 19:45                             ` Spencer Baugh
2023-05-23 13:49                               ` Michael Albinus
2023-05-23 14:34                                 ` Spencer Baugh
2023-05-23 16:31                                   ` Michael Albinus
2023-05-25  7:36                                     ` Michael Albinus
2023-05-17 13:53     ` Michael Albinus
2023-05-17 14:04       ` Spencer Baugh [this message]
2023-05-17 14:12         ` Michael Albinus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ier8rdnoxzn.fsf@janestreet.com \
    --to=sbaugh@janestreet.com \
    --cc=63539@debbugs.gnu.org \
    --cc=michael.albinus@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).