emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area
@ 2023-05-25  4:13 Christopher M. Miles
  2023-05-25  6:40 ` Ihor Radchenko
  0 siblings, 1 reply; 3+ messages in thread
From: Christopher M. Miles @ 2023-05-25  4:13 UTC (permalink / raw)
  To: Org mode

[-- Attachment #1: Type: text/plain, Size: 1808 bytes --]


I'm the developer of Org mode package "org-link-beautify"
https://repo.or.cz/org-link-beautify.git . The package main theory
is to use org-link-parameters `:activate-func` to do link file preview
with generating thumbnail images or file content etc.

But I found it's slow one some big Org file and slow on small Org file
when previewing has a lot.

I locate and studied the source code of the `:activate-func`.

- [X] locate the core function source code
  + [X] org-link-set-parameters
    - [X] org-link-parameters
      + [X] :activate-func
  + [X] org-mode major mode definition
    + [X] org-set-font-lock-defaults - Set font lock defaults for the current buffer.
      - [X] variable: org-font-lock-extra-keywords - dynamically scoped
        + [X] org-activate-links
          - [X] org-activate-links--text-properties
            + [X] :activate-func
          - [X] org-activate-links--overlays
            + [X] :activate-func

I can see the `org-mode` invoked `org-set-font-lock-defaults` soon when
`org-mode` enabled. I hope the link `:activate-func` function can be
called only on link elements which is VISIBLE (means unfolded subtrees
or similar). So org-mode don't need to render all buffer links at
beginning soon. Instead render them as needed as unfolded. (Maybe I read
source code without fully understand the code. If so, correct me,
thanks.)

So, I hope Org mode maintainer can improve this mechanism. Thanks a lot.

Hope this can improve other Org mode extensions performance too.

-- 

[ stardiviner ]
I try to make every word tell the meaning that I want to express without misunderstanding.

Blog: https://stardiviner.github.io/
IRC(libera.chat, freenode): stardiviner, Matrix: stardiviner
GPG: F09F650D7D674819892591401B5DF1C95AE89AC3

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area
  2023-05-25  4:13 [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area Christopher M. Miles
@ 2023-05-25  6:40 ` Ihor Radchenko
  2023-05-25  7:06   ` [SOLVED] " Christopher M. Miles
  0 siblings, 1 reply; 3+ messages in thread
From: Ihor Radchenko @ 2023-05-25  6:40 UTC (permalink / raw)
  To: numbchild; +Cc: Org mode

"Christopher M. Miles" <numbchild@gmail.com> writes:

> I'm the developer of Org mode package "org-link-beautify"
> https://repo.or.cz/org-link-beautify.git . The package main theory
> is to use org-link-parameters `:activate-func` to do link file preview
> with generating thumbnail images or file content etc.
>
> But I found it's slow one some big Org file and slow on small Org file
> when previewing has a lot.
> ...
> I can see the `org-mode` invoked `org-set-font-lock-defaults` soon when
> `org-mode` enabled. I hope the link `:activate-func` function can be
> called only on link elements which is VISIBLE (means unfolded subtrees
> or similar). So org-mode don't need to render all buffer links at
> beginning soon. Instead render them as needed as unfolded. (Maybe I read
> source code without fully understand the code. If so, correct me,
> thanks.)

Emacs fontification, by default, only requests fontification of the text
visible on screen. That's what LIMIT argument to `font-lock-keywords'
MATCHER function is for. Org mode obeys LIMIT.

If you are seeing fontification being requested for invisible part of
buffer or parts of buffer outside screen, it is likely caused by some
third-party package forcing the fontification.

As usual, try emacs -Q + minimal set of loaded packages and see if you
can reproduce the problem.

-- 
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] 3+ messages in thread

* [SOLVED] Re: [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area
  2023-05-25  6:40 ` Ihor Radchenko
@ 2023-05-25  7:06   ` Christopher M. Miles
  0 siblings, 0 replies; 3+ messages in thread
From: Christopher M. Miles @ 2023-05-25  7:06 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: numbchild, Org mode

[-- Attachment #1: Type: text/plain, Size: 1772 bytes --]


Ihor Radchenko <yantar92@posteo.net> writes:

> "Christopher M. Miles" <numbchild@gmail.com> writes:
>
>> I'm the developer of Org mode package "org-link-beautify"
>> https://repo.or.cz/org-link-beautify.git . The package main theory
>> is to use org-link-parameters `:activate-func` to do link file preview
>> with generating thumbnail images or file content etc.
>>
>> But I found it's slow one some big Org file and slow on small Org file
>> when previewing has a lot.
>> ...
>> I can see the `org-mode` invoked `org-set-font-lock-defaults` soon when
>> `org-mode` enabled. I hope the link `:activate-func` function can be
>> called only on link elements which is VISIBLE (means unfolded subtrees
>> or similar). So org-mode don't need to render all buffer links at
>> beginning soon. Instead render them as needed as unfolded. (Maybe I read
>> source code without fully understand the code. If so, correct me,
>> thanks.)
>
> Emacs fontification, by default, only requests fontification of the text
> visible on screen. That's what LIMIT argument to `font-lock-keywords'
> MATCHER function is for. Org mode obeys LIMIT.
>
> If you are seeing fontification being requested for invisible part of
> buffer or parts of buffer outside screen, it is likely caused by some
> third-party package forcing the fontification.
>
> As usual, try emacs -Q + minimal set of loaded packages and see if you
> can reproduce the problem.

Ihor, Thanks for answering. Learned new stuff.

-- 

[ stardiviner ]
I try to make every word tell the meaning that I want to express without misunderstanding.

Blog: https://stardiviner.github.io/
IRC(libera.chat, freenode): stardiviner, Matrix: stardiviner
GPG: F09F650D7D674819892591401B5DF1C95AE89AC3

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-05-25  8:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-25  4:13 [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area Christopher M. Miles
2023-05-25  6:40 ` Ihor Radchenko
2023-05-25  7:06   ` [SOLVED] " Christopher M. Miles

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