Leo Butler <leo.but...@umanitoba.ca> writes:
> On Sat, Sep 02 2023, Ihor Radchenko <yanta...@posteo.net> wrote: > >> Lockywolf <for_org-bugs_2023-09...@lockywolf.net> writes: >> >>> At the moment, ob-maxima has a straightforward way of evaluating >>> babel blocks, >>> >>> #+begin_src shell >>> maxima --very-quiet -r batchload\(\"/tmp/ob-maximaFOOBAR.mac\"\)\$ >>> #+end_src >>> (line 87 of ob-maxima.el), >>> >>> I suggest replacing batchload with batch(), and changing line 73 from >>> "gnuplot_close ()$" to "gnuplot_close ()$ \nquit();" >>> >>> The difference between "batch" and "batchload" is that "batch" can >>> process :lisp expressions in addition to maxima's own, and it prints >>> input/output labels. However, it is possible to customise label printing >>> from maxima's own code, and being able to evaluate :lisp just seems >>> uncontrovercially good. >>> >>> It might be that I am missing something, but batch seems a better fit >>> for Org-Babel. >> >> May you please explain more about :lisp expressions? > > This special syntax is not necessary. A recent change introduced the > function `eval_string_lisp' that removes the need for it. I.e. one can > batchload a file and execute lisp code inside a call to eval_string_lisp. > Well, necessary or not, but it existed for many years, and continues to be a valid part of maxima so far. It is surprising for new users to not see it working when quite a lot of howtos use it. (Especially the famous pattern-matching howto from Michael Talon.) Also, I would be hesitant to say that it "removes the need for it", because a "valid expression" is not the same thing as a "string". In particular, error processing should be different. >> >> Also, what is the benefit/downside of printing input/output labels? Is >> there any chance they will be caught into the source block output? If >> so, it would be a breaking change. > > Yes, his requests are breaking changes. That is why I suggested opening > up the internals a bit so that one can alter the behavior while > maintaining the same default. > > Leo Well, this change is "breaking", in the sense that it would make the output of ob-maxima be more consistent with what, say, imaxima is doing. However, I thing that there is a way to make it non-breaking, by prepending some maxima code which would make adjust maxima using "batch" to have the same output as "batchload". Something like src_maxima{programmode: true; nolabels: true;} should turn off labels if that is desired. But I would agree with Leo Butler that customisation is the best solution here. Both "full batch", and "pseudo-interactive" modes are useful. -- Your sincerely, Vladimir Nikishkin (MiEr, lockywolf) (Laptop)