From 94b78a119885faaf29db346e09be74c00db7d97f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 11 Feb 2016 00:54:12 +0100 Subject: [PATCH] ob-core: Silence byte-compiler --- lisp/ob-core.el | 137 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 33061153a..96296e038 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -39,6 +39,7 @@ (defvar org-babel-library-of-babel) (defvar org-edit-src-content-indentation) (defvar org-src-lang-modes) +(defvar org-src-preserve-indentation) (declare-function outline-show-all "outline" ()) (declare-function org-get-indentation "org" (&optional line)) @@ -213,74 +214,6 @@ list of the cdr of all the `:var' entries." (mapcar #'cdr (cl-remove-if-not (lambda (x) (eq (car x) :var)) params))) -(defun org-babel-get-src-block-info (&optional light datum) - "Extract information from a source block or inline source block. - -Optional argument LIGHT does not resolve remote variable -references; a process which could likely result in the execution -of other code blocks. - -By default, consider the block at point. However, when optional -argument DATUM is provided, extract information from that parsed -object instead. - -Return nil if point is not on a source block. Otherwise, return -a list with the following pattern: - - \(language body header-arguments-alist switches name block-head)" - (let* ((datum (or datum (org-element-context))) - (type (org-element-type datum)) - (inline (eq type 'inline-src-block))) - (when (memq type '(inline-src-block src-block)) - (let* ((lang (org-element-property :language datum)) - (lang-headers (intern - (concat "org-babel-default-header-args:" lang))) - (name (org-element-property :name datum)) - (info - (list - lang - ;; Normalize contents. In particular, remove spurious - ;; indentation and final newline character. - (let* ((value (org-element-property :value datum)) - (body (if (and (> (length value) 1) - (string-match-p "\n\\'" value)) - (substring value 0 -1) - value))) - (cond (inline - ;; Newline characters and indentation in an - ;; inline src-block are not meaningful, since - ;; they could come from some paragraph - ;; filling. Treat them as a white space. - (replace-regexp-in-string "\n[ \t]*" " " body)) - ((or org-src-preserve-indentation - (org-element-property :preserve-indent datum)) - body) - (t (org-remove-indentation body)))) - (apply #'org-babel-merge-params - (if inline org-babel-default-inline-header-args - org-babel-default-header-args) - (and (boundp lang-headers) (symbol-value lang-headers)) - (append - ;; If DATUM is provided, make sure we get node - ;; properties applicable to its location within - ;; the document. - (org-with-wide-buffer - (when datum - (goto-char (org-element-property :begin datum))) - (org-babel-params-from-properties lang)) - (mapcar #'org-babel-parse-header-arguments - (cons - (org-element-property :parameters datum) - (org-element-property :header datum))))) - (or (org-element-property :switches datum) "") - name - (org-element-property (if inline :begin :post-affiliated) - datum)))) - (unless light - (setf (nth 2 info) (org-babel-process-params (nth 2 info)))) - (setf (nth 2 info) (org-babel-generate-file-param name (nth 2 info))) - info)))) - (defvar org-babel-exp-reference-buffer nil "Buffer containing original contents of the exported buffer. This is used by Babel to resolve references in source blocks. @@ -624,6 +557,74 @@ the outer-most code block.") (defvar *this*) +(defun org-babel-get-src-block-info (&optional light datum) + "Extract information from a source block or inline source block. + +Optional argument LIGHT does not resolve remote variable +references; a process which could likely result in the execution +of other code blocks. + +By default, consider the block at point. However, when optional +argument DATUM is provided, extract information from that parsed +object instead. + +Return nil if point is not on a source block. Otherwise, return +a list with the following pattern: + + \(language body header-arguments-alist switches name block-head)" + (let* ((datum (or datum (org-element-context))) + (type (org-element-type datum)) + (inline (eq type 'inline-src-block))) + (when (memq type '(inline-src-block src-block)) + (let* ((lang (org-element-property :language datum)) + (lang-headers (intern + (concat "org-babel-default-header-args:" lang))) + (name (org-element-property :name datum)) + (info + (list + lang + ;; Normalize contents. In particular, remove spurious + ;; indentation and final newline character. + (let* ((value (org-element-property :value datum)) + (body (if (and (> (length value) 1) + (string-match-p "\n\\'" value)) + (substring value 0 -1) + value))) + (cond (inline + ;; Newline characters and indentation in an + ;; inline src-block are not meaningful, since + ;; they could come from some paragraph + ;; filling. Treat them as a white space. + (replace-regexp-in-string "\n[ \t]*" " " body)) + ((or org-src-preserve-indentation + (org-element-property :preserve-indent datum)) + body) + (t (org-remove-indentation body)))) + (apply #'org-babel-merge-params + (if inline org-babel-default-inline-header-args + org-babel-default-header-args) + (and (boundp lang-headers) (symbol-value lang-headers)) + (append + ;; If DATUM is provided, make sure we get node + ;; properties applicable to its location within + ;; the document. + (org-with-wide-buffer + (when datum + (goto-char (org-element-property :begin datum))) + (org-babel-params-from-properties lang)) + (mapcar #'org-babel-parse-header-arguments + (cons + (org-element-property :parameters datum) + (org-element-property :header datum))))) + (or (org-element-property :switches datum) "") + name + (org-element-property (if inline :begin :post-affiliated) + datum)))) + (unless light + (setf (nth 2 info) (org-babel-process-params (nth 2 info)))) + (setf (nth 2 info) (org-babel-generate-file-param name (nth 2 info))) + info)))) + ;;;###autoload (defun org-babel-execute-src-block (&optional arg info params) "Execute the current source code block. -- 2.11.4.GIT