From mboxrd@z Thu Jan 1 00:00:00 1970 From: stardiviner Subject: Re: [PATCH] support insert link without write result to :file link Date: Thu, 29 Mar 2018 00:11:00 +0800 Message-ID: <55a201ba-d990-ede1-cf12-a6a3814d1979@gmail.com> References: <87zi2u90f6.fsf@luisa.c0t0d0s0.de> <11516348-a184-6f9e-6a10-15fe4b06d0fb@gmail.com> <87o9jarq4l.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2FEC5537D2DEB2F7A609ADB3" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37583) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f1DfM-0006xF-Hq for emacs-orgmode@gnu.org; Wed, 28 Mar 2018 12:11:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f1DfH-0001va-F1 for emacs-orgmode@gnu.org; Wed, 28 Mar 2018 12:11:12 -0400 Received: from mail-pl0-x236.google.com ([2607:f8b0:400e:c01::236]:39301) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f1DfH-0001tm-1W for emacs-orgmode@gnu.org; Wed, 28 Mar 2018 12:11:07 -0400 Received: by mail-pl0-x236.google.com with SMTP id s24-v6so1867621plq.6 for ; Wed, 28 Mar 2018 09:11:07 -0700 (PDT) In-Reply-To: <87o9jarq4l.fsf@nicolasgoaziou.fr> Content-Language: en-US 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" To: Nicolas Goaziou Cc: emacs-orgmode@gnu.org This is a multi-part message in MIME format. --------------2FEC5537D2DEB2F7A609ADB3 Content-Type: multipart/alternative; boundary="------------7D42C71FE4AAD94D83C33932" --------------7D42C71FE4AAD94D83C33932 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Hi, Nicolas, I have problem in my code. Even after many times and 5 hourse Edebug on ob-core.el code. Still can't find out where is wrong. After Edebug, just know somewhere is wrong. here is my info: - [ ] probelm is on ~org-babel-merge-params~, ~info~ is generated from it, but it removed ~link~ in ~:results~. - [ ] org-babel-execute-src-block   - [ ] (org-babel-get-src-block-info)     - [ ] (let* ((info .. (apply #'org-babel-merge-params ...))))  -> info -> :results file replace (been removed here)       - because ~:results link file replace~ are merged into ~:results file replace~?         - where does the ~file~ comes from?           - from ~:file~ header argument?             - which function get this?       - [ ] org-babel-process-params info I added my latest patches in attachment (include test, and added your suggested modification). Can you help me on my code? On 03/27/2018 02:26 PM, Nicolas Goaziou wrote: > Hello, > > stardiviner writes: > >> I added this patch to handle posted question case. >> >> This will improve Org-mode links with org-babel resulta lot. Make >> Org-mode can insert link as user want at many places. >> >> Hope can be merged. > Thank you. > > However, before thinking about merging it, it requires documentation and > tests. You also need to update `org-babel-common-header-args-w-values'. > > Also, there are still failing tests from the last change to :results > behaviour in master, if you ever have time to look into it. > > Regards, > --------------7D42C71FE4AAD94D83C33932 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

Hi, Nicolas, I have problem in my code. Even after many times and 5 hourse Edebug on ob-core.el code. Still can't find out where is wrong. After Edebug, just know somewhere is wrong. here is my info:

- [ ] probelm is on ~org-babel-merge-params~, ~info~ is generated from it, but it removed ~link~ in ~:results~.
- [ ] org-babel-execute-src-block
  - [ ] (org-babel-get-src-block-info)
    - [ ] (let* ((info .. (apply #'org-babel-merge-params ...))))  -> info -> :results file replace (been removed here)
      - because ~:results link file replace~ are merged into ~:results file replace~?
        - where does the ~file~ comes from?
          - from ~:file~ header argument?
            - which function get this?
      - [ ] org-babel-process-params info


I added my latest patches in attachment (include test, and added your suggested modification). Can you help me on my code?


On 03/27/2018 02:26 PM, Nicolas Goaziou wrote:
Hello,

stardiviner <numbchild@gmail.com> writes:

I added this patch to handle posted question case.

This will improve Org-mode links with org-babel resulta lot. Make
Org-mode can insert link as user want at many places.

Hope can be merged.
Thank you.

However, before thinking about merging it, it requires documentation and
tests. You also need to update `org-babel-common-header-args-w-values'.

