139 lines
5.8 KiB
Plaintext
139 lines
5.8 KiB
Plaintext
━━━━━━━━━━━━━━
|
||
JANUARY 2022
|
||
Caching
|
||
|
||
TEC
|
||
━━━━━━━━━━━━━━
|
||
|
||
|
||
2022-01-31
|
||
|
||
|
||
There are less “obvious user-facing changes” this month, but a lot of
|
||
good work has been happening 🙂.
|
||
|
||
|
||
The cache continues to make strides
|
||
═══════════════════════════════════
|
||
|
||
Nine months ago, Ihor started working on the org-element cache. The
|
||
cache has existed for a while now, but it used to be too buggy to be
|
||
useful.
|
||
|
||
This is no longer the case! We’re finally confident enough to flip
|
||
`org-element-use-cache'’s default from `nil' to `t'. I mentioned some
|
||
of the improvements in [November], however Ihor has continued to make
|
||
strides with the cache.
|
||
|
||
Getting the cache right is tough though, and so while the situation is
|
||
much improved there are still lingering bugs which need to be chased
|
||
down. If you only take one thing away from the post, I’d like it to be
|
||
this:
|
||
|
||
The cache is actively being developed now, for the first time in
|
||
years, so:
|
||
1. Ignore old advice (like [this]) which suggests disabling the cache
|
||
• Note that the cache will /not/ stuff anything up, at worst it
|
||
will emit a warning
|
||
2. If you see an org-cache warning /please/ report it to the Org
|
||
mailing list — `emacs-orgmode@gnu.org'.
|
||
|
||
Cache warnings look something like this:
|
||
┌────
|
||
│ Warning (org-element-cache): org-element--cache: Unregistered buffer modifications detected. Resetting.
|
||
│ If this warning appears regularly, please report the warning text to Org mode mailing list (M-x org-submit-bug-report).
|
||
│ The buffer is: config.org
|
||
│ Current command: (some-buggy-command)
|
||
│ Chars modified: 483
|
||
│ Buffer modified: 330957
|
||
│ Backtrace:
|
||
│ ...some possibly long backtrace...
|
||
└────
|
||
|
||
A good way to start is by copying this to your clipboard and then
|
||
trying `M-x org-submit-bug-report'. Regardless of whether you’re using
|
||
an Emacs mail client, this will collect all the important information
|
||
(org-mode version, etc.) and populate a buffer with it. Add the
|
||
warning text, and that will be a great help! After all, it’s quite
|
||
hard to fix bugs we don’t know about 😆.
|
||
|
||
As of October 2021, “bulk” heading promotion/demotion operations are
|
||
now faster thanks to the cache, and there have now been further
|
||
improvements relating to headings. It used to be the case that every
|
||
time heading properties changed the entire heading (and contents) were
|
||
re-parsed. Now, cache heuristics prevent the content from being
|
||
entirely re-parsed (see
|
||
`org-element--cache-avoid-synchronous-headline-re-parsing' for a bit
|
||
more information). This improvement is particularly noticeable when
|
||
refiling and archiving headings.
|
||
|
||
|
||
[November] <file:2021-11-30-element.org::Org element parser cache>
|
||
|
||
[this]
|
||
<https://emacs.stackexchange.com/questions/42006/trouble-with-org-mode>
|
||
|
||
|
||
Persisting data
|
||
═══════════════
|
||
|
||
In October, Ihor started work on `org-persist.el' — a way to /persist/
|
||
data across Emacs sessions. You may wonder what sort of data is being
|
||
persisted. Well, initially org-persist was written to record variable
|
||
values associated with particular files or buffers — such as the
|
||
org-element cache. This allows org-mode to load the cache for an Org
|
||
file and avoid re-parsing much of the content.
|
||
|
||
Over the past month, Ihor has /doubled/ the total number of commits
|
||
applied to `org-persist.el' and now more kinds of data can be
|
||
persisted, such as remote files (via. tramp) and online resources.
|
||
This opens up a lot of new possibilities, and we can begin to see what
|
||
this will allow for in the next highlight.
|
||
|
||
|
||
Exporting documents with remote resources
|
||
═════════════════════════════════════════
|
||
|
||
Ever linked to an online image like
|
||
`https://orgmode.org/resources/img/org-mode-unicorn.svg' in an Org
|
||
document, seen it look nice in the HTML export and then be
|
||
disappointed to just see a link in LaTeX? Well I have. Thankfully this
|
||
is no longer the case though, thanks to a helper function
|
||
`org-export-link-localise' that’s just been added to `ox.el'.
|
||
|
||
Using `org-persist.el' this acquires a local copy of the remote
|
||
resource and substitutes it in for the remote link. This is currently
|
||
utilised in `ox-latex.el' to provide support for not just HTTPS links
|
||
but also tramp files!
|
||
|
||
<file:figures/ox-latex-image-link-localisation-demo.png>
|
||
|
||
While this is currently only implemented for `ox-latex', this can be
|
||
applied generally, and so there’s a good chance you’ll hear more about
|
||
this in the future.
|
||
|
||
There are also thoughts of moving this to the links file (`ol.el')
|
||
which would make this functionality more broadly accessible (e.g.
|
||
using cached/local versions of a resource in other places, and
|
||
defining custom downloaders for custom link types).
|
||
|
||
|
||
Other improvements
|
||
══════════════════
|
||
|
||
⁃ Produce less native-comp warnings _Ihor Radchenko_
|
||
⁃ Add a header to the clock report table _Samim Pezeshki_
|
||
⁃ More verbose test failure summary _Max Nikulin_
|
||
⁃ Parallelise `make'ing the docs _Marco Wahl_
|
||
⁃ More org-element tests _Ihor Radchenko_
|
||
|
||
|
||
Bugfixes
|
||
════════
|
||
|
||
⁃ Fix formatting in elisp-link prompt _TEC_
|
||
⁃ Correct some checkdoc and compiler warnings _Ihor Radchenko_
|
||
⁃ Correct signature for `org-element-at-point' _Mark A. Hershberger_
|
||
⁃ Fix the LaTeX macron accent in org-entities _TEC_
|
||
⁃ Ignore narrowing when tangling a file _Nicolas Goaziou_
|