On Sun, 16 Apr 2017, Michael Albinus wrote:

"Charles C. Berry" <ccbe...@ucsd.edu> writes:

Michael might get some relief by altering `shell-prompt-pattern' whose
default value is

"^[^#$%>\n]*[#$%>] *"

is tricked by the embedded `%' in the output lines

If you know the prompt will not contain `%', you could delete that.

Changing the asterisk to a plus might work (untested) or maybe adding
a blank in the first (negated) char class (also untested). Or if you
know what the prompt will be literally, use that: "^My-prompt-[$] *"

I've eval'ed (setq shell-prompt-pattern "^[^#$>\n]*[#$>] *") , this
helps. Thanks for the tip.

However, I don't want to change this globally. Is there an org mean to
change this locally just for the session?

Maybe the shell prompt could be customizable for a session in ob-sh.el?


That happens in the shell. You can do this to start your session:

#+BEGIN_SRC shell :session mysess
  PS1="MyPrompt-$ "
#+END_SRC

#+RESULTS:

and then tell emacs to locally set `comint-prompt-regexp' to a value
other than what was copied from `shell-prompt-pattern'

#+BEGIN_SRC emacs-lisp
  (save-excursion
    (pop-to-buffer "mysess")
    (setq-local comint-prompt-regexp "MyPrompt-$ "))
#+END_SRC

#+RESULTS:
: MyPrompt-$

and then it should work.

#+BEGIN_SRC shell :session mysess
  echo "a%b"
#+END_SRC

#+RESULTS:
: a%b

---

You might skip the second step and instead set `shell-prompt-pattern'
to "MyPrompt-$ ". If `comint-use-prompt-regexp' is nil, then the
`comint-prompt-regexp' is only consulted by ob-shell.el funs per the docstring of comint-use-prompt-regexp.



Chuck

Reply via email to