emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Liu Hui <liuhui1610@gmail.com>
To: John Wiegley <johnw@gnu.org>
Cc: emacs-orgmode@gnu.org
Subject: Re: Patch to add a new org-archive hook and context info type
Date: Wed, 18 Dec 2024 11:24:30 +0800	[thread overview]
Message-ID: <69293fe6-07a8-4dcd-8b37-7e0984df9180@gmail.com> (raw)
In-Reply-To: <m2ttcja7md.fsf@gnu.org>


在 2024/11/7 14:19, John Wiegley 写道:
> Hello,
> 
> The following patch adds ‘org-archive-finalize-hook’, which runs earlier than
> ‘org-archive-hook’ and in the destination buffer, not the original file. This
> allows the context to be extended, the archived entry to be cleaned up after
> inseration, maybe even encrypted or hashed to prevent changes.
> 
> I also added a new ‘ARCHIVE_OLID’ context type, which preserves the ID of the
> parent the archived entry was previously under. This is because ARCHIVE_OLPATH
> is not stable: it’s very possible the tree structure may change over time and
> invalidate the path. But as long as the original parent is not deleted, there
> stands a better chance that the original context of the archived entry can be
> restored.
> 
> John
> 
> --- a/lisp/org-archive.el
> +++ b/lisp/org-archive.el
> @@ -144,13 +144,26 @@ information."
>   	      (const :tag "Priority" priority)
>   	      (const :tag "Inherited tags" itags)
>   	      (const :tag "Outline path" olpath)
> +	      (const :tag "Outline parent id" olid)
>   	      (const :tag "Local tags" ltags)))
>   
> -(defvar org-archive-hook nil
> +(defcustom 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.")
> +archive location, but not yet deleted from the original file."
> +  :group 'org-archive
> +  :type 'hook)
> +
> +(defcustom org-archive-finalize-hook nil
> +  "Hook run after successfully archiving a subtree in final location.
> +Hook functions are called with point on the subtree in the
> +destination file. Compare this with `org-archive-hook', which
> +runs in the original file. At this stage, the subtree has been
> +added to the archive location, but not yet deleted from the
> +original file."
> +  :group 'org-archive
> +  :type 'hook)
>   
>   ;;;###autoload
>   (defun org-add-archive-files (files)
> @@ -299,6 +312,9 @@ direct children of this heading."
>   		    (olpath . ,(mapconcat #'identity
>   					  (org-get-outline-path)
>   					  "/"))
> +                    (olid . ,(org-with-wide-buffer
> +                              (and (org-up-heading-safe)
> +	                           (org-entry-get (point) "ID"))))
>   		    (time . ,time)
>   		    (todo . ,(org-entry-get (point) "TODO")))))
>   	    ;; We first only copy, in case something goes wrong
> @@ -393,6 +409,7 @@ direct children of this heading."
>   		     (point)
>   		     (concat "ARCHIVE_" (upcase (symbol-name item)))
>   		     value))))
> +              (run-hooks 'org-archive-finalize-hook)
>   	      ;; Save the buffer, if it is not the same buffer and
>   	      ;; depending on `org-archive-subtree-save-file-p'.
>   	      (unless (eq this-buffer buffer)
> 
> 

Thank you. This hook is useful and I'm using it to set bookmark at last 
archive position, etc.

Can we add it to org-mode?


      parent reply	other threads:[~2024-12-18  3:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-07  6:19 Patch to add a new org-archive hook and context info type John Wiegley
2024-11-23 16:45 ` Problem installing Org using the Emacs packaging system Alain.Cochard
2024-12-16 19:08   ` Ihor Radchenko
2024-12-18  3:24 ` Liu Hui [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=69293fe6-07a8-4dcd-8b37-7e0984df9180@gmail.com \
    --to=liuhui1610@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=johnw@gnu.org \
    --cc=m2ttcja7md.fsf@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).