Re: [O] org alters output of bash code blocks when run with :session

2018-03-14 Thread Nicolas Goaziou
Hello,

Tyler Smith  writes:

> I can't see any straightforward way to modify ob-shell sessions
> without also changing regular shell-mode. So I wonder if the easiest
> way to address this would be to create a new mode derived from
> shell-mode, ('ob-shell-mode')? That would give us a way to modify the
> prompt code inside babel without interfering with shell-mode.

Creating a new mode doesn't sound like the easiest way.

What about the following suggestion, from a link I posted in this
thread:

Thanks for the examples. Anything goes, of course, but I'm hoping for a
tighter integration. Maybe a :prompt param to sh source blocks, which
sets the prompt in a session, and which also manipulates
`comint-prompt-regexp' or `shell-prompt-pattern' local in the session 
buffer.

Or a mechanism like in Tramp, where the shell prompt is set to a random
string not expected in the shell (see `tramp-end-of-output'), and
`comint-prompt-regexp' or `shell-prompt-pattern' are adapted
automatically local in the session buffer.

Regards,

-- 
Nicolas Goaziou0x80A93738



Re: [O] org alters output of bash code blocks when run with :session

2018-03-13 Thread Tyler Smith
On Mon, Feb 26, 2018, at 6:27 AM, Nicolas Goaziou wrote:
> Tyler Smith  writes:
> >
> > How do I force the babel session to leave the output alone, and print
> > it verbatim into the org file?
> 
> It may be related to other problems related to prompt in shell sessions.
> See for example
> ,
> , and for
> step forward a solution
> .
> 
> Patches welcome!

It looks like ob-shell sets up sessions just by calling `shell`, which means 
all the user's customizations for shell-mode are automatically applied. This 
includes setting the prompt (e.g., from .emacs.d/init_bash.sh), as well as the 
value of `comint-prompt-regexp`.

I can't see any straightforward way to modify ob-shell sessions without also 
changing regular shell-mode. So I wonder if the easiest way to address this 
would be to create a new mode derived from shell-mode, ('ob-shell-mode')? That 
would give us a way to modify the prompt code inside babel without interfering 
with shell-mode.

If that sounds sensible I can put together a patch for ob-shell.el. Let me know 
what you think.

Best,

Tyler



Re: [O] org alters output of bash code blocks when run with :session

2018-02-26 Thread Nicolas Goaziou
Hello,

Tyler Smith  writes:

> I am running a short bash command from an org mode code block, using
> the program `fold` to wrap it at 60 characters. If I run the code
> without a session argument, the results display as expected. However,
> when I set the session argument (which I have to do in the context of
> the long literate analysis I'm doing), some of the output characters
> don't appear.
>
> Steps to reproduce:
>
> emacs -Q
>
> Open the following file and execute each code block in turn:
>
> +
>
> #+BEGIN_SRC elisp setup
> (org-babel-do-load-languages
>  'org-babel-load-languages
>  '((shell . t)))
> #+END_SRC
>
> 
> #+RESULTS:
> 
>
> #+BEGIN_SRC bash no session :results replace verbatim
>  echo 
> '8,,CEFGDF,,,CC,CF:,,C8CFGFCF@G+FF:B3CDFGGGFGGCFDGGGFCF:,FF9>FEC,FFDGGDGFDFFEEFGEGC5>5?C*CGGF+3:*<7*2>+*<9CGCD::C=*@DCFCFFGG  | fold -w 60
> #+END_SRC
>
> 
> #+RESULTS:
> : 8,,CEFGDF,,,CC,CF:,,C8CFGFGG
> : GGCF@G+FF:B3CDFGGGFGGCFD
> : GGGFCF:,FF9>FEC,FFDGGDGFDFFEEFGE
> : GC5>5?C*CGGF+3:*<7*2>+*<9CGCD::C=*@DCFCFFGG 
>
> #+BEGIN_SRC bash session :results replace verbatim :session my-session
>  echo 
> '8,,CEFGDF,,,CC,CF:,,C8CFGFCF@G+FF:B3CDFGGGFGGCFDGGGFCF:,FF9>FEC,FFDGGDGFDFFEEFGEGC5>5?C*CGGF+3:*<7*2>+*<9CGCD::C=*@DCFCFFGG  | fold -w 60
> #+END_SRC
>
> 
> #+RESULTS:
> : 8,,CEFGDF,,,CC,CF:,,C8CFGFGG
> : GGCF@G+FF:B3CDFGGGFGGCFD
> : FEC,FFDGGDGFDFFEEFGE
> : 5?C*CGGF+3:*<7*2>+*<9CGCD::C=*@DCFCFFGG +
>
> Notice the difference between the two bash results blocks. In the
> first, the input string is folded at column 60, without any other
> changes. In the second, a string of characters has been deleted:
>
> - `GGGFCF:,FF9>` from the beginning of the third line 
> - `GC5>` from the beginning of the fourth line
>
> The fact that the deleted strings both start at the beginning of
> a line and end with a `>` suggests that the session thinks they should
> be redirected somehow, and in the process is dropping them completely.
> However, when I look at the session buffer, the output appears as
> expected, with no missing characters.
>
> How do I force the babel session to leave the output alone, and print
> it verbatim into the org file?

It may be related to other problems related to prompt in shell sessions.
See for example
,
, and for
step forward a solution
.

Patches welcome!

Regards,

-- 
Nicolas Goaziou