[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] New patches WAS Re: [PATCH] inline src block results can be remo
From: |
Nicolas Goaziou |
Subject: |
Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed |
Date: |
Fri, 16 Jan 2015 23:41:59 +0100 |
"Charles C. Berry" <address@hidden> writes:
> I've attached three patches and two files that show the behavior under
> the current master (12 Jan 2015,
> e0879b03d08bb4acc663084076370482f61e8698) and under the patched
> version.
Thank you. Some comments follow.
> With the patches, inline source block results can be removed by
> re-executing the source block if they are wrapped in
> a `{{{results(...)}}}' macro. The schema for the RESULT-PARAMS is as
> follows, but see the examples for caveats:
>
> | Param | Example output |
> |-----------------+-----------------------------------+
> | default/replace | {{{results(=42=)}}} |
> | list | \n: - 42\n\n |
> | raw | 42 |
> | drawer/wrap | {{{results(42)}}} |
> | org | {{{results(src_org{...})}}} |
> | html | {{{results(@@html:...@@)}}} |
> | latex | {{{results(@@latex:...@@)}}} |
> | code | {{{results(src_emacs-lisp{...})}}}|
> | table | \n| 42 |\n\n |
> |-----------------+-----------------------------------+
I don't think inline Babel blocks should be able to generate lists or
tables. Org cannot contain inline lists or tables. If you need a real
table or list, a regular Babel call will do.
I suggest to ignore :results table and :results list, or even return an
error, since this is bound to breaking the document structure.
> The `results' macro is hard coded to wrap `value' except when list,
> table, or raw is specified as a RESULT-PARAM or when (listp value).
> And obviously, :file
I thought :file produced {{{results([[file:...]]}}} ?
> * lisp/ob-core.el (org-babel-insert-result): Delete any `results'
> macro following current inline src block; insert current value in
> 'results' macro possibly wrapping RESULT in an export snippet or
> inline source block first. Protect commas and backslash commas in the
> RESULT with backslashes if the macro form is used.
I think the "protect commas and backslashes commas" should be factored
out of "ob-core.el" (and "org-element.el") and moved into
"org-macro.el".
> +By default RESULT is inserted after the end of the current source
> +block. The RESULT of an inline source block usually will be
> +wrapped inside a `results' macro and placed on the same line as
> +the inline source block. The macro is stripped upon
Two spaces.
> +export. Multiline and non-scalar RESULTS from inline source
> +blocks are fragile and should be avoided. With optional argument
Ditto.
> +RESULT-PARAMS controls insertion of results in the org-mode file.
Org mode file.
> + ;; escape commas, e.g. {{{results(a\,b)}}}
> + ((and inlinep
> + (not (member "raw" result-params)))
> + (goto-char beg)
> + (insert
> + ;; Escape commas and preceding backslash per
> + ;; (info "(org) Macro replacement").
> + (replace-regexp-in-string
> + "\\(\\\\*\\)\\(,\\)"
> + (lambda (str)
> + (let ((len (length (match-string 1 str))))
> + (concat (make-string (* 2 (/ len 2)) ?\\) "\\,")))
> + result nil t)))
See remark about factoring it out.
> +(defun org-babel-remove-inline-result ()
> + "Remove the result of the current inline-src-block if it is
> + wrapped in a `results' macro and trim extraneous leading whitespace."
Docstring's first sentence has to fit on a single line.
> + (let ((el (org-element-context)) post-blank)
(let* ((el (org-element-context))
(post-blank (org-element-property :post-blank el)))
...)
> + (when (eq (org-element-type el) 'inline-src-block)
> + (save-excursion
`org-with-wide-buffer' is better: results might be outside the narrowed
part of the buffer.
> + (setq post-blank (org-element-property :post-blank el))
See above.
> + (goto-char (org-element-property :end el))
> + (setq el (org-element-context))
(let ((el (org-element-context))))
> + (when (and (eq (org-element-type el) 'macro)
> + (equal (org-element-property :key el) "results"))
Nitpick: `equal' => `string='
Regards,
- [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/12
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed,
Nicolas Goaziou <=
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/18
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Nicolas Goaziou, 2015/01/19
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/19
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Nicolas Goaziou, 2015/01/20
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/21
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Nicolas Goaziou, 2015/01/22
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/24
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Aaron Ecay, 2015/01/24
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/25
- Re: [O] New patches WAS Re: [PATCH] inline src block results can be removed, Charles C. Berry, 2015/01/29