* Ihor Radchenko <yanta...@gmail.com> wrote: > Karl Voit <devn...@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/