Here's the motive for this question. I am working on this project ( https://github.com/kaushalmodi/eless ) that is basically a bash script. I have eless.org and am tangling the bash script eless from that, plus all the documentation (HTML, Info, README.md, CONTRIBUTING.md, etc.). The publish project alist is here: https://github.com/kaushalmodi/eless/blob/master/build/build.el If EXPORT_FILE_NAME starting working for me, I would not need these completion functions for publish that just do the file renaming: (defun eless/readme-completion-fn (proj-plist) (let* ((pub-dir (plist-get proj-plist :publishing-directory)) (before-name (concat pub-dir "eless.md")) (after-name (concat pub-dir "README.md"))) (rename-file before-name after-name :ok-if-already-exists))) (defun eless/contributing-completion-fn (proj-plist) (let* ((pub-dir (plist-get proj-plist :publishing-directory)) (before-name (concat pub-dir "eless.md")) (after-name (concat pub-dir "CONTRIBUTING.md"))) (rename-file before-name after-name :ok-if-already-exists))) (defun eless/wiki-tcsh-completion-fn (proj-plist) (let* ((pub-dir (plist-get proj-plist :publishing-directory)) (before-name (concat pub-dir "eless.md")) (after-name (concat pub-dir "Example eless Config in tcsh.md"))) (rename-file before-name after-name :ok-if-already-exists))) -- Kaushal Modi