From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: Bug: babel: results switch (output vs. value) has no or wrong effect for sh source block [7.7 (release_7.7.107.g7a82)] Date: Fri, 19 Aug 2011 16:46:34 -0600 Message-ID: <87pqjybpg7.fsf@gmail.com> References: <87pqk1o39w.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:50502) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QvCZC-0007KR-NY for emacs-orgmode@gnu.org; Sun, 21 Aug 2011 14:16:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QvCZB-0003uX-JT for emacs-orgmode@gnu.org; Sun, 21 Aug 2011 14:16:14 -0400 Received: from mail-yw0-f41.google.com ([209.85.213.41]:43337) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QvCZB-0003uS-CH for emacs-orgmode@gnu.org; Sun, 21 Aug 2011 14:16:13 -0400 Received: by ywm13 with SMTP id 13so3250705ywm.0 for ; Sun, 21 Aug 2011 11:16:12 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: =?utf-8?Q?Andr=C3=A1s?= Major Cc: emacs-orgmode@gnu.org Andr=C3=A1s Major writes: > Hi Eric, > >> If we did return the value of shell scripts then ":results value" would >> almost always simply return 0 (or possibly an error message). For this >> reason shell code blocks do not implement value returns, but rather will >> always collect results from STDOUT. > > I think that this unnecessarily throws away potentially useful > functionality. Example: I want to fill a table with data such that > the value of a cell depends on whether a file (whose path is specified > by another cell, for instance) exists or not. This would be most > easily done using an sh block which returns a numeric exit code. I > don't see a reason for making clandestine exceptions to the rules in > the manual and strongly suggest that the output and value options be > honoured for every language. > I do see your point, and I agree that consistent behavior between languages is of paramount importance. In fact I began working on implementing the return of error codes from shell code blocks, however I ran into the following issue. For every language, when an error is thrown babel tries to open an error buffer holding the contents of the error message. This is very useful for debugging code which lives inside of a code block -- a process which can otherwise be difficult because of the extra layer of indirection babel interposes between the programmer and the codes execution. In order to return exit codes from shell blocks babel would have to silently ignore errors in shell blocks. I would lean towards thinking that passing along error messages is more important than returning error codes, but if the community thinks differently I'm happy to change the ob-sh behavior. Unfortunately it seems that in either case the sh code blocks will need to be different than other languages either in its handling of errors or of return values. This is unavoidable due to the overloading of return values in the shell as error indicators. > > In order not to break existing Org files, I would suggest that the > default choice between value and output (when not explicitly > specified) depend on the language. With this functionality, sh code > blocks that don't specify ":results output" will still work as they > did before. > I agree, if we go this route this is the way to do it. Best -- Eric > > Andr=C3=A1s > > > --=20 Eric Schulte http://cs.unm.edu/~eschulte/