* Suggestion to add hook to be run when org-indent completes a buffer's initialization @ 2023-12-30 5:24 dark.key8799 2023-12-31 14:42 ` Ihor Radchenko 0 siblings, 1 reply; 6+ messages in thread From: dark.key8799 @ 2023-12-30 5:24 UTC (permalink / raw) To: emacs-orgmode The org-modern-indent package relies on org-indent having finished preparing a buffer to add its own customizations. Currently it relies on a timer mechanism to watch org-indent-agentized-buffers and execute once a buffer has been prepped by org-indent. That leads to some downstream issues in particular use-cases (https://github.com/jdtsmith/org-modern-indent/issues/11) Although there are some workarounds for the particular issue above, a cleaner solution would be org-indent calling some hook at the end of the preparation. As per link above, jdtsmith proposes to add such call in org-indent-initialize-buffer: ;; Job is complete: un-agentize buffer. (unless interruptp (setq org-indent-agentized-buffers (delq buffer org-indent-agentized-buffers)) (run-hook-with-args 'org-indent-buffer-init-finished buffer)) ;; <-- added -- Alexandre Avanian ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Suggestion to add hook to be run when org-indent completes a buffer's initialization 2023-12-30 5:24 Suggestion to add hook to be run when org-indent completes a buffer's initialization dark.key8799 @ 2023-12-31 14:42 ` Ihor Radchenko 2024-01-02 10:56 ` [PATCH] " dark.key8799 0 siblings, 1 reply; 6+ messages in thread From: Ihor Radchenko @ 2023-12-31 14:42 UTC (permalink / raw) To: dark.key8799; +Cc: emacs-orgmode dark.key8799@151e.ai writes: > Although there are some workarounds for the particular issue above, a cleaner solution would be org-indent calling some hook at the end of the preparation. As per link above, jdtsmith proposes to add such call in org-indent-initialize-buffer: > > ;; Job is complete: un-agentize buffer. > (unless interruptp > (setq org-indent-agentized-buffers > (delq buffer org-indent-agentized-buffers)) > (run-hook-with-args 'org-indent-buffer-init-finished buffer)) ;; <-- added I do not see why we shouldn't add such a hook. Patches welcome! -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] Re: Suggestion to add hook to be run when org-indent completes a buffer's initialization 2023-12-31 14:42 ` Ihor Radchenko @ 2024-01-02 10:56 ` dark.key8799 2024-01-02 11:15 ` Ihor Radchenko 0 siblings, 1 reply; 6+ messages in thread From: dark.key8799 @ 2024-01-02 10:56 UTC (permalink / raw) To: Ihor Radchenko; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 161 bytes --] On Sun, Dec 31, 2023, at 22:42, Ihor Radchenko wrote: > I do not see why we shouldn't add such a hook. Patches welcome! Would this work? -- Alexandre Avanian [-- Attachment #2: 0001-lisp-org-indent.el-Add-hook-to-run-after-it-initiali.patch --] [-- Type: application/octet-stream, Size: 1711 bytes --] From d11dc9bfdb3a659ca56884a98a7a0bf703f2a4ce Mon Sep 17 00:00:00 2001 From: Alexandre Avanian <git@alexandre.avanian.net> Date: Tue, 2 Jan 2024 18:08:09 +0800 Subject: [PATCH] lisp/org-indent.el: Add hook to run after it initializes a buffer * lisp/org-indent.el (org-indent-initialize-buffer): define and call hook after it initializes a buffer. This will allow to enrich org-indent properties without requiring hacks to detect initialization. See https://list.orgmode.org/orgmode/5f4cdb77-8f43-4f2d-91a7-bc4ce57df8ad@app.fastmail.com/#r TINYCHANGE --- lisp/org-indent.el | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/org-indent.el b/lisp/org-indent.el index 62ebd6be0..4dc883c01 100644 --- a/lisp/org-indent.el +++ b/lisp/org-indent.el @@ -103,6 +103,13 @@ :group 'org-indent :type 'integer) +(defcustom org-indent-post-buffer-init-hook nil + "Hook run after org-indent finishes initializing a buffer. +The function(s) in in this hook must accept a single argument representing +the initialized buffer." + :group 'org-indent + :type 'hook) + (defface org-indent '((t (:inherit org-hide))) "Face for outline indentation. The default is to make it look like whitespace. But you may find it @@ -290,7 +297,8 @@ ;; Job is complete: un-agentize buffer. (unless interruptp (setq org-indent-agentized-buffers - (delq buffer org-indent-agentized-buffers)))))))) + (delq buffer org-indent-agentized-buffers)) + (run-hook-with-args 'org-indent-post-buffer-init-hook buffer))))))) (defun org-indent-set-line-properties (level indentation &optional heading) "Set prefix properties on current line an move to next one. -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Re: Suggestion to add hook to be run when org-indent completes a buffer's initialization 2024-01-02 10:56 ` [PATCH] " dark.key8799 @ 2024-01-02 11:15 ` Ihor Radchenko 2024-01-02 15:53 ` dark.key8799 0 siblings, 1 reply; 6+ messages in thread From: Ihor Radchenko @ 2024-01-02 11:15 UTC (permalink / raw) To: dark.key8799; +Cc: emacs-orgmode dark.key8799@151e.ai writes: >> I do not see why we shouldn't add such a hook. Patches welcome! > > Would this work? Yes, but please address some minor comments. > +(defcustom org-indent-post-buffer-init-hook nil > + "Hook run after org-indent finishes initializing a buffer. > +The function(s) in in this hook must accept a single argument representing > +the initialized buffer." > + :group 'org-indent > + :type 'hook) By convention, abnormal hooks (hooks that require arguments) are named as *-functions, not *-hook. Also, when adding new customizations, we generally announce them in etc/ORG-NEWS. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Re: Suggestion to add hook to be run when org-indent completes a buffer's initialization 2024-01-02 11:15 ` Ihor Radchenko @ 2024-01-02 15:53 ` dark.key8799 2024-01-03 15:38 ` Ihor Radchenko 0 siblings, 1 reply; 6+ messages in thread From: dark.key8799 @ 2024-01-02 15:53 UTC (permalink / raw) To: Ihor Radchenko; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 306 bytes --] On Tue, Jan 2, 2024, at 19:15, Ihor Radchenko wrote: > By convention, abnormal hooks (hooks that require arguments) are named > as *-functions, not *-hook. > > Also, when adding new customizations, we generally announce them in > etc/ORG-NEWS. Understood. Please find amended patch. -- Alexandre Avanian [-- Attachment #2: 0001-lisp-org-indent.el-Add-hook-to-run-after-it-initiali.patch --] [-- Type: application/octet-stream, Size: 2322 bytes --] From 12edb4205a87be187900a55de5c37b9264a7a27c Mon Sep 17 00:00:00 2001 From: Alexandre Avanian <git@alexandre.avanian.net> Date: Tue, 2 Jan 2024 18:08:09 +0800 Subject: [PATCH] lisp/org-indent.el: Add hook to run after it initializes a buffer * lisp/org-indent.el (org-indent-initialize-buffer): define and call hook after it initializes a buffer. * etc/ORG-NEWS: announce new custom option. This will allow to enrich org-indent properties without requiring hacks to detect initialization. See https://list.orgmode.org/orgmode/5f4cdb77-8f43-4f2d-91a7-bc4ce57df8ad@app.fastmail.com/#r TINYCHANGE --- etc/ORG-NEWS | 5 +++++ lisp/org-indent.el | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 7d0822faf..a906d116f 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -581,6 +581,11 @@ The main change will be for users who did not configure ~ob-python~ will now start interactive sessions in a more consistent manner with ~run-python~. +*** New hook option ~org-indent-post-buffer-init-functions~ + +This allows to run functions after ~org-indent~ intializes a buffer to +enrich its properties. + ** New features *** =ob-plantuml.el=: Support tikz file format output diff --git a/lisp/org-indent.el b/lisp/org-indent.el index 62ebd6be0..aebd95743 100644 --- a/lisp/org-indent.el +++ b/lisp/org-indent.el @@ -103,6 +103,13 @@ :group 'org-indent :type 'integer) +(defcustom org-indent-post-buffer-init-functions nil + "Hook run after org-indent finishes initializing a buffer. +The function(s) in in this hook must accept a single argument representing +the initialized buffer." + :group 'org-indent + :type 'hook) + (defface org-indent '((t (:inherit org-hide))) "Face for outline indentation. The default is to make it look like whitespace. But you may find it @@ -290,7 +297,8 @@ ;; Job is complete: un-agentize buffer. (unless interruptp (setq org-indent-agentized-buffers - (delq buffer org-indent-agentized-buffers)))))))) + (delq buffer org-indent-agentized-buffers)) + (run-hook-with-args 'org-indent-post-buffer-init-functions buffer))))))) (defun org-indent-set-line-properties (level indentation &optional heading) "Set prefix properties on current line an move to next one. -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Re: Suggestion to add hook to be run when org-indent completes a buffer's initialization 2024-01-02 15:53 ` dark.key8799 @ 2024-01-03 15:38 ` Ihor Radchenko 0 siblings, 0 replies; 6+ messages in thread From: Ihor Radchenko @ 2024-01-03 15:38 UTC (permalink / raw) To: dark.key8799; +Cc: emacs-orgmode dark.key8799@151e.ai writes: > Understood. Please find amended patch. Applied, onto main, with minor amendments. I capitalized all the sentences in commit message and added :package-version keyword to the `defcustom' definition. https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=3aac00e45 Thanks for your contribution! -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-01-03 15:36 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-30 5:24 Suggestion to add hook to be run when org-indent completes a buffer's initialization dark.key8799 2023-12-31 14:42 ` Ihor Radchenko 2024-01-02 10:56 ` [PATCH] " dark.key8799 2024-01-02 11:15 ` Ihor Radchenko 2024-01-02 15:53 ` dark.key8799 2024-01-03 15:38 ` Ihor Radchenko
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).