* lisp/ox.el (org-export-async-start): Limit first argument to lambda
  expressions.
* lisp/ox-publish.el (org-publish, org-publish-all,
  org-publish-current-file): Replace `ignore', per limit stated above.

Due to a hack allowing to provide quasi-quoted lambda expressions,
symbols are not allowed as result handler.  This limitation is not
much of a problem as `org-export-async-start' is only meant to be used
internally.
This commit is contained in:
Nicolas Goaziou 2014-10-12 22:47:48 +02:00
parent 9c3d22f864
commit a0ac1344fc
2 changed files with 7 additions and 6 deletions

View File

@ -881,7 +881,7 @@ publishing will be done asynchronously, in another process."
;; project is still a string here.
(list (assoc project org-publish-project-alist)))))
(if async
(org-export-async-start 'ignore
(org-export-async-start (lambda (results) nil)
`(let ((org-publish-use-timestamps-flag
(if ',force nil ,org-publish-use-timestamps-flag)))
(org-publish-projects ',project-alist)))
@ -899,7 +899,7 @@ optional argument ASYNC, publishing will be done asynchronously,
in another process."
(interactive "P")
(if async
(org-export-async-start 'ignore
(org-export-async-start (lambda (results) nil)
`(progn
(when ',force (org-publish-remove-all-timestamps))
(let ((org-publish-use-timestamps-flag
@ -921,7 +921,7 @@ asynchronously, in another process."
(interactive "P")
(let ((file (buffer-file-name (buffer-base-buffer))))
(if async
(org-export-async-start 'ignore
(org-export-async-start (lambda (results) nil)
`(let ((org-publish-use-timestamps-flag
(if ',force nil ,org-publish-use-timestamps-flag)))
(org-publish-file ,file)))

View File

@ -5479,8 +5479,9 @@ to `:default' encoding. If it fails, return S."
(defmacro org-export-async-start (fun &rest body)
"Call function FUN on the results returned by BODY evaluation.
BODY evaluation happens in an asynchronous process, from a buffer
which is an exact copy of the current one.
FUN is an anonymous function of one argument. BODY evaluation
happens in an asynchronous process, from a buffer which is an
exact copy of the current one.
Use `org-export-add-to-stack' in FUN in order to register results
in the stack.
@ -5532,7 +5533,7 @@ and `org-export-to-file' for more specialized functions."
;; Register running process in stack.
(org-export-add-to-stack (get-buffer ,proc-buffer) nil ,process)
;; Set-up sentinel in order to catch results.
(let ((handler ',fun))
(let ((handler ,fun))
(set-process-sentinel
,process
`(lambda (p status)