Also, there are still failing tests from the last change to :results
behaviour in master, if you ever have time to look into it.

Regards,


--------------7D42C71FE4AAD94D83C33932-- --------------2FEC5537D2DEB2F7A609ADB3 Content-Type: text/x-patch; name="0001-ob-core.el-org-babel-execute-src-block-support-resul.patch" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename*0="0001-ob-core.el-org-babel-execute-src-block-support-resul.pa"; filename*1="tch" >From a4da247355dd0f347843b06d9e64d26d210a4b0a Mon Sep 17 00:00:00 2001 From: stardiviner Date: Tue, 27 Mar 2018 10:50:03 +0800 Subject: [PATCH 1/2] * ob-core.el (org-babel-execute-src-block) support :results link. - doc/org.texi (:results): support :results link type. Don't write non-empty result to :file when result type is link. Use it like this: wget -c "http://ben.akrin.com/crackzor/crackzor_1.0.c.gz" [[file:data/tmp/crackzor_1.0.c.gz]] - testing/lisp/test-ob.el (test-ob/result-file-link-type-header-argument) add test. --- doc/org.texi | 3 +++ etc/ORG-NEWS | 9 +++++++++ lisp/ob-core.el | 13 ++++++++----- testing/lisp/test-ob.el | 17 +++++++++++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index aaa180401..903f52143 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -16204,6 +16204,9 @@ example: @code{:results value verbatim}. @item @code{file} Interpret as path to a file. Inserts a link to the file. Usage example: @code{:results value file}. +@item @code{link} +Interpret as path to a file. Inserts a link to the file. Usage example: +@code{:results value link}. @end itemize @subsubheading Format diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index d479b982c..e2a02d0a2 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -113,6 +113,15 @@ now sort according to the locale’s collation rules instead of by code-point. ** New features +*** add ~:results link~ support for org-babel +This will support only insert file link without writing result to file. +Like this case: +#+begin_src shell :dir "data/tmp" :results link :file "crackzor_1.0.c.gz" +wget -c "http://ben.akrin.com/crackzor/crackzor_1.0.c.gz" +#+end_src + +#+RESULTS: +[[file:data/tmp/crackzor_1.0.c.gz]] *** Add ~:session~ support of ob-js for js-comint #+begin_src js :session "*Javascript REPL*" console.log("stardiviner") diff --git a/lisp/ob-core.el b/lisp/ob-core.el index e33168278..d2c1b70f3 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -413,7 +413,7 @@ then run `org-babel-switch-to-session'." (padline . ((yes no))) (post . :any) (prologue . :any) - (results . ((file list vector table scalar verbatim) + (results . ((file link list vector table scalar verbatim) (raw html latex org code pp drawer) (replace silent none append prepend) (output value))) @@ -707,10 +707,13 @@ block." ;; If non-empty result and :file then write to :file. (when file (let ((graphics? - (member "graphics" (cdr (assq :result-params params))))) - ;; Handle :results graphics :file case. Don't - ;; write result to file if result is graphics. - (when (and result (not graphics?)) + (member "graphics" (cdr (assq :result-params params)))) + (file-link? + (member "link" (cdr (assq :result-params params))))) + ;; If :results are special types like `link', `graphics' etc. + ;; don't write result to :file. literately only + ;; insert link to :file. + (when (and result (not graphics?) (not file-link?)) (with-temp-file file (insert (org-babel-format-result result (cdr (assq :sep params))))))) diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index a4a590d6a..93eb7736a 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -996,6 +996,23 @@ trying to find the :END: marker." (should (search-forward "[[file:foo][bar]]" nil t)) (should (search-forward "[[file:foo][foo]]" nil t)))) +(ert-deftest test-ob/result-file-link-type-header-argument () + "Ensure that the result is a link to a file. +The file is just a link to :file value. Inhibit non-empty result write to :file." + (org-test-with-temp-text + "#+begin_src sh :results link :file \"test.txt\" + echo \"hello\" > test.txt + echo \"test\" + #+end_src" + (org-babel-execute-src-block) + (goto-char (point-min)) + (should (search-forward "[[file:test.txt]]" nil t)) + (should (with-temp-buffer + (insert-file-contents "test.txt") + (string-match + "hello.*" + (buffer-substring-no-properties (point-min) (point-max))))))) + (ert-deftest test-ob/inline-src_blk-preceded-punct-preceded-by-point () (let ((test-line ".src_emacs-lisp[ :results verbatim ]{ \"x\" }") (org-babel-inline-result-wrap "=%s=")) -- 2.16.3 --------------2FEC5537D2DEB2F7A609ADB3 Content-Type: text/x-patch; name="0002-ob-core.el-add-graphics-to-result-type.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0002-ob-core.el-add-graphics-to-result-type.patch" >From cacac1895c4871e122c16965edf6aad938c783dd Mon Sep 17 00:00:00 2001 From: stardiviner Date: Tue, 27 Mar 2018 20:03:48 +0800 Subject: [PATCH 2/2] * ob-core.el: add graphics to result type. enhance for commit 39bd69b08. - ob-core.el (org-babel-common-header-args-w-values): add keyword graphics. - doc/org.texi (:results): add document for :results value graphics. - testing/lisp/test-ob.el (test-ob/result-graphics-file-link-type-header-argument) add test. --- doc/org.texi | 3 +++ lisp/ob-core.el | 2 +- testing/lisp/test-ob.el | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/org.texi b/doc/org.texi index 903f52143..be5d6ba2b 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -16207,6 +16207,9 @@ Interpret as path to a file. Inserts a link to the file. Usage example: @item @code{link} Interpret as path to a file. Inserts a link to the file. Usage example: @code{:results value link}. +@item @code{graphics} +Interpret as path to a graphic image file. Inserts a link to the file. Usage +example: @code{:results value graphics}. @end itemize @subsubheading Format diff --git a/lisp/ob-core.el b/lisp/ob-core.el index d2c1b70f3..ef67bc8a7 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -413,7 +413,7 @@ then run `org-babel-switch-to-session'." (padline . ((yes no))) (post . :any) (prologue . :any) - (results . ((file link list vector table scalar verbatim) + (results . ((file graphics link list vector table scalar verbatim) (raw html latex org code pp drawer) (replace silent none append prepend) (output value))) diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index 93eb7736a..11b88275b 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -1013,6 +1013,23 @@ The file is just a link to :file value. Inhibit non-empty result write to :file. "hello.*" (buffer-substring-no-properties (point-min) (point-max))))))) +(ert-deftest test-ob/result-graphics-file-link-type-header-argument () + "Ensure that the result is a link to a graphic image file. +The file is just a link to :file value. Inhibit non-empty result write to :file." + (org-test-with-temp-text + "#+begin_src sh :results value graphics :file \"test.png\" + echo \"hello\" > test.png + echo \"test\" + #+end_src" + (org-babel-execute-src-block) + (goto-char (point-min)) + (should (search-forward "[[file:test.png]]" nil t)) + (should (with-temp-buffer + (insert-file-contents "test.png") + (string-match + "hello.*" + (buffer-substring-no-properties (point-min) (point-max))))))) + (ert-deftest test-ob/inline-src_blk-preceded-punct-preceded-by-point () (let ((test-line ".src_emacs-lisp[ :results verbatim ]{ \"x\" }") (org-babel-inline-result-wrap "=%s=")) -- 2.16.3 --------------2FEC5537D2DEB2F7A609ADB3--