[BUG] ":sep" header argument doesn't work in ob-shell [9.6.21 ( @ /home/aragaer/.config/emacs/elpa/org-9.6.21/)]
On current master using ":sep" header argument does not work as expected and records are always split on whitespaces. For example: #+begin_src sh :sep "\t" echo hello world echo test #+end_src #+RESULTS: | hello | world | | test | | It looks like the issue is in the org-babel-sh-evaluate function, where at the end it passes the result to the org-babel-import-elist-from-file function for processing. Replacing the code with the following seems to fix the issue: (let ((tmp-file (org-babel-temp-file "sh-")) (sep (or (cdr (assq :sep params)) "\t"))) (with-temp-file tmp-file (insert results)) (org-babel-import-elisp-from-file tmp-file sep)) Emacs : GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, X toolkit) of 2024-03-02 Package: Org mode version 9.6.21 ( @ /home/aragaer/.config/emacs/elpa/org-9.6.21/)
Re: [BUG] ":sep" header argument doesn't work in ob-shell [9.6.21 ( @ /home/aragaer/.config/emacs/elpa/org-9.6.21/)]
I assumed that https://org-babel.readthedocs.io/ is at least somewhat related to org documentation. Looks like I was wrong. The :separator parameter seems to be related to how block's :var arguments are formatted when passing to the shell script. In most cases separator is not passed to `org-babel-import-elisp-from-file' -- looks like only some languages set it to some fixed value. Matt writes: > On Tue, 12 Mar 2024 10:27:46 +0100 Ilya Konovalov wrote --- > > > > After some usage I found that this exact patch breaks > > `org-babel-import-elisp-from-file's own separator detection. It looks > > like it's better to leave it as `nil' unless specified. > > Thanks for taking the time to look into it. According to my notes, > :sep and :separator don't work for anything beyond basic table layout. > I'm not familiar with org-table and there isn't much documentation on > those keywords in the manual. The :sep keyword shows up for Texinfo > and LaTeX. It looks like :sep is used for export? It's not clear to me > how they're supposed to work with shell block output, or if that was > even a consideration at all. > > They were added in > https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=a60a83fbb65a368bb96ea6aaf1db20706b3e99c5 > claiming "better handling of table in shell scripts" So, it looks like > their inclusion was intentional. > > Maybe someone has deeper insights?
Re: [BUG] ":sep" header argument doesn't work in ob-shell [9.6.21 ( @ /home/aragaer/.config/emacs/elpa/org-9.6.21/)]
After some usage I found that this exact patch breaks `org-babel-import-elisp-from-file's own separator detection. It looks like it's better to leave it as `nil' unless specified. Ilya Konovalov writes: > On current master using ":sep" header argument does not work as > expected and records are always split on whitespaces. For example: > > #+begin_src sh :sep "\t" > echo hello world > echo test > #+end_src > > #+RESULTS: > | hello | world | > | test | | > > It looks like the issue is in the org-babel-sh-evaluate function, where > at the end it passes the result to the org-babel-import-elist-from-file > function for processing. Replacing the code with the following seems to > fix the issue: > > (let ((tmp-file (org-babel-temp-file "sh-")) > (sep (or (cdr (assq :sep params)) "\t"))) > (with-temp-file tmp-file (insert results)) > (org-babel-import-elisp-from-file tmp-file sep)) > > Emacs : GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, X toolkit) > of 2024-03-02 > Package: Org mode version 9.6.21 ( @ > /home/aragaer/.config/emacs/elpa/org-9.6.21/)