如何自动抑制`#+ RESULTS`为空输出?

问题描述 投票:1回答:1

在以下组织模式源代码段中,不会生成任何结果:

#+BEGIN_SRC ipython :session
  import numpy as np
#+END_SRC

但是,在执行时,#+RESULTS:被添加到文档中。如何在有东西显示的情况下配置org-mode / babel只插入结果?

我知道我可以使用:results silent禁用输出,但我不想根据是否生成结果来指定不同的标志。

org-mode org-babel
1个回答
0
投票

使用ob-ipython和Org 9,如果源块被配置为返回值(即默认头指定:results value),我可以使用以下hack:

; don't label empty outputs, exclude empty result blocks
(advice-add 'ob-ipython--process-response :filter-return
            (λ (contents)
               (if (string-match-p "\\`# Out\[[0-9]+\]:\n\\'" contents)
                   "" contents)))
(advice-add 'org-babel-insert-result :filter-args
            (λ (args)
               (let ((result (car args))
                     (result-params (cadr args))
                     (others (cddr args)))
                 (apply 'list
                        result
                        (if (string-empty-p result) '("silent") result-params)
                        others))))

当输出中没有任何其他东西(使结​​果为空)时,第一个建议剥离ob-ipython插入的输出标记,而第二个建议在结果为空时有效地应用:results silent。这些部件可根据您的使用情况进行不同的安排。

© www.soinside.com 2019 - 2024. All rights reserved.