Visuwesh <[email protected]> writes:

> Please find attached patch.  There is still a small problem with it that
> I'm not sure how to resolve.  Consider the following scenario:
>
>   1. Set Calc's language to Mathematica by doing C-x * * d M
>   2. Then with the patch applied, go to an Org mode buffer and write out
>      the following
>      #+BEGIN_SRC calc :language mathematica
>      B_12
>      #+END_SRC
>   3. Evaluate the source block and witness an error
> ...
> I could always set calc-language to normal regardless of the presence of
> the :language parameter but that would be a breaking change.  I think
> erroring out when an incorrect language value is given is the better
> solution, WDYT?  Something like
>
>     Invalid language parameter; accepted values are c, pascal, ...

Yes, it would make sense.
I am not sure what would be breaking about this.

> +    ;; This is needed so that we can force Org to print the results as
> +    ;; "raw" format.  If there's a colon in front, then C-c C-x C-l
> +    ;; does not do the job anymore.
> +    (when (equal "latex" (cdr (assq :language params)))
> +      (cl-callf (lambda (v) (nconc v '("raw")))
> +          (alist-get :result-params params)))))

This is awkward. What about extending ob-core itself. There is already
:results code, but it does not allow custom languages. We may extend that.

>  +(defun org-babel-calc--format-lang (result params old-lang old-lang-opt)
>  +  "Return RESULT as per the Calc language given in PARAMS.
>  +This resets the Calc language back to OLD-LANG, and the options to
>  +OLD-LANG-OPT."
>  +  (calc-set-language (org-babel-calc--valid-lang-p params))
>  +  (prog1
>  +      (if (eq calc-language 'latex)
>  +          (concat "\\begin{equation*}\n"
>  +                  (calc-eval result)
>  +                  "\n\\end{equation*}")
>  +        (calc-eval result))

What about inline src blocks?

-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

Reply via email to