Browse Source

org-archive: Provide a hook during the archive process

* lisp/org-archive.el (org-archive-hook): New hook.
  (org-archive-subtree): Run hook.
Eric Abrahamsen 4 years ago
parent
commit
a7c72e0de5
1 changed files with 10 additions and 2 deletions
  1. 10 2
      lisp/org-archive.el

+ 10 - 2
lisp/org-archive.el

@@ -119,6 +119,12 @@ information."
 	      (const :tag "Outline path" olpath)
 	      (const :tag "Local tags" ltags)))
 
+(defvar org-archive-hook nil
+  "Hook run after successfully archiving a subtree.
+Hook functions are called with point on the subtree in the
+original file.  At this stage, the subtree has been added to the
+archive location, but not yet deleted from the original file.")
+
 (defun org-get-local-archive-location ()
   "Get the archive location applicable at point."
   (let ((re "^[ \t]*#\\+ARCHIVE:[ \t]+\\(\\S-.*\\S-\\)[ \t]*$")
@@ -366,8 +372,10 @@ this heading."
 	    ;; Save and kill the buffer, if it is not the same buffer.
 	    (when (not (eq this-buffer buffer))
 	      (save-buffer))))
-	;; Here we are back in the original buffer.  Everything seems to have
-	;; worked.  So now cut the tree and finish up.
+	;; Here we are back in the original buffer.  Everything seems
+	;; to have worked.  So now run hooks, cut the tree and finish
+	;; up.
+	(run-hooks 'org-archive-hook)
 	(let (this-command) (org-cut-subtree))
 	(when (featurep 'org-inlinetask)
 	  (org-inlinetask-remove-END-maybe))