[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: [babel] Executing sh-code
From: |
Sébastien Vauban |
Subject: |
[Orgmode] Re: [babel] Executing sh-code |
Date: |
Sun, 29 Nov 2009 22:03:50 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) |
Hi Eric and Dan,
Dan Davison wrote:
> Sébastien Vauban <address@hidden> writes:
>> Torsten Wagner wrote:
>>> This works for me (I changed the folder name). There is a error line in my
>>> message buffer:
>>>
>>> executing Shell source code block
>>> ~/babel
>>> save-current-buffer: Wrong type argument: char-or-string-p, nil
>>>
>>> but the relevent part runs ok. My shell buffer depict to the new folder
>>> after execution:
>>>
>>> address@hidden ~ %
>>> cd ~/babel
>>> echo 'org_babel_sh_eoe'
>>> address@hidden ~ % cd ~/babel
>>> address@hidden ~/babel (git)-[master] %
>
>> It stops working only when I add `:session "whatever"' after the `sh'
>> specification.
>>
>> That's the only difference between when it works and when it doesn't.
>
> You discovered a tricky bug in the session-based evaluation of shell blocks.
Just for my information (maybe being able to be more accurate next time, or
even finding a solution myself), how do you debug such a problem?
With which debugger, with tracing/stepping? With stack trace?
> I've just pushed up a fix which fixes this bug and generally cleans up the
> code executing sh blocks inside of interactive sessions. Please try the
> latest and see if the problem persists.
Just did: git pull && make clean && make.
> I'm also seeing problems with shell session evaluation but having
> trouble debugging. My current suspicion is that the prompt characters
> are the problem here (something which differs between you and Torsten)
> Could you try using a prompt that ends in '% '? E.g. on ubuntu at least
> I can set the prompt in emacs shell sessions with a line like
>
> PS1='\w % '
>
> in ~/.emacs_bash.
I did this in my .bashrc:
--8<---------------cut here---------------start------------->8---
# my format of the prompt
function my_prompt_command ()
{
# colorful prompt, based on whether the previous command succeeded or not
if [[ $? -eq 0 ]]; then
HILIT=${GREEN}
else
HILIT=${RED}
fi
# replace the $HOME prefix by ~ in the current directory
if [[ $HOME == ${PWD:0:${#HOME}} ]]; then
NEWPWD="~${PWD:${#HOME}}"
else
NEWPWD=$PWD
fi
# how many characters of the $PWD should be kept
local pwd_max_length=15
if [[ ${#NEWPWD} -gt $pwd_max_length ]]; then
local pwd_offset=$(( ${#NEWPWD} - $pwd_max_length ))
NEWPWD="...${NEWPWD:$pwd_offset:$pwd_max_length}"
fi
# prompt character
if [[ $(whoami) = "root" ]]; then
local PROMPTCHAR="#"
else
local PROMPTCHAR=">"
fi
case $TERM in
# TODO use `date' instead of escape characters...
dumb)
# Emacs shell mode and Tramp among others
setenv PS1 "address@hidden ${NEWPWD}${PROMPTCHAR}"
;;
emacs | *)
# Emacs is handled in the same way as other terminals, if it's
# configured to use `ansi-color' to translate ANSI escape
# sequences into colored faces
setenv PS1 "\w % " ;; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;;
esac
}
--8<---------------cut here---------------end--------------->8---
> Also, please pull latest git as we have just fixed an unrelated bug in
> shell session-based evaluation.
Now, with the new version and the prompt change, what's the result?
Let's assume the following Org file:
--8<---------------cut here---------------start------------->8---
#+begin_src sh :session "ecm"
cd ~/Personal
#+end_src
#+begin_src sh :session "ecm"
ls *.org
#+end_src
--8<---------------cut here---------------end--------------->8---
I C-c C-c the first snippet. Nothing special, except it doesn't hang anymore.
So, it already looks much better.
Second snippet. C-c C-c. There, it still hangs ;-((
Though, C-x C-b shows me the contents of the "ecm" buffer:
--8<---------------cut here---------------start------------->8---
cd ~/Personal
~ % ~/Personal % ls *.org
echo 'org_babel_sh_eoe'
Bookmarks.org Scorpios.org Tickler.org
Voice-over-IP.org*
Home.org* Succession.org Using-startx-for-Remote-Display.org refile.org
~/Personal % org_babel_sh_eoe
~/Personal %
--8<---------------cut here---------------end--------------->8---
Looks closer to what it should...
Still a little problem, though, as explained above.
BTW, what's the impact of specifying "sh" or "bash" for the snippet?
Best regards,
Seb
--
Sébastien Vauban
- [Orgmode] [babel] Executing sh-code, Sébastien Vauban, 2009/11/25
- [Orgmode] Re: [babel] Executing sh-code, Sébastien Vauban, 2009/11/27
- Re: [Orgmode] [babel] Executing sh-code, Torsten Wagner, 2009/11/27
- [Orgmode] Re: [babel] Executing sh-code, Sébastien Vauban, 2009/11/27
- Re: [Orgmode] Re: [babel] Executing sh-code, Eric Schulte, 2009/11/27
- Re: [Orgmode] Re: [babel] Executing sh-code, Dan Davison, 2009/11/27
- [Orgmode] Re: [babel] Executing sh-code,
Sébastien Vauban <=
- Re: [Orgmode] Re: [babel] Executing sh-code, Eric Schulte, 2009/11/30
- Re: [Orgmode] Re: [babel] Executing sh-code, Nick Dokos, 2009/11/30
- Re: [Orgmode] Re: [babel] Executing sh-code, Eric Schulte, 2009/11/30