关于org-publish阻塞进程的问题 或者 不是?

我想在发布org项目之后直接push到Github,push的脚本放在deploy.sh中。我写了如下函数:

(defun my/org-publish-project (proj)
  (interactive "sEnter the project name: ")
  (progn
     (org-publish proj nil nil)
     (shell-command "~/iCloud/blog_site/deploy.sh")
     (message "%s deployed successfully!" proj)))

按理说在执行完 org publish 后应执行 shell-command 然后输出message,但是org-publish后就没有再执行下面的代码了。我猜是emacs进程的问题,org-publish会阻塞进程,导致函数不能执行完全。还是什么其他的原因,有没有解决方法?

1 个赞

在org manual找到了解决方案,org-publish-project-alist有个选项 :completion-function 用来设置publish完成后执行的函数。

1 个赞

太棒了,org 还有这种功能呢。

还有个:preparation-function可以定义在publish之前执行一些函数。orgmode manual就像个宝库,我的很多问题和想法都能在里面找到答案。时不时还会发现一些奇技淫巧。

1 个赞