emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[QUESTION] Hope to improve the `org-set-font-lock-defaults` performance


From: Christopher M. Miles
Subject: [QUESTION] Hope to improve the `org-set-font-lock-defaults` performance by lazy and limit to current visible area
Date: Thu, 25 May 2023 12:13:18 +0800
User-agent: mu4e 1.10.3; emacs 30.0.50

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: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]