"Charles C. Berry" <ccbe...@ucsd.edu> 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,