From 22edd4f3a9382eb3dca5558b13053cba6fedf7ce Mon Sep 17 00:00:00 2001 From: fpi Date: Tue, 18 Oct 2022 17:27:54 +0200 Subject: [PATCH 1/2] org-babel-lob-get-info: Add no-eval argument * lisp/ob-lob.el (org-babel-lob-get-info): Add no-eval argument to prevent recursive evaluation of lisp values in parameters. --- lisp/ob-exp.el | 2 +- lisp/ob-lob.el | 13 +++++++++---- lisp/ob-ref.el | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el index de7e1e3a3..67ed22f84 100644 --- a/lisp/ob-exp.el +++ b/lisp/ob-exp.el @@ -29,7 +29,7 @@ (require 'ob-core) -(declare-function org-babel-lob-get-info "ob-lob" (&optional datum)) +(declare-function org-babel-lob-get-info "ob-lob" (&optional datum no-eval)) (declare-function org-element-at-point "org-element" (&optional pom cached-only)) (declare-function org-element-context "org-element" (&optional element)) (declare-function org-element-property "org-element" (property element)) diff --git a/lisp/ob-lob.el b/lisp/ob-lob.el index c6be8be80..10822accb 100644 --- a/lisp/ob-lob.el +++ b/lisp/ob-lob.el @@ -119,10 +119,15 @@ after REF in the Library of Babel." (cdr (assoc-string ref org-babel-library-of-babel)))))))) ;;;###autoload -(defun org-babel-lob-get-info (&optional datum) +(defun org-babel-lob-get-info (&optional datum no-eval) "Return internal representation for Library of Babel function call. Consider DATUM, when provided, or element at point otherwise. + +When optional argument NO-EVAL is non-nil, Babel does not resolve +remote variable references; a process which could likely result +in the execution of other code blocks, and do not evaluate Lisp +values in parameters. Return nil when not on an appropriate location. Otherwise return a list compatible with `org-babel-get-src-block-info', which @@ -144,16 +149,16 @@ see." org-babel-default-lob-header-args (append (org-with-point-at begin - (org-babel-params-from-properties language)) + (org-babel-params-from-properties language no-eval)) (list (org-babel-parse-header-arguments - (org-element-property :inside-header context)) + (org-element-property :inside-header context) no-eval) (let ((args (org-element-property :arguments context))) (and args (mapcar (lambda (ref) (cons :var ref)) (org-babel-ref-split-args args)))) (org-babel-parse-header-arguments - (org-element-property :end-header context))))) + (org-element-property :end-header context) no-eval)))) nil (org-element-property :name context) begin diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el index 2b4a16aea..2bba2071e 100644 --- a/lisp/ob-ref.el +++ b/lisp/ob-ref.el @@ -57,7 +57,7 @@ (require 'org-macs) (require 'cl-lib) -(declare-function org-babel-lob-get-info "ob-lob" (&optional datum)) +(declare-function org-babel-lob-get-info "ob-lob" (&optional datum no-eval)) (declare-function org-element-at-point "org-element" (&optional pom cached-only)) (declare-function org-element-property "org-element" (property element)) (declare-function org-element-type "org-element" (element)) -- 2.20.1