[ESS] executing Julia from org: error in ess-eval-region

Stephen Eglen @je30 @end|ng |rom c@m@@c@uk
Mon Aug 15 14:12:24 CEST 2022



ok... some progress...

a workaround is that you will need to use the following in your
.emacs -- it is simply the version from ob-julia.el with one linne added
(search for SJE).  I do not know why this alist is needed, but with
this, I can confirm that :session now works.

Can you please check?

I did however need to add two Julia Packages, DataFrames and CSV, before
it would work.  This could be better documented as it was not obvious in
the debugger.

Stephen


(defun org-babel-julia-evaluate-session
    (session body result-type result-params column-names-p)
  "Evaluate BODY in SESSION.
If RESULT-TYPE equals `output' then return standard output as a
string.  If RESULT-TYPE equals `value' then return the value of the
last statement in BODY, as elisp."
  (cl-case result-type
    (value
     (with-temp-buffer
       (setq ess-local-customize-alist t) ;;  SJE --- addition here.
       (insert (org-babel-chomp body))
       (let ((ess-local-process-name
	      (process-name (get-buffer-process session)))
	     (ess-eval-visibly-p nil))
	 (ess-eval-buffer nil)))
     (let ((tmp-file (org-babel-temp-file "julia-")))
       (org-babel-comint-eval-invisibly-and-wait-for-file
	session tmp-file
	(format org-babel-julia-write-object-command
                "ans"
		(org-babel-process-file-name tmp-file 'noquote)
                (if column-names-p "true" "false")
                ))
       (org-babel-julia-process-value-result
	(org-babel-result-cond result-params
	  (with-temp-buffer
	    (insert-file-contents tmp-file)
	    (buffer-string))
	  (org-babel-import-elisp-from-file tmp-file '(4)))
	column-names-p)))
    (output
     (mapconcat
      #'org-babel-chomp
      (butlast
       (delq nil
	     (mapcar
	      (lambda (line) (when (> (length line) 0) line))
	      (mapcar
	       (lambda (line) ;; cleanup extra prompts left in output
		 (if (string-match
		      "^\\([>+.]\\([ ][>.+]\\)*[ ]\\)"
		      (car (split-string line "\n")))
		     (substring line (match-end 1))
		   line))
	       (org-babel-comint-with-output (session org-babel-julia-eoe-output)
		 (insert (mapconcat #'org-babel-chomp
				    (list body org-babel-julia-eoe-indicator)
				    "\n"))
                 (inferior-ess-send-input))))))
      "\n"))))


On Mon, Aug 15 2022, Stephen Eglen wrote:

> ok, thanks.
>
> In the meantime, I can now replicate your error.  I'll see what I can
> debug.
>
>
> On Mon, Aug 15 2022, Fraga, Eric wrote:
>
>> On Monday, 15 Aug 2022 at 12:20, Stephen Eglen wrote:
>>> thanks.  Do you know why 'results output' is needed for Julia chunks,
>>> but not R?
>>
>> The implementation of ob-julia distributed with org, unfortunately, is
>> not complete.  There is a work-in-progress version [1] that promises to
>> fix a few things but it's not quite ready to replace the current
>> version, I believe.
>>
>> eric
>>
>> Footnotes:
>> [1]  https://github.com/nico202/ob-julia



More information about the ESS-help mailing list