|
@@ -113,9 +113,9 @@ remove code block execution from C-c C-c as further protection
|
|
|
against accidental code block evaluation. The
|
|
|
`org-babel-no-eval-on-ctrl-c-ctrl-c' variable can be used to
|
|
|
remove code block execution from the C-c C-c keybinding."
|
|
|
- :group 'org-babel
|
|
|
- :version "24.1"
|
|
|
- :type '(choice boolean function))
|
|
|
+ :group 'org-babel
|
|
|
+ :version "24.1"
|
|
|
+ :type '(choice boolean function))
|
|
|
;; don't allow this variable to be changed through file settings
|
|
|
(put 'org-confirm-babel-evaluate 'safe-local-variable (lambda (x) (eq x t)))
|
|
|
|
|
@@ -419,9 +419,9 @@ then run `org-babel-pop-to-session'."
|
|
|
(noweb-sep . :any)
|
|
|
(padline . ((yes no)))
|
|
|
(results . ((file list vector table scalar verbatim)
|
|
|
- (raw org html latex code pp wrap)
|
|
|
- (replace silent append prepend)
|
|
|
- (output value)))
|
|
|
+ (raw org html latex code pp wrap)
|
|
|
+ (replace silent append prepend)
|
|
|
+ (output value)))
|
|
|
(rownames . ((no yes)))
|
|
|
(sep . :any)
|
|
|
(session . :any)
|
|
@@ -602,7 +602,7 @@ arguments and pop open the results in a preview buffer."
|
|
|
(params (setf (nth 2 info)
|
|
|
(sort (org-babel-merge-params (nth 2 info) params)
|
|
|
(lambda (el1 el2) (string< (symbol-name (car el1))
|
|
|
- (symbol-name (car el2)))))))
|
|
|
+ (symbol-name (car el2)))))))
|
|
|
(body (setf (nth 1 info)
|
|
|
(if (org-babel-noweb-p params :eval)
|
|
|
(org-babel-expand-noweb-references info) (nth 1 info))))
|
|
@@ -625,15 +625,15 @@ arguments and pop open the results in a preview buffer."
|
|
|
(number-sequence 1 (1+ l1)))))
|
|
|
(in (lambda (i j) (aref (aref dist i) j)))
|
|
|
(mmin (lambda (&rest lst) (apply #'min (remove nil lst)))))
|
|
|
- (setf (aref (aref dist 0) 0) 0)
|
|
|
- (dolist (i (number-sequence 1 l1))
|
|
|
- (dolist (j (number-sequence 1 l2))
|
|
|
- (setf (aref (aref dist i) j)
|
|
|
- (+ (if (equal (aref s1 (1- i)) (aref s2 (1- j))) 0 1)
|
|
|
- (funcall mmin (funcall in (1- i) j)
|
|
|
- (funcall in i (1- j))
|
|
|
- (funcall in (1- i) (1- j)))))))
|
|
|
- (funcall in l1 l2)))
|
|
|
+ (setf (aref (aref dist 0) 0) 0)
|
|
|
+ (dolist (i (number-sequence 1 l1))
|
|
|
+ (dolist (j (number-sequence 1 l2))
|
|
|
+ (setf (aref (aref dist i) j)
|
|
|
+ (+ (if (equal (aref s1 (1- i)) (aref s2 (1- j))) 0 1)
|
|
|
+ (funcall mmin (funcall in (1- i) j)
|
|
|
+ (funcall in i (1- j))
|
|
|
+ (funcall in (1- i) (1- j)))))))
|
|
|
+ (funcall in l1 l2)))
|
|
|
|
|
|
(defun org-babel-combine-header-arg-lists (original &rest others)
|
|
|
"Combine a number of lists of header argument names and arguments."
|
|
@@ -680,10 +680,10 @@ arguments and pop open the results in a preview buffer."
|
|
|
org-babel-common-header-args-w-values
|
|
|
(if (boundp lang-headers) (eval lang-headers) nil)))
|
|
|
(arg (org-icompleting-read
|
|
|
- "Header Arg: "
|
|
|
- (mapcar
|
|
|
- (lambda (header-spec) (symbol-name (car header-spec)))
|
|
|
- headers))))
|
|
|
+ "Header Arg: "
|
|
|
+ (mapcar
|
|
|
+ (lambda (header-spec) (symbol-name (car header-spec)))
|
|
|
+ headers))))
|
|
|
(insert ":" arg)
|
|
|
(let ((vals (cdr (assoc (intern arg) headers))))
|
|
|
(when vals
|
|
@@ -804,10 +804,10 @@ with a prefix argument then this is passed on to
|
|
|
(other-window 1)))
|
|
|
(info (org-babel-get-src-block-info))
|
|
|
(org-src-window-setup 'reorganize-frame))
|
|
|
- (save-excursion
|
|
|
- (org-babel-switch-to-session arg info))
|
|
|
- (org-edit-src-code)
|
|
|
- (funcall swap-windows)))
|
|
|
+ (save-excursion
|
|
|
+ (org-babel-switch-to-session arg info))
|
|
|
+ (org-edit-src-code)
|
|
|
+ (funcall swap-windows)))
|
|
|
|
|
|
(defmacro org-babel-do-in-edit-buffer (&rest body)
|
|
|
"Evaluate BODY in edit buffer if there is a code block at point.
|
|
@@ -1025,25 +1025,25 @@ the current subtree."
|
|
|
(sort (copy-sequence (nth 2 info))
|
|
|
(lambda (a b) (string< (car a) (car b)))))
|
|
|
(org-labels ((rm (lst)
|
|
|
- (dolist (p '("replace" "silent" "append" "prepend"))
|
|
|
- (setq lst (remove p lst)))
|
|
|
- lst)
|
|
|
- (norm (arg)
|
|
|
- (let ((v (if (and (listp (cdr arg)) (null (cddr arg)))
|
|
|
- (copy-sequence (cdr arg))
|
|
|
- (cdr arg))))
|
|
|
- (when (and v (not (and (sequencep v)
|
|
|
- (not (consp v))
|
|
|
- (= (length v) 0))))
|
|
|
- (cond
|
|
|
- ((and (listp v) ; lists are sorted
|
|
|
- (member (car arg) '(:result-params)))
|
|
|
- (sort (rm v) #'string<))
|
|
|
- ((and (stringp v) ; strings are sorted
|
|
|
- (member (car arg) '(:results :exports)))
|
|
|
- (mapconcat #'identity (sort (rm (split-string v))
|
|
|
- #'string<) " "))
|
|
|
- (t v))))))
|
|
|
+ (dolist (p '("replace" "silent" "append" "prepend"))
|
|
|
+ (setq lst (remove p lst)))
|
|
|
+ lst)
|
|
|
+ (norm (arg)
|
|
|
+ (let ((v (if (and (listp (cdr arg)) (null (cddr arg)))
|
|
|
+ (copy-sequence (cdr arg))
|
|
|
+ (cdr arg))))
|
|
|
+ (when (and v (not (and (sequencep v)
|
|
|
+ (not (consp v))
|
|
|
+ (= (length v) 0))))
|
|
|
+ (cond
|
|
|
+ ((and (listp v) ; lists are sorted
|
|
|
+ (member (car arg) '(:result-params)))
|
|
|
+ (sort (rm v) #'string<))
|
|
|
+ ((and (stringp v) ; strings are sorted
|
|
|
+ (member (car arg) '(:results :exports)))
|
|
|
+ (mapconcat #'identity (sort (rm (split-string v))
|
|
|
+ #'string<) " "))
|
|
|
+ (t v))))))
|
|
|
((lambda (hash)
|
|
|
(when (org-called-interactively-p 'interactive) (message hash)) hash)
|
|
|
(let ((it (format "%s-%s"
|
|
@@ -1304,11 +1304,11 @@ instances of \"[ \t]:\" set ALTS to '((32 9) . 58)."
|
|
|
(first= (lambda (str) (= ch (aref str 0)))))
|
|
|
(reverse
|
|
|
(org-reduce (lambda (acc el)
|
|
|
- (let ((head (car acc)))
|
|
|
- (if (and head (or (funcall last= head) (funcall first= el)))
|
|
|
- (cons (concat head el) (cdr acc))
|
|
|
- (cons el acc))))
|
|
|
- list :initial-value nil))))
|
|
|
+ (let ((head (car acc)))
|
|
|
+ (if (and head (or (funcall last= head) (funcall first= el)))
|
|
|
+ (cons (concat head el) (cdr acc))
|
|
|
+ (cons el acc))))
|
|
|
+ list :initial-value nil))))
|
|
|
|
|
|
(defun org-babel-parse-header-arguments (arg-string)
|
|
|
"Parse a string of header arguments returning an alist."
|
|
@@ -1397,20 +1397,20 @@ names."
|
|
|
Return a cons cell, the `car' of which contains the TABLE less
|
|
|
colnames, and the `cdr' of which contains a list of the column
|
|
|
names. Note: this function removes any hlines in TABLE."
|
|
|
- (org-flet ((trans (table) (apply #'mapcar* #'list table)))
|
|
|
- (let* ((width (apply 'max
|
|
|
- (mapcar (lambda (el) (if (listp el) (length el) 0)) table)))
|
|
|
- (table (trans (mapcar (lambda (row)
|
|
|
- (if (not (equal row 'hline))
|
|
|
- row
|
|
|
- (setq row '())
|
|
|
- (dotimes (n width)
|
|
|
- (setq row (cons 'hline row)))
|
|
|
- row))
|
|
|
- table))))
|
|
|
- (cons (mapcar (lambda (row) (if (equal (car row) 'hline) 'hline row))
|
|
|
- (trans (cdr table)))
|
|
|
- (remove 'hline (car table))))))
|
|
|
+ (let* ((trans (lambda (table) (apply #'mapcar* #'list table)))
|
|
|
+ (width (apply 'max
|
|
|
+ (mapcar (lambda (el) (if (listp el) (length el) 0)) table)))
|
|
|
+ (table (funcall trans (mapcar (lambda (row)
|
|
|
+ (if (not (equal row 'hline))
|
|
|
+ row
|
|
|
+ (setq row '())
|
|
|
+ (dotimes (n width)
|
|
|
+ (setq row (cons 'hline row)))
|
|
|
+ row))
|
|
|
+ table))))
|
|
|
+ (cons (mapcar (lambda (row) (if (equal (car row) 'hline) 'hline row))
|
|
|
+ (funcall trans (cdr table)))
|
|
|
+ (remove 'hline (car table)))))
|
|
|
|
|
|
(defun org-babel-put-colnames (table colnames)
|
|
|
"Add COLNAMES to TABLE if they exist."
|
|
@@ -1713,7 +1713,7 @@ following the source block."
|
|
|
(beginning-of-line 1)
|
|
|
(looking-at org-babel-lob-one-liner-regexp)))
|
|
|
(inlinep (when (org-babel-get-inline-src-block-matches)
|
|
|
- (match-end 0)))
|
|
|
+ (match-end 0)))
|
|
|
(name (if on-lob-line
|
|
|
(mapconcat #'identity (butlast (org-babel-lob-get-info)) "")
|
|
|
(nth 4 (or info (org-babel-get-src-block-info 'light)))))
|
|
@@ -1937,12 +1937,12 @@ code ---- the results are extracted in the syntax of the source
|
|
|
((member "prepend" result-params)))) ; already there
|
|
|
(setq results-switches
|
|
|
(if results-switches (concat " " results-switches) ""))
|
|
|
- (org-flet ((wrap (start finish)
|
|
|
- (goto-char end) (insert (concat finish "\n"))
|
|
|
- (goto-char beg) (insert (concat start "\n"))
|
|
|
- (goto-char end) (goto-char (point-at-eol))
|
|
|
- (setq end (point-marker)))
|
|
|
- (proper-list-p (it) (and (listp it) (null (cdr (last it))))))
|
|
|
+ (let ((wrap (lambda (start finish)
|
|
|
+ (goto-char end) (insert (concat finish "\n"))
|
|
|
+ (goto-char beg) (insert (concat start "\n"))
|
|
|
+ (goto-char end) (goto-char (point-at-eol))
|
|
|
+ (setq end (point-marker))))
|
|
|
+ (proper-list-p (lambda (it) (and (listp it) (null (cdr (last it)))))))
|
|
|
;; insert results based on type
|
|
|
(cond
|
|
|
;; do nothing for an empty result
|
|
@@ -1959,7 +1959,7 @@ code ---- the results are extracted in the syntax of the source
|
|
|
'(:splicep nil :istart "- " :iend "\n")))
|
|
|
"\n"))
|
|
|
;; assume the result is a table if it's not a string
|
|
|
- ((proper-list-p result)
|
|
|
+ ((funcall proper-list-p result)
|
|
|
(goto-char beg)
|
|
|
(insert (concat (orgtbl-to-orgtbl
|
|
|
(if (or (eq 'hline (car result))
|
|
@@ -1968,33 +1968,33 @@ code ---- the results are extracted in the syntax of the source
|
|
|
result (list result))
|
|
|
'(:fmt (lambda (cell) (format "%s" cell)))) "\n"))
|
|
|
(goto-char beg) (when (org-at-table-p) (org-table-align)))
|
|
|
- ((and (listp result) (not (proper-list-p result)))
|
|
|
+ ((and (listp result) (not (funcall proper-list-p result)))
|
|
|
(insert (format "%s\n" result)))
|
|
|
((member "file" result-params)
|
|
|
(when inlinep (goto-char inlinep))
|
|
|
(insert result))
|
|
|
(t (goto-char beg) (insert result)))
|
|
|
- (when (proper-list-p result) (goto-char (org-table-end)))
|
|
|
+ (when (funcall proper-list-p result) (goto-char (org-table-end)))
|
|
|
(setq end (point-marker))
|
|
|
;; possibly wrap result
|
|
|
(cond
|
|
|
((assoc :wrap (nth 2 info))
|
|
|
(let ((name (or (cdr (assoc :wrap (nth 2 info))) "RESULTS")))
|
|
|
- (wrap (concat "#+BEGIN_" name) (concat "#+END_" name))))
|
|
|
+ (funcall wrap (concat "#+BEGIN_" name) (concat "#+END_" name))))
|
|
|
((member "html" result-params)
|
|
|
- (wrap "#+BEGIN_HTML" "#+END_HTML"))
|
|
|
+ (funcall wrap "#+BEGIN_HTML" "#+END_HTML"))
|
|
|
((member "latex" result-params)
|
|
|
- (wrap "#+BEGIN_LaTeX" "#+END_LaTeX"))
|
|
|
+ (funcall wrap "#+BEGIN_LaTeX" "#+END_LaTeX"))
|
|
|
((member "code" result-params)
|
|
|
- (wrap (format "#+BEGIN_SRC %s%s" (or lang "none") results-switches)
|
|
|
- "#+END_SRC"))
|
|
|
+ (funcall wrap (format "#+BEGIN_SRC %s%s" (or lang "none") results-switches)
|
|
|
+ "#+END_SRC"))
|
|
|
((member "org" result-params)
|
|
|
- (wrap "#+BEGIN_ORG" "#+END_ORG"))
|
|
|
+ (funcall wrap "#+BEGIN_ORG" "#+END_ORG"))
|
|
|
((member "raw" result-params)
|
|
|
(goto-char beg) (if (org-at-table-p) (org-cycle)))
|
|
|
((member "wrap" result-params)
|
|
|
- (wrap ":RESULTS:" ":END:"))
|
|
|
- ((and (not (proper-list-p result))
|
|
|
+ (funcall wrap ":RESULTS:" ":END:"))
|
|
|
+ ((and (not (funcall proper-list-p result))
|
|
|
(not (member "file" result-params)))
|
|
|
(org-babel-examplize-region beg end results-switches)
|
|
|
(setq end (point)))))
|
|
@@ -2102,33 +2102,34 @@ file's directory then expand relative links."
|
|
|
Later elements of PLISTS override the values of previous elements.
|
|
|
This takes into account some special considerations for certain
|
|
|
parameters when merging lists."
|
|
|
- (let ((results-exclusive-groups
|
|
|
- (mapcar (lambda (group) (mapcar #'symbol-name group))
|
|
|
- (cdr (assoc 'results org-babel-common-header-args-w-values))))
|
|
|
- (exports-exclusive-groups
|
|
|
- (mapcar (lambda (group) (mapcar #'symbol-name group))
|
|
|
- (cdr (assoc 'exports org-babel-common-header-args-w-values))))
|
|
|
- (variable-index 0)
|
|
|
- params results exports tangle noweb cache vars shebang comments padline)
|
|
|
- (org-flet ((e-merge (exclusive-groups &rest result-params)
|
|
|
- ;; maintain exclusivity of mutually exclusive parameters
|
|
|
- (let (output)
|
|
|
- (mapc (lambda (new-params)
|
|
|
- (mapc (lambda (new-param)
|
|
|
- (mapc (lambda (exclusive-group)
|
|
|
- (when (member new-param exclusive-group)
|
|
|
- (mapcar (lambda (excluded-param)
|
|
|
- (setq output
|
|
|
- (delete
|
|
|
- excluded-param
|
|
|
- output)))
|
|
|
- exclusive-group)))
|
|
|
- exclusive-groups)
|
|
|
- (setq output (org-uniquify
|
|
|
- (cons new-param output))))
|
|
|
- new-params))
|
|
|
- result-params)
|
|
|
- output)))
|
|
|
+ (let* ((results-exclusive-groups
|
|
|
+ (mapcar (lambda (group) (mapcar #'symbol-name group))
|
|
|
+ (cdr (assoc 'results org-babel-common-header-args-w-values))))
|
|
|
+ (exports-exclusive-groups
|
|
|
+ (mapcar (lambda (group) (mapcar #'symbol-name group))
|
|
|
+ (cdr (assoc 'exports org-babel-common-header-args-w-values))))
|
|
|
+ (variable-index 0)
|
|
|
+ (e-merge (lambda (exclusive-groups &rest result-params)
|
|
|
+ ;; maintain exclusivity of mutually exclusive parameters
|
|
|
+ (let (output)
|
|
|
+ (mapc (lambda (new-params)
|
|
|
+ (mapc (lambda (new-param)
|
|
|
+ (mapc (lambda (exclusive-group)
|
|
|
+ (when (member new-param exclusive-group)
|
|
|
+ (mapcar (lambda (excluded-param)
|
|
|
+ (setq output
|
|
|
+ (delete
|
|
|
+ excluded-param
|
|
|
+ output)))
|
|
|
+ exclusive-group)))
|
|
|
+ exclusive-groups)
|
|
|
+ (setq output (org-uniquify
|
|
|
+ (cons new-param output))))
|
|
|
+ new-params))
|
|
|
+ result-params)
|
|
|
+ output)))
|
|
|
+ params results exports tangle noweb cache vars shebang comments padline)
|
|
|
+
|
|
|
(mapc
|
|
|
(lambda (plist)
|
|
|
(mapc
|
|
@@ -2162,56 +2163,56 @@ parameters when merging lists."
|
|
|
(error "variable \"%s\" must be assigned a default value"
|
|
|
(cdr pair))))))
|
|
|
(:results
|
|
|
- (setq results (e-merge results-exclusive-groups
|
|
|
+ (setq results (funcall e-merge results-exclusive-groups
|
|
|
results
|
|
|
(split-string
|
|
|
(let ((r (cdr pair)))
|
|
|
(if (stringp r) r (eval r)))))))
|
|
|
(:file
|
|
|
(when (cdr pair)
|
|
|
- (setq results (e-merge results-exclusive-groups
|
|
|
+ (setq results (funcall e-merge results-exclusive-groups
|
|
|
results '("file")))
|
|
|
(unless (or (member "both" exports)
|
|
|
(member "none" exports)
|
|
|
(member "code" exports))
|
|
|
- (setq exports (e-merge exports-exclusive-groups
|
|
|
+ (setq exports (funcall e-merge exports-exclusive-groups
|
|
|
exports '("results"))))
|
|
|
(setq params (cons pair (assq-delete-all (car pair) params)))))
|
|
|
(:exports
|
|
|
- (setq exports (e-merge exports-exclusive-groups
|
|
|
+ (setq exports (funcall e-merge exports-exclusive-groups
|
|
|
exports (split-string (cdr pair)))))
|
|
|
(:tangle ;; take the latest -- always overwrite
|
|
|
(setq tangle (or (list (cdr pair)) tangle)))
|
|
|
(:noweb
|
|
|
- (setq noweb (e-merge
|
|
|
+ (setq noweb (funcall e-merge
|
|
|
'(("yes" "no" "tangle" "no-export"
|
|
|
"strip-export" "eval"))
|
|
|
noweb
|
|
|
(split-string (or (cdr pair) "")))))
|
|
|
(:cache
|
|
|
- (setq cache (e-merge '(("yes" "no")) cache
|
|
|
+ (setq cache (funcall e-merge '(("yes" "no")) cache
|
|
|
(split-string (or (cdr pair) "")))))
|
|
|
(:padline
|
|
|
- (setq padline (e-merge '(("yes" "no")) padline
|
|
|
+ (setq padline (funcall e-merge '(("yes" "no")) padline
|
|
|
(split-string (or (cdr pair) "")))))
|
|
|
(:shebang ;; take the latest -- always overwrite
|
|
|
(setq shebang (or (list (cdr pair)) shebang)))
|
|
|
(:comments
|
|
|
- (setq comments (e-merge '(("yes" "no")) comments
|
|
|
+ (setq comments (funcall e-merge '(("yes" "no")) comments
|
|
|
(split-string (or (cdr pair) "")))))
|
|
|
(t ;; replace: this covers e.g. :session
|
|
|
(setq params (cons pair (assq-delete-all (car pair) params))))))
|
|
|
plist))
|
|
|
- plists))
|
|
|
- (setq vars (reverse vars))
|
|
|
- (while vars (setq params (cons (cons :var (cddr (pop vars))) params)))
|
|
|
- (mapc
|
|
|
- (lambda (hd)
|
|
|
- (let ((key (intern (concat ":" (symbol-name hd))))
|
|
|
- (val (eval hd)))
|
|
|
- (setf params (cons (cons key (mapconcat 'identity val " ")) params))))
|
|
|
- '(results exports tangle noweb padline cache shebang comments))
|
|
|
- params))
|
|
|
+ plists)
|
|
|
+ (setq vars (reverse vars))
|
|
|
+ (while vars (setq params (cons (cons :var (cddr (pop vars))) params)))
|
|
|
+ (mapc
|
|
|
+ (lambda (hd)
|
|
|
+ (let ((key (intern (concat ":" (symbol-name hd))))
|
|
|
+ (val (eval hd)))
|
|
|
+ (setf params (cons (cons key (mapconcat 'identity val " ")) params))))
|
|
|
+ '(results exports tangle noweb padline cache shebang comments))
|
|
|
+ params))
|
|
|
|
|
|
(defvar *org-babel-use-quick-and-dirty-noweb-expansion* nil
|
|
|
"Set to true to use regular expressions to expand noweb references.
|
|
@@ -2228,10 +2229,10 @@ CONTEXT may be one of :tangle, :export or :eval."
|
|
|
(car as)
|
|
|
(intersect (cdr as) bs)))))
|
|
|
(intersect (case context
|
|
|
- (:tangle '("yes" "tangle" "no-export" "strip-export"))
|
|
|
- (:eval '("yes" "no-export" "strip-export" "eval"))
|
|
|
- (:export '("yes")))
|
|
|
- (split-string (or (cdr (assoc :noweb params)) "")))))
|
|
|
+ (:tangle '("yes" "tangle" "no-export" "strip-export"))
|
|
|
+ (:eval '("yes" "no-export" "strip-export" "eval"))
|
|
|
+ (:export '("yes")))
|
|
|
+ (split-string (or (cdr (assoc :noweb params)) "")))))
|
|
|
|
|
|
(defun org-babel-expand-noweb-references (&optional info parent-buffer)
|
|
|
"Expand Noweb references in the body of the current source code block.
|
|
@@ -2270,13 +2271,14 @@ block but are passed literally to the \"example-block\"."
|
|
|
(comment (string= "noweb" (cdr (assoc :comments (nth 2 info)))))
|
|
|
(rx-prefix (concat "\\(" org-babel-src-name-regexp "\\|"
|
|
|
":noweb-ref[ \t]+" "\\)"))
|
|
|
- (new-body "") index source-name evaluate prefix blocks-in-buffer)
|
|
|
- (org-flet ((nb-add (text) (setq new-body (concat new-body text)))
|
|
|
- (c-wrap (text)
|
|
|
+ (new-body "")
|
|
|
+ (nb-add (lambda (text) (setq new-body (concat new-body text))))
|
|
|
+ (c-wrap (lambda (text)
|
|
|
(with-temp-buffer
|
|
|
(funcall (intern (concat lang "-mode")))
|
|
|
(comment-region (point) (progn (insert text) (point)))
|
|
|
(org-babel-trim (buffer-string)))))
|
|
|
+ index source-name evaluate prefix blocks-in-buffer)
|
|
|
(with-temp-buffer
|
|
|
(insert body) (goto-char (point-min))
|
|
|
(setq index (point))
|
|
@@ -2290,75 +2292,75 @@ block but are passed literally to the \"example-block\"."
|
|
|
(beginning-of-line 1) (point)))))
|
|
|
;; add interval to new-body (removing noweb reference)
|
|
|
(goto-char (match-beginning 0))
|
|
|
- (nb-add (buffer-substring index (point)))
|
|
|
+ (funcall nb-add (buffer-substring index (point)))
|
|
|
(goto-char (match-end 0))
|
|
|
(setq index (point))
|
|
|
- (nb-add
|
|
|
+ (funcall nb-add
|
|
|
(with-current-buffer parent-buffer
|
|
|
(save-restriction
|
|
|
(widen)
|
|
|
- (mapconcat ;; interpose PREFIX between every line
|
|
|
- #'identity
|
|
|
- (split-string
|
|
|
- (if evaluate
|
|
|
- (let ((raw (org-babel-ref-resolve source-name)))
|
|
|
- (if (stringp raw) raw (format "%S" raw)))
|
|
|
- (or
|
|
|
- ;; retrieve from the library of babel
|
|
|
- (nth 2 (assoc (intern source-name)
|
|
|
- org-babel-library-of-babel))
|
|
|
- ;; return the contents of headlines literally
|
|
|
- (save-excursion
|
|
|
- (when (org-babel-ref-goto-headline-id source-name)
|
|
|
- (org-babel-ref-headline-body)))
|
|
|
- ;; find the expansion of reference in this buffer
|
|
|
- (let ((rx (concat rx-prefix source-name "[ \t\n]"))
|
|
|
- expansion)
|
|
|
+ (mapconcat ;; interpose PREFIX between every line
|
|
|
+ #'identity
|
|
|
+ (split-string
|
|
|
+ (if evaluate
|
|
|
+ (let ((raw (org-babel-ref-resolve source-name)))
|
|
|
+ (if (stringp raw) raw (format "%S" raw)))
|
|
|
+ (or
|
|
|
+ ;; retrieve from the library of babel
|
|
|
+ (nth 2 (assoc (intern source-name)
|
|
|
+ org-babel-library-of-babel))
|
|
|
+ ;; return the contents of headlines literally
|
|
|
(save-excursion
|
|
|
- (goto-char (point-min))
|
|
|
- (if *org-babel-use-quick-and-dirty-noweb-expansion*
|
|
|
- (while (re-search-forward rx nil t)
|
|
|
- (let* ((i (org-babel-get-src-block-info 'light))
|
|
|
- (body (org-babel-expand-noweb-references i))
|
|
|
- (sep (or (cdr (assoc :noweb-sep (nth 2 i)))
|
|
|
- "\n"))
|
|
|
- (full (if comment
|
|
|
- ((lambda (cs)
|
|
|
- (concat (c-wrap (car cs)) "\n"
|
|
|
- body "\n"
|
|
|
- (c-wrap (cadr cs))))
|
|
|
- (org-babel-tangle-comment-links i))
|
|
|
- body)))
|
|
|
- (setq expansion (cons sep (cons full expansion)))))
|
|
|
- (org-babel-map-src-blocks nil
|
|
|
- (let ((i (org-babel-get-src-block-info 'light)))
|
|
|
- (when (equal (or (cdr (assoc :noweb-ref (nth 2 i)))
|
|
|
- (nth 4 i))
|
|
|
- source-name)
|
|
|
- (let* ((body (org-babel-expand-noweb-references i))
|
|
|
+ (when (org-babel-ref-goto-headline-id source-name)
|
|
|
+ (org-babel-ref-headline-body)))
|
|
|
+ ;; find the expansion of reference in this buffer
|
|
|
+ (let ((rx (concat rx-prefix source-name "[ \t\n]"))
|
|
|
+ expansion)
|
|
|
+ (save-excursion
|
|
|
+ (goto-char (point-min))
|
|
|
+ (if *org-babel-use-quick-and-dirty-noweb-expansion*
|
|
|
+ (while (re-search-forward rx nil t)
|
|
|
+ (let* ((i (org-babel-get-src-block-info 'light))
|
|
|
+ (body (org-babel-expand-noweb-references i))
|
|
|
(sep (or (cdr (assoc :noweb-sep (nth 2 i)))
|
|
|
"\n"))
|
|
|
(full (if comment
|
|
|
((lambda (cs)
|
|
|
- (concat (c-wrap (car cs)) "\n"
|
|
|
+ (concat (funcall c-wrap (car cs)) "\n"
|
|
|
body "\n"
|
|
|
- (c-wrap (cadr cs))))
|
|
|
+ (funcall c-wrap (cadr cs))))
|
|
|
(org-babel-tangle-comment-links i))
|
|
|
body)))
|
|
|
- (setq expansion
|
|
|
- (cons sep (cons full expansion)))))))))
|
|
|
- (and expansion
|
|
|
- (mapconcat #'identity (nreverse (cdr expansion)) "")))
|
|
|
- ;; possibly raise an error if named block doesn't exist
|
|
|
- (if (member lang org-babel-noweb-error-langs)
|
|
|
- (error "%s" (concat
|
|
|
- (org-babel-noweb-wrap source-name)
|
|
|
- "could not be resolved (see "
|
|
|
- "`org-babel-noweb-error-langs')"))
|
|
|
- "")))
|
|
|
- "[\n\r]") (concat "\n" prefix))))))
|
|
|
- (nb-add (buffer-substring index (point-max)))))
|
|
|
- new-body))
|
|
|
+ (setq expansion (cons sep (cons full expansion)))))
|
|
|
+ (org-babel-map-src-blocks nil
|
|
|
+ (let ((i (org-babel-get-src-block-info 'light)))
|
|
|
+ (when (equal (or (cdr (assoc :noweb-ref (nth 2 i)))
|
|
|
+ (nth 4 i))
|
|
|
+ source-name)
|
|
|
+ (let* ((body (org-babel-expand-noweb-references i))
|
|
|
+ (sep (or (cdr (assoc :noweb-sep (nth 2 i)))
|
|
|
+ "\n"))
|
|
|
+ (full (if comment
|
|
|
+ ((lambda (cs)
|
|
|
+ (concat (funcall c-wrap (car cs)) "\n"
|
|
|
+ body "\n"
|
|
|
+ (funcall c-wrap (cadr cs))))
|
|
|
+ (org-babel-tangle-comment-links i))
|
|
|
+ body)))
|
|
|
+ (setq expansion
|
|
|
+ (cons sep (cons full expansion)))))))))
|
|
|
+ (and expansion
|
|
|
+ (mapconcat #'identity (nreverse (cdr expansion)) "")))
|
|
|
+ ;; possibly raise an error if named block doesn't exist
|
|
|
+ (if (member lang org-babel-noweb-error-langs)
|
|
|
+ (error "%s" (concat
|
|
|
+ (org-babel-noweb-wrap source-name)
|
|
|
+ "could not be resolved (see "
|
|
|
+ "`org-babel-noweb-error-langs')"))
|
|
|
+ "")))
|
|
|
+ "[\n\r]") (concat "\n" prefix))))))
|
|
|
+ (funcall nb-add (buffer-substring index (point-max))))
|
|
|
+ new-body))
|
|
|
|
|
|
(defun org-babel-clean-text-properties (text)
|
|
|
"Strip all properties from text return."
|
|
@@ -2524,7 +2526,7 @@ Fixes a bug in `tramp-handle-call-process-region'."
|
|
|
(if (file-remote-p file)
|
|
|
(let (localname)
|
|
|
(with-parsed-tramp-file-name file nil
|
|
|
- localname))
|
|
|
+ localname))
|
|
|
file))
|
|
|
|
|
|
(defun org-babel-process-file-name (name &optional no-quote-p)
|