Julien Cubizolles <j.cubizol...@free.fr> writes:

> Thanks for looking into it. It seems the completion-function is now
> being accessed but unfortunately something is still wrong. The error
> message is
>
> org-publish-projects: Wrong type argument: sequencep,
> jc-org-publish-rename-beamer-pdf

I forgot that :preparation-function could also be a single function.
Attached is the updated patch to test.

> If I'm to bisect, is it possible to reload all org-mode files without
> restarting emacs ? Would M-x org-mode be enough ?

See `org-reload'.

Regards,
>From 1180a87c002c8efc0687a051bec536ee6c34eec0 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <m...@nicolasgoaziou.fr>
Date: Sun, 29 Nov 2015 14:23:50 +0100
Subject: [PATCH] ox-publish.el: Fix :preparation-function and
 :completion-function

* lisp/ox-publish.el (org-publish-projects): Do not use `run-hooks' in
  a lexical binding environment.

Reported-by: Julien Cubizolles <j.cubizol...@free.fr>
<http://permalink.gmane.org/gmane.emacs.orgmode/103124>
---
 lisp/ox-publish.el | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 90f307c..b49b9d3 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -667,9 +667,9 @@ If `:auto-sitemap' is set, publish the sitemap too.  If
 `:makeindex' is set, also produce a file \"theindex.org\"."
   (dolist (project (org-publish-expand-projects projects))
     (let ((project-plist (cdr project)))
-      (let ((preparation-function
-	     (plist-get project-plist :preparation-function)))
-	(when preparation-function (run-hooks 'preparation-function)))
+      (let ((f (plist-get project-plist :preparation-function)))
+	(cond ((consp f) (mapc #'funcall f))
+	      ((functionp f) (funcall f))))
       ;; Each project uses its own cache file.
       (org-publish-initialize-cache (car project))
       (when  (plist-get project-plist :auto-sitemap)
@@ -701,9 +701,9 @@ If `:auto-sitemap' is set, publish the sitemap too.  If
 	  (org-publish-index-generate-theindex
 	   project (plist-get project-plist :base-directory))
 	  (org-publish-file theindex project t)))
-      (let ((completion-function
-	     (plist-get project-plist :completion-function)))
-	(when completion-function (run-hooks 'completion-function)))
+      (let ((f (plist-get project-plist :completion-function)))
+	(cond ((consp f) (mapc #'funcall f))
+	      ((functionp f) (funcall f))))
       (org-publish-write-cache-file))))
 
 (defun org-publish-org-sitemap (project &optional sitemap-filename)
-- 
2.6.2

Reply via email to