emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [babel, patch] ob-octave does not catch EOE from matlabShell on


From: Mikhail Titov
Subject: Re: [O] [babel, patch] ob-octave does not catch EOE from matlabShell on MS Windows
Date: Tue, 29 May 2012 12:00:44 -0500

> -----Original Message-----
> From: Eric Schulte [mailto:address@hidden
> Sent: Monday, May 28, 2012 10:57 AM
> To: Mikhail Titov
> Cc: address@hidden
> Subject: Re: [O] [babel, patch] ob-octave does not catch EOE from
matlabShell
> on MS Windows
> 
> ...
> >>
> >> It looks like org-babel-octave-eoe-output and org-babel-octave-eoe-
> indicator
> >> were swapped around in org-babel-octave-evaluate-session .
> >>
> >> I have the following in dot emacs
> >>
> >> (setq org-babel-octave-eoe-output "
> >> ans =
> >>
> >> org_babel_eoe
> >>
> >> ")
> >
> > For the sake of completeness I'm attaching the patch. Also one should
> override
> >
> > (setq org-babel-matlab-emacs-link-wrapper-method
> >    "%s
> > if ischar(ans), fid = fopen('%s', 'w'); fprintf(fid, '%%s\\n', ans);
> fclose(fid); else, save -ascii %s ans ; end
> > delete('%s')
> > ")
> >
> > as matlabShell does not like commands split across multiple lines.
> >
> 
> Thanks for sending along the patch and the variable re-definition.

I was in the hurry and the second variable should have been 

(setq org-babel-octave-wrapper-method
  "%s
if ischar(ans), fid = fopen('%s', 'w'); fprintf(fid, '%%s\\n', ans);
fclose(fid); else, dlmwrite('%s', ans, '\\t'); end")

and not org-babel-matlab-emacs-link-wrapper-method . The only difference
from what is already in there, is that it should be a single line (with ;
delimiters). It might be a limitation of matlabShell.

>From what I understand EmacsLink is something outdated and not supported
anymore as there is matlab-emacs mode.

Also the patch was missing yet another change to use single quotes instead
of double quotes when making default figures invisible. I'm attaching the
patch I ended up using.

>  If I
> understand correctly then the patch should be applied for any system,
> but the variable definition need only be applied on windows systems.  Is
> that correct?

Unfortunately I don't have Matlab installed on my home GNU/Linux computer,
I'll see if I'm eligible and can get one.

What bugs me though is that I can't use both octave and matlab as they use
same variable (org-babel-octave-eoe-output) which should be set to different
values. In org-babel-comint-with-output macro (ob-comint.el) it is used to
check if shell/REPL is done with evaluation and ready for input. I wonder if
it is possible to generalize org-babel-octave-eoe-output for both matlab and
octave as the only difference is the bunch of newlines in Matlab output. One
may write a regexp that matches both, however "(regexp-quote
,eoe-indicator)" in aforementioned macro confuses me. So it got to be a
plain string.

M.

> Can anyone confirm that matlab/octave code blocks are still functional
> on a GNU/Linux machine after the above patch and redefinition have been
> applied?  I do not use octave/matlab myself and can't verify this.
> 
> If they don't break anything I'm happy to apply these patches.
> 
> Thanks,
> 
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte

Attachment: ob-octave_matlab_updated.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]