Hi Eric and Dan, Dan Davison wrote: > Sébastien Vauban <wxhgmqzgw...@spammotel.com> 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: >>> >>> tors...@gaijin ~ % >>> cd ~/babel >>> echo 'org_babel_sh_eoe' >>> tors...@gaijin ~ % cd ~/babel >>> tors...@gaijin ~/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 "[...@\h] ${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 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode