<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Thanks everyone for a great Emacs night which I found very inspiring.</div><div><br></div><div>Tonight we looked at a problem I had hit with running Emacs Lisp code “interactively” inside an org-mode buffer.</div><div><br></div><div>This is the best solution I’ve found so far (not yet tried for my example but it looks good).</div><div><div dir="ltr"><a href="https://emacs.stackexchange.com/questions/42096/running-elisp-within-an-orgmode-code-block?rq=1">https://emacs.stackexchange.com/questions/42096/running-elisp-within-an-orgmode-code-block?rq=1</a><br></div></div><div><br></div><div>We evaluate the following code block and only see the buffer name which ediff-files creates and not the interactive ediff session we expect.</div><div><div> #+begin_src elisp</div></div><div>(ediff-files “foo.s” “bar.s”)</div><div> #+end_src<br></div><div><br></div><div>Causing the problem is the Emacs macro ’save-excursion’ which saves and restores all window settings after executing the code given as its parameter.</div><div>’save-excursion’  is used by org-babel whenever it evaluates code.</div><div>In the case of ediff-files, all the correct buffers and windows are created but when the setup is finished it returns to save-excursion and everything is put back as before. [I’ve omitted stuff about the Emacs event loop which may or may not be recursive.]</div><div><br></div><div>Lisp macros are executed and expanded at compile-time and so we can’t just replace save-excursion with a new temporary function of the same name.</div><div><br></div><div>The solution shown on stackexchange is quite complicated because it must rewrite the ’save-excursion’ macro inside  ‘org-babel-execute:emacs-lisp’.</div><div>There may be a better solution if we can modify the source code of ‘org-babel-execute:emacs-lisp’.</div><div><br></div><div>Cheers</div><div>Gary</div><div><br></div></div></div></div></div></div></div></div></div></div></div>