* 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).