|
@@ -49,11 +49,52 @@
|
|
|
(declare-function tramp-file-name-user "tramp" (vec))
|
|
|
(declare-function tramp-file-name-host "tramp" (vec))
|
|
|
|
|
|
-;; add the langs/ directory to the load path
|
|
|
-(add-to-list 'load-path (expand-file-name
|
|
|
- "langs"
|
|
|
- (file-name-directory (or (buffer-file-name)
|
|
|
- load-file-name))))
|
|
|
+(defun org-babel-get-src-block-info (&optional header-vars-only)
|
|
|
+ "Get information of the current source block.
|
|
|
+
|
|
|
+Returns a list
|
|
|
+ (language body header-arguments-alist switches name function-args indent).
|
|
|
+Unless HEADER-VARS-ONLY is non-nil, any variable
|
|
|
+references provided in 'function call style' (i.e. in a
|
|
|
+parenthesised argument list following the src block name) are
|
|
|
+added to the header-arguments-alist."
|
|
|
+ (let ((case-fold-search t) head info args indent)
|
|
|
+ (if (setq head (org-babel-where-is-src-block-head))
|
|
|
+ (save-excursion
|
|
|
+ (goto-char head)
|
|
|
+ (setq info (org-babel-parse-src-block-match))
|
|
|
+ (setq indent (car (last info)))
|
|
|
+ (setq info (butlast info))
|
|
|
+ (forward-line -1)
|
|
|
+ (if (looking-at
|
|
|
+ (concat org-babel-source-name-regexp
|
|
|
+ "\\([^ ()\f\t\n\r\v]+\\)\\(\(\\(.*\\)\)\\|\\)"))
|
|
|
+ (progn
|
|
|
+ (setq info (append info (list (org-babel-clean-text-properties
|
|
|
+ (match-string 2)))))
|
|
|
+ ;; Note that e.g. "name()" and "name( )" result in
|
|
|
+ ;; ((:var . "")). We maintain that behaviour, and the
|
|
|
+ ;; resulting non-nil sixth element is relied upon in
|
|
|
+ ;; org-babel-exp-code to detect a functional-style
|
|
|
+ ;; block in those cases. However, "name" without any
|
|
|
+ ;; parentheses would result in the same thing, so we
|
|
|
+ ;; explicitly avoid that.
|
|
|
+ (if (setq args (match-string 4))
|
|
|
+ (setq info
|
|
|
+ (append info (list
|
|
|
+ (mapcar
|
|
|
+ (lambda (ref) (cons :var ref))
|
|
|
+ (org-babel-ref-split-args args))))))
|
|
|
+ (unless header-vars-only
|
|
|
+ (setf (nth 2 info)
|
|
|
+ (org-babel-merge-params (nth 5 info) (nth 2 info)))))
|
|
|
+ (setq info (append info (list nil nil))))
|
|
|
+ (append info (list indent)))
|
|
|
+ (if (save-excursion ;; inline source block
|
|
|
+ (re-search-backward "[ \f\t\n\r\v]" nil t)
|
|
|
+ (looking-at org-babel-inline-src-block-regexp))
|
|
|
+ (org-babel-parse-inline-src-block-match)
|
|
|
+ nil))))
|
|
|
|
|
|
(defun org-babel-execute-src-block-maybe ()
|
|
|
"Detect if this is context for a org-babel src-block and if so
|
|
@@ -427,52 +468,6 @@ the current subtree."
|
|
|
(org-babel-execute-buffer)
|
|
|
(widen))))
|
|
|
|
|
|
-(defun org-babel-get-src-block-info (&optional header-vars-only)
|
|
|
- "Get information of the current source block.
|
|
|
-Returns a list
|
|
|
- (language body header-arguments-alist switches name function-args indent).
|
|
|
-Unless HEADER-VARS-ONLY is non-nil, any variable
|
|
|
-references provided in 'function call style' (i.e. in a
|
|
|
-parenthesised argument list following the src block name) are
|
|
|
-added to the header-arguments-alist."
|
|
|
- (let ((case-fold-search t) head info args indent)
|
|
|
- (if (setq head (org-babel-where-is-src-block-head))
|
|
|
- (save-excursion
|
|
|
- (goto-char head)
|
|
|
- (setq info (org-babel-parse-src-block-match))
|
|
|
- (setq indent (car (last info)))
|
|
|
- (setq info (butlast info))
|
|
|
- (forward-line -1)
|
|
|
- (if (looking-at
|
|
|
- (concat org-babel-source-name-regexp
|
|
|
- "\\([^ ()\f\t\n\r\v]+\\)\\(\(\\(.*\\)\)\\|\\)"))
|
|
|
- (progn
|
|
|
- (setq info (append info (list (org-babel-clean-text-properties
|
|
|
- (match-string 2)))))
|
|
|
- ;; Note that e.g. "name()" and "name( )" result in
|
|
|
- ;; ((:var . "")). We maintain that behaviour, and the
|
|
|
- ;; resulting non-nil sixth element is relied upon in
|
|
|
- ;; org-babel-exp-code to detect a functional-style
|
|
|
- ;; block in those cases. However, "name" without any
|
|
|
- ;; parentheses would result in the same thing, so we
|
|
|
- ;; explicitly avoid that.
|
|
|
- (if (setq args (match-string 4))
|
|
|
- (setq info
|
|
|
- (append info (list
|
|
|
- (mapcar
|
|
|
- (lambda (ref) (cons :var ref))
|
|
|
- (org-babel-ref-split-args args))))))
|
|
|
- (unless header-vars-only
|
|
|
- (setf (nth 2 info)
|
|
|
- (org-babel-merge-params (nth 5 info) (nth 2 info)))))
|
|
|
- (setq info (append info (list nil nil))))
|
|
|
- (append info (list indent)))
|
|
|
- (if (save-excursion ;; inline source block
|
|
|
- (re-search-backward "[ \f\t\n\r\v]" nil t)
|
|
|
- (looking-at org-babel-inline-src-block-regexp))
|
|
|
- (org-babel-parse-inline-src-block-match)
|
|
|
- nil)))) ;; indicate that no source block was found
|
|
|
-
|
|
|
(defun org-babel-sha1-hash (&optional info)
|
|
|
"Generate an sha1 hash based on the value of info."
|
|
|
(interactive)
|