emacs-orgmode
[Top][All Lists]
Advanced

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

Re: Dynamic block tables: adding prefix of "id:" to %ID


From: Karl Voit
Subject: Re: Dynamic block tables: adding prefix of "id:" to %ID
Date: Wed, 28 Jul 2021 21:42:34 +0200
User-agent: slrn/1.0.3 (Linux)

* Ihor Radchenko <yantar92@gmail.com> wrote:
> Karl Voit <devnull@Karl-Voit.at> writes:
>> Thanks, this sounds clever and I think I understand the code.
>> Although I would have preferred not to overwrite a function. I
>> always have a fear that this leads to nasty side-effects with future
>> updates.
>
> That's not overwriting. org-columns-modify-value-for-display-function is
> not a function, but a custom variable defaulting to nil. You have all
> rights to set it to whatever you wish.

Oh, this is reassuring. Thank you!

>> Without deeper knowledge, I was astonished that C-h f
>> org-columns-modify-value-for-display-function did not lead to a
>> matching function and C-h v ... to a matching variable.
>
> Hmm. You are right. This should be a bug. It happens because
> org-colview.el is only loaded after you actually run column view or
> corresponding dblock. Before that, Emacs is not aware about this
> variable (unless you require org-colview manually in your config).
>
>> When I applied the new change to update a table in a file of 71k
>> lines of org, I had to cancel the process after over two hours
>> without a result. Before the change, updating this table took
>> roughly 20 minutes.
>
> That's probably because the function I provided tries to compute the
> description part of the link by querying the headline for each result.
> You may get much better performance using the following version:
>
> (defun yant/org-columns-custom-formatter (column-title value)
>   "Format column values for columns with ID-LINK title as proper Org mode id: 
> link."
>   (pcase column-title
>     ("ID-LINK"
>      (format "[[id:%s]]" value))
>     (_ nil)))

I can confirm that this version does not have any negative impact
compared to the version without your code.

If anybody is interested why this is taking roughly 20min to update
one table:

| - command-execute                                              553233  93%
|  - call-interactively                                          553233  93%
|   - funcall-interactively                                      553233  93%
|    - org-ctrl-c-ctrl-c                                         553233  93%
|     - org-update-dblock                                        553228  93%
|      - org-dblock-write:columnview                             553228  93%
|       - org-columns--capture-view                              553212  93%
|        - org-columns                                           540042  91%
|         - org-columns--display-here                            536947  90%
|          - face-remap-add-relative                             527000  88%
|           - face-remap-order                                   526004  88%
|            - sort                                              521312  88%
|               face-attrs-more-relative-p                       458136  77%
|          + org-columns--new-overlay                              2008   0%
|            face-attribute                                         205   0%
|          + org-columns--overlay-text                               44   0%
|            org-get-level-face                                       4   0%
|         + org-map-entries                                        1506   0%
|         + org-columns-compute-all                                1441   0%
|         + org-columns--set-widths                                   8   0%
|        + org-map-entries                                        12126   2%
|        + org-columns-quit                                          16   0%
|       + org-table-align                                            12   0%
|       + org-columns--clean-item                                     4   0%
|     + org-element-context                                           5   0%
| + ...                                                           38956   6%
| + timer-event-handler                                             166   0%
| + redisplay_internal (C function)                                  28   0%


> Best,
> Ihor

Thank Ihor, you have improved yet another part of my Emacs life!

-- 
get mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML into Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <
Personal Information Management > http://Karl-Voit.at/tags/pim/
Emacs-related > http://Karl-Voit.at/tags/emacs/




reply via email to

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