From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 7fSADXSoc1+FTwAA0tVLHw (envelope-from ) for ; Tue, 29 Sep 2020 21:34:44 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id +LovCXSoc1//eQAA1q6Kng (envelope-from ) for ; Tue, 29 Sep 2020 21:34:44 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A0180940416 for ; Tue, 29 Sep 2020 21:34:43 +0000 (UTC) Received: from localhost ([::1]:44932 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kNNGk-0006rv-D7 for larch@yhetil.org; Tue, 29 Sep 2020 17:34:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46568) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kNNG2-0006qp-On for emacs-orgmode@gnu.org; Tue, 29 Sep 2020 17:33:58 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:32793) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kNNFz-0004U3-CY for emacs-orgmode@gnu.org; Tue, 29 Sep 2020 17:33:58 -0400 Received: by mail-pg1-x542.google.com with SMTP id o25so5001067pgm.0 for ; Tue, 29 Sep 2020 14:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=s3WYsqIFO11Bcha2976Hun36nSEgZvqfPcskbsGr9LA=; b=eXV5uUudJ4PHRsfpy9sqY/KvWtx0SKTnyXZrJqwbiuXj7mHYMHySgwg1Fo5X6Ca0+i hT0KjaS+KKNTYwqCGs+8L7rfvZw3nqmaQxobGGAXyW0+XNFhHNnnJx0pvCE8sc/vPEEc Ro2syfk7Jf4qYgfAgJD8uWIhNX+mEAp/U5E8b5ilk2OX2gS/1gISXkHBUlFYb3ZBrr5m BBaIvNMQIAox9m/VaM+eKHJn8EumNNThCgYgwjHKaPvP/p/raxjbrHkxq4vRRlPmdubG V1yhO4EdtQ9Gsk4/5lTO6/hib2ky0oLxl6Mv89z7/0Rgpzp6w42k9BphTSfRPfyJoMW3 wQNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:cc:subject:in-reply-to:references :date:message-id:mime-version; bh=s3WYsqIFO11Bcha2976Hun36nSEgZvqfPcskbsGr9LA=; b=R7aIdLjAnQd4xJRjnLWYqrVdQFC9W0c9GRBPA2jS1XnEHQe456yfWe7lGd9YwEQ2Ye W6lKNj31MBRvKjVNf6AStpwwH6qdE7jbSnAOAN072XNUhinDwCBIomAPJ95J8ItKbz5Z gx94N7N6ZIXFmMkrehR2XP0IkIV4iiNqlfNz/dBH1IL++o+sBPbkuVN1lMkgMGMQ5aGG 7ggX3Lx0Snfk73MWDac98mbyYSDMqg9/+6abCZ32VDDpnJfTdE8FTLwnhZjYYZ0Damkn aF3CJ01VJwfqNAckUe7k791rWDr40fqrohFihbGbSiq6kpdeXgQ/l18E01PdU9PoiyLu ge2g== X-Gm-Message-State: AOAM531xWxNC599Q6XwXFTdFGZDiUCDjrWEb5L2tRE1o2BQ1UcH4x+cU 4fESFAt7mDz5qfYn9vZt+VLL4cCKSYuMVg== X-Google-Smtp-Source: ABdhPJw0Sb+Xbim8XRS0qKNlcRadGellIzn4TJnGZcAEVTntm7UHqkc7gTY/JjF8ma1QCzBRXU6cxA== X-Received: by 2002:a62:19c4:0:b029:13e:d13d:a081 with SMTP id 187-20020a6219c40000b029013ed13da081mr5973000pfz.24.1601415232887; Tue, 29 Sep 2020 14:33:52 -0700 (PDT) Received: from ryzen3950 (c-73-71-89-135.hsd1.ca.comcast.net. [73.71.89.135]) by smtp.gmail.com with ESMTPSA id q18sm6684183pfg.158.2020.09.29.14.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Sep 2020 14:33:51 -0700 (PDT) From: Matt Huszagh To: Kyle Meyer Subject: Re: [PATCH] Omit file description when :file-desc has nil value In-Reply-To: <874knmvkmx.fsf@kyleam.com> References: <87r1rf35bb.fsf@kyleam.com> <87pn6uzq41.fsf@gmail.com> <877dsv3r1w.fsf@gmail.com> <87a6xfvjck.fsf@kyleam.com> <87eemrzokq.fsf@gmail.com> <874knmvkmx.fsf@kyleam.com> Date: Tue, 29 Sep 2020 14:33:47 -0700 Message-ID: <878scs2rpg.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::542; envelope-from=huszaghmatt@gmail.com; helo=mail-pg1-x542.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: , Emacs-Orgmode Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=fail (rsa verify failed) header.d=gmail.com header.s=20161025 header.b=eXV5uUud; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: 1.59 X-TUID: 3tE3USbV45MM --=-=-= Content-Type: text/plain Kyle Meyer writes: > I'd be happy for you to take what I sent and work it into a proper > patch. Here are some other loose ends in addition to the manual update > you mentioned: > > * a NEWS entry for 9.5 > > * decide whether (:file-desc . []) should be handled explicitly rather > than the current "any value that org-babel-read doesn't map to nil > or a string" > > * check that there's a test case for each :file-desc scenario Let me know if I missed anything, or any other issues. I've decided to handle the empty vector case explicitly. I think this behavior is clearer. Thanks, Matt --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-list-ob-core.el-Allow-passing-empty-vector-to-file-d.patch >From 749fd5ade6b65f9d07e87b4af44ebb1afef2bee6 Mon Sep 17 00:00:00 2001 From: Matt Huszagh Date: Tue, 29 Sep 2020 14:11:59 -0700 Subject: [PATCH] list/ob-core.el: Allow passing empty vector to :file-desc to omit description * doc/org-manual.org (Type): Document empty vector argument for file-desc. * etc/ORG-NEWS (New argument for ~file-desc~ babel header): Add entry to NEWS. * lisp/ob-core.el (org-babel--file-desc): Add new function to evaluate file description value. (org-babel-execute-src-block): Correctly evaluate file description when executing src block. (org-babel-insert-result): Correctly evaluate file description value when inserting the result of src block execution into the buffer. * testing/lisp/test-ob.el (test-ob/file-desc-header-argument): Add test case for new behavior. --- doc/org-manual.org | 8 +++++--- etc/ORG-NEWS | 13 ++++++++++++- lisp/ob-core.el | 16 +++++++++++----- testing/lisp/test-ob.el | 20 +++++++++++++++++++- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index e7d25b90e..a790f3225 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -17482,10 +17482,12 @@ default behavior is to automatically determine the result type. #+end_example #+cindex: @samp{file-desc}, header argument - The =file-desc= header argument defines the description (see - [[*Link Format]]) for the link. If =file-desc= is present but has no value, + The =file-desc= header argument defines the description (see [[*Link + Format]]) for the link. If =file-desc= is present but has no value, the =file= value is used as the link description. When this - argument is not present, the description is omitted. + argument is not present, the description is omitted. If you want to + provide the =file-disc= argument but omit the description, you can + provide it with an empty vector (i.e., :file-desc []). #+cindex: @samp{sep}, header argument By default, Org assumes that a table written to a file has diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 5dc68cba4..19f6af288 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -24,8 +24,19 @@ Earlier, IDs generated using =ts= method had a hard-coded format (i.e. =20200923 The new option allows user to customise the format. Defaults are unchanged. +*** New argument for ~file-desc~ babel header + +It is now possible to provide the =file-desc= header argument for a +babel source block but omit the description by passing an empty vector +as an argument (i.e., :file-desc []). This can be useful because +providing =file-desc= without an argument results in the result of +=file= being used in the description. Previously, the only way to +omit a file description was to omit the header argument entirely, +which made it difficult/impossible to provide a default value for +=file-desc=. + ** New features -*** =ob-python= improvements to =:return= header argument +*** =ob-python= improvements to =:return= header argument The =:return= header argument in =ob-python= now works for session blocks as well as non-session blocks. Also, it now works with the diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 7300f239e..075e3f928 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -646,6 +646,14 @@ a list with the following pattern: (replace-regexp-in-string (org-src-coderef-regexp coderef) "" expand nil nil 1)))) +(defun org-babel--file-desc (params result) + "Retrieve file description." + (pcase (assq :file-desc params) + (`nil nil) + (`(:file-desc) result) + (`(:file-desc . ,(and (pred stringp) val)) val) + (`(:file-desc . []) nil))) + ;;;###autoload (defun org-babel-execute-src-block (&optional arg info params) "Execute the current source code block. @@ -749,8 +757,7 @@ block." (let ((*this* (if (not file) result (org-babel-result-to-file file - (let ((desc (assq :file-desc params))) - (and desc (or (cdr desc) result))))))) + (org-babel--file-desc params result))))) (setq result (org-babel-ref-resolve post)) (when file (setq result-params (remove "file" result-params)))))) @@ -2257,9 +2264,8 @@ INFO may provide the values of these header arguments (in the (setq result (org-no-properties result)) (when (member "file" result-params) (setq result (org-babel-result-to-file - result (when (assq :file-desc (nth 2 info)) - (or (cdr (assq :file-desc (nth 2 info))) - result)))))) + result + (org-babel--file-desc (nth 2 info) result))))) ((listp result)) (t (setq result (format "%S" result)))) (if (and result-params (member "silent" result-params)) diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index 648e9c115..df4b13498 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -1084,7 +1084,25 @@ trying to find the :END: marker." (org-babel-execute-src-block) (goto-char (point-min)) (should (search-forward "[[file:foo][bar]]" nil t)) - (should (search-forward "[[file:foo][foo]]" nil t)))) + (should (search-forward "[[file:foo][foo]]" nil t))) + (should (string-match-p + (regexp-quote "[[file:foo]]") + (org-test-with-temp-text " +#+begin_src emacs-lisp :results file :file-desc [] + \"foo\" +#+end_src" + (org-babel-next-src-block) + (org-babel-execute-src-block) + (buffer-substring-no-properties (point-min) (point-max))))) + (should (string-match-p + (regexp-quote "[[file:foo][foo]]") + (org-test-with-temp-text " +#+begin_src emacs-lisp :results file :file-desc + \"foo\" +#+end_src" + (org-babel-next-src-block) + (org-babel-execute-src-block) + (buffer-substring-no-properties (point-min) (point-max)))))) (ert-deftest test-ob/result-file-link-type-header-argument () "Ensure that the result is a link to a file. -- 2.28.0 --=-=-=--