Publish update based on 42be4d0

This commit is contained in:
TEC 2024-01-11 15:58:55 +08:00
parent 9da369ed0d
commit 20a7d75e10
Signed by: tec
SSH Key Fingerprint: SHA256:eobz41Mnm0/iYWBvWThftS0ElEs1ftBr6jamutnXc/A
6 changed files with 341 additions and 344 deletions

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2024-01-11 Thu 11:13 -->
<!-- 2024-01-11 Thu 15:58 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>January 2022</title>
@ -18,7 +18,7 @@
<meta property="og:image:alt" content="Org unicorn logo" />
<meta property="og:article:author:first_name" content="TEC" />
<meta property="og:article:published_time" content="2022-01-31T00:00:00+0800" />
<meta property="og:article:modified_time" content="2022-02-01T00:29:24+0800" />
<meta property="og:article:modified_time" content="2024-01-11T15:57:56+0800" />
<link rel="alternate" type="application/atom+xml" title="This Month in Org" href="rss.xml" />
<link rel="icon" type="image/ico" href="favicon.ico?v=3">
<link rel="stylesheet" type="text/css" href="org-style.css">
@ -66,7 +66,7 @@ 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:
</p>
<div class="info" id="orgd3f9c2d">
<div class="info" id="org9639369">
<div style="text-align: left; margin-left: 1rem;">
<p>
The cache is actively being developed now, for the first time in years, so:
@ -83,11 +83,11 @@ The cache is actively being developed now, for the first time in years, so:
<p>
Cache warnings look something like this:
</p>
<details id='org0fb0803' class='code' open>
<details id='org54cdfd9' class='code' open>
<summary></summary>
<div class='gutter'><a href='#org0fb0803'>#</a>
<div class='gutter'><a href='#org54cdfd9'>#</a>
<button title='Copy to clipboard' onclick='copyPreToClipbord(this)'></button></div>
<pre class="example" id="org0fb0803">
<pre class="example" id="org54cdfd9">
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
@ -161,7 +161,7 @@ to provide support for not just <span class='acr'>HTTPS</span> links but also tr
</p>
<figure id="orga934733">
<figure id="org82a2995">
<img src="figures/ox-latex-image-link-localisation-demo.png" alt="ox-latex-image-link-localisation-demo.png" class="invertible">
<figcaption><span class="figure-number">Figure 1: </span>A screenshot of a (compiled to <span class='acr'>PDF</span>) LaTeX export, with an <span class='acr'>HTTPS</span> and tramp images.</figcaption>

View File

@ -1,4 +1,4 @@
# Created 2024-01-11 Thu 11:13
# Created 2024-01-11 Thu 15:58
#+title: January 2022
#+date: 2022-01-31
#+author: TEC

View File

@ -1,7 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2024-01-11 Thu 14:58 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>404</title>

View File

@ -1,7 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2024-01-11 Thu 14:58 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Archive</title>

View File

@ -1,7 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2024-01-11 Thu 14:58 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>This Month in Org</title>
@ -123,14 +122,14 @@ kind enough to whip up some benchmarks.
</p>
<figure id="orga23d521">
<figure id="org6b3b64d">
<img src="figures/org-fold-perf-shifttab-contents.svg" alt="org-fold-perf-shifttab-contents.svg" class="invertible">
<figcaption><span class="figure-number">Figure 1: </span>The scaling of <code>org-shifttab</code> showing file contents, as file size increases, with and without org-fold.</figcaption>
</figure>
<figure id="orgb160857">
<figure id="orgb84688b">
<img src="figures/org-fold-perf-shifttab-showall.svg" alt="org-fold-perf-shifttab-showall.svg" class="invertible">
<figcaption><span class="figure-number">Figure 2: </span>The scaling of <code>org-shifttab</code> showing the entire file, as file size increases, with and without org-fold.</figcaption>
@ -217,7 +216,7 @@ difference with small&#x2013;medium files, but if you a few large+ files this sh
be a <i>fantastic</i> improvement. Once again, thanks Ihor!
</p>
<div class="warning" id="org1c5c734">
<div class="warning" id="orge201479">
<p>
The change to text properties instead of overlays breaks a number of third party
packages like <kbd>evil-search</kbd> and <kbd>consult</kbd>'s <code>consult-line</code>.
@ -254,7 +253,7 @@ exports in LaTeX.
</p>
<figure id="orge84c6ba">
<figure id="org32da257">
<img src="figures/engraved-faces-sample.png" alt="engraved-faces-sample.png" class="invertible">
<figcaption><span class="figure-number">Figure 3: </span>A screenshot of an Org code block, exported to a <span class='acr'>PDF</span>, using <kbd>engrave-faces</kbd> and the <kbd>doom-one-light</kbd> theme.</figcaption>
@ -279,7 +278,7 @@ The theme can also be set on a per-block level using the LaTeX attribute
</p>
<figure id="org678d8a5">
<figure id="orgc6b18a4">
<img src="figures/engraved-faces-multitheme.png" alt="engraved-faces-multitheme.png">
<figcaption><span class="figure-number">Figure 4: </span>Seven code blocks exported to LaTeX, each with a different engrave-faces theme.</figcaption>
@ -387,7 +386,7 @@ giving it a shot.
</p>
<figure id="org76d363c">
<figure id="orgc7aca12">
<img src="figures/org-modern-readme-demo.gif" alt="org-modern-readme-demo.gif" class="invertible">
<figcaption><span class="figure-number">Figure 5: </span>A demonstration of org-modern taken from the project <span class='acr'>README</span>.</figcaption>
@ -642,7 +641,7 @@ this post.
</p>
<figure id="org9e6fb14">
<figure id="org6365dc8">
<img src="figures/celebrate-citations.svg" alt="celebrate-citations.svg" class="org-svg">
</figure>
@ -669,7 +668,7 @@ You'll just have to stick around to hear about those in a future edition of <spa
</p>
<figure id="org4c5b4b8">
<figure id="orgf5862b9">
<img src="figures/dilbert-zenos-paradox.jpg" alt="dilbert-zenos-paradox.jpg" class="invertible">
<figcaption><span class="figure-number">Figure 6: </span>It's right around the corner, I swear!</figcaption>

650
rss.xml
View File

@ -14,8 +14,8 @@
<link>https://blog.tecosaur.net/tmio/</link>
<description><![CDATA[]]></description>
<language>en</language>
<pubDate>Thu, 11 Jan 2024 14:58:28 +0800</pubDate>
<lastBuildDate>Thu, 11 Jan 2024 14:58:28 +0800</lastBuildDate>
<pubDate>Thu, 11 Jan 2024 15:58:17 +0800</pubDate>
<lastBuildDate>Thu, 11 Jan 2024 15:58:17 +0800</lastBuildDate>
<generator>Emacs 29.1 Org-mode 9.6</generator>
<webMaster>contact.tmio@tecosaur.net (TEC)</webMaster>
<image>
@ -25,155 +25,308 @@
</image>
<item>
<title>May 2022</title>
<link>https://blog.tecosaur.net/tmio/2022-05-31-folding.html</link>
<title>January 2022</title>
<link>https://blog.tecosaur.net/tmio/2022-01-31-caching.html</link>
<author>contact.tmio@tecosaur.net (TEC)</author>
<guid isPermaLink="false">https://blog.tecosaur.net/tmio/2022-05-31-folding.html</guid>
<pubDate>Thu, 02 Jun 2022 00:00:00 +0800</pubDate>
<guid isPermaLink="false">https://blog.tecosaur.net/tmio/2022-01-31-caching.html</guid>
<pubDate>Thu, 11 Jan 2024 00:00:00 +0800</pubDate>
<description><![CDATA[<p>
Finding time as of late has been more difficult than I anticipated, and on top
of that, just as I was thinking of writing last month's post, I got distracted
by an exciting patchset that has been in the works for over a year finally
getting sorted out and landing. So, I hope that some of the fun developments in
this post will make up the absense of the last one 🙂.
There are less "obvious user-facing changes" this month, but a lot of good work
has been happening 🙂.
</p>
<p>
Since it's been longer than I thought since the last standard post, we've got a
fair few commits to catch up on --- about 200. Most of these are miscellaneous
minor improvements and bugfixes, but a few notable changes have arrived too.
The cache continues to make strides
</p>
<p>
Folding
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.
</p>
<p>
The fabulous new folding engine (<kbd>org-fold-core</kbd>) should noticeably improve Org's
performance with large files. It contains a number of key optimisations to
improve speed, namely:
Deferring fontification of folded regions
Using text properties (\(\mathcal{O}(n \log n)\)) instead of overlays (\(\mathcal{O}(n^2)\)) for folded regions
A collection of aggressive optimisations available under <code>org-fold-core--optimise-for-huge-buffers</code>
Convert text properties to overlays for <kbd>isearch</kbd> (which currently only supports overlays)
This is no longer the case! We're finally confident enough to flip
<code>org-element-use-cache</code>'s default from <code>nil</code> to <code>t</code>. I mentioned some of the
improvements in <a href="https://blog.tecosaur.net/tmio/2021-11-30-element.html#orgcd93b38">November</a>, however Ihor has continued to make strides with the
cache.
</p>
<p>
How noticeable is the overall performance impact? Well, I poked Ihor and he was
kind enough to whip up some benchmarks.
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:
</p>
<figure id="orgcde4607">
<img src="https://blog.tecosaur.net/tmio/figures/org-fold-perf-shifttab-contents.svg" alt="org-fold-perf-shifttab-contents.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 1: </span>The scaling of <code>org-shifttab</code> showing file contents, as file size increases, with and without org-fold.</figcaption>
</figure>
<figure id="orgbea5769">
<img src="https://blog.tecosaur.net/tmio/figures/org-fold-perf-shifttab-showall.svg" alt="org-fold-perf-shifttab-showall.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 2: </span>The scaling of <code>org-shifttab</code> showing the entire file, as file size increases, with and without org-fold.</figcaption>
</figure>
<div class="info" id="org0a75f64">
<div style="text-align: left; margin-left: 1rem;">
<p>
The cache is actively being developed now, for the first time in years, so:
Ignore old advice (like <a href="https://emacs.stackexchange.com/questions/42006/trouble-with-org-mode">this</a>) which suggests disabling the cache
Note that the cache will <i>not</i> stuff anything up, at worst it will emit a warning
If you see an org-cache warning <i>please</i> report it to the Org mailing list ---
<kbd>emacs-orgmode@gnu.org</kbd>.
</p>
<p>
Well this looks very promising[fn:Note the difference in scale, org-fold makes
the most difference in the graph where the times are an order of magnitude
more.]! Let's see how much of an improvement this is overall.
Cache warnings look something like this:
</p>
<table>
<caption class="t-above"><span class="table-number">Table 1:</span> Time to run <kbd>org-shifttab</kbd> twice, cycling through all three display modes (in seconds).</caption>
<colgroup>
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">File size (Mb)</th>
<th scope="col" class="org-right">Headings (thousands)</th>
<th scope="col" class="org-right">Bugfix (no org-fold)</th>
<th scope="col" class="org-right">Main (with org-fold)</th>
<th scope="col" class="org-right">Improvement</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">18</td>
<td class="org-right">36</td>
<td class="org-right">115.31</td>
<td class="org-right">0.89</td>
<td class="org-right">99%</td>
</tr>
<tr>
<td class="org-right">8.8</td>
<td class="org-right">24</td>
<td class="org-right">19.03</td>
<td class="org-right">0.48</td>
<td class="org-right">97%</td>
</tr>
<tr>
<td class="org-right">4.4</td>
<td class="org-right">5</td>
<td class="org-right">3.79</td>
<td class="org-right">0.13</td>
<td class="org-right">97%</td>
</tr>
<tr>
<td class="org-right">2.2</td>
<td class="org-right">2</td>
<td class="org-right">1.29</td>
<td class="org-right">0.08</td>
<td class="org-right">94%</td>
</tr>
<tr>
<td class="org-right">1.1</td>
<td class="org-right">1</td>
<td class="org-right">0.50</td>
<td class="org-right">0.045</td>
<td class="org-right">91%</td>
</tr>
</tbody>
</table>
<pre class="example" id="org20005ac">
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...
</pre>
<p>
To be clear, even the smallest file in this data --- a 1.1 Mb Org file with around
a thousand headings, is fairly large. So, it's unlikely you'll notice much of a
difference with small--medium files, but if you a few large+ files this should
be a <i>fantastic</i> improvement. Once again, thanks Ihor!
</p>
<div class="warning" id="orgbef505f">
<p>
The change to text properties instead of overlays breaks a number of third party
packages like <kbd>evil-search</kbd> and <kbd>consult</kbd>'s <code>consult-line</code>.
If you are involved in any packages affected by this, you'll either want to
consider supporting invisible text, or look at <code>isearch-filter-predicate</code> and
<code>isearch-mode-end-hook</code>, which <kbd>org-fold</kbd> now uses.
If you're an end-user, perhaps politely make an issue on the repo for a project
<i>if no issue currently exists</i>, and either:
Stay off Org's bleeding edge till the package ecosystem has adapted to this change
Help the packages you use adapt to this change
Set <code>org-fold-core-style</code> to <code>overlays</code> to restore the old behaviour
A good way to start is by copying this to your clipboard and then trying <kbd>M-x
org-submit-bug-report</kbd>. 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 😆.
</p>
</div>
</div>
<p>
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
<code>org-element--cache-avoid-synchronous-headline-re-parsing</code> for a bit more
information). This improvement is particularly noticeable when refiling and
archiving headings.
</p>
<p>
Persisting data
</p>
<p>
In October, Ihor started work on <kbd>org-persist.el</kbd> --- a way to <i>persist</i> 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.
</p>
<p>
Over the past month, Ihor has <i>doubled</i> the total number of commits applied to
<kbd>org-persist.el</kbd> 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.
</p>
<p>
Exporting documents with remote resources
</p>
<p>
Ever linked to an online image like
<kbd>https://orgmode.org/resources/img/org-mode-unicorn.svg</kbd> 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 <code>org-export-link-localise</code> that's just been added to <kbd>ox.el</kbd>.
</p>
<p>
Using <kbd>org-persist.el</kbd> this acquires a local copy of the remote resource and
substitutes it in for the remote link. This is currently utilised in <kbd>ox-latex.el</kbd>
to provide support for not just HTTPS links but also tramp files!
</p>
<figure id="org6780764">
<img src="https://blog.tecosaur.net/tmio/figures/ox-latex-image-link-localisation-demo.png" alt="ox-latex-image-link-localisation-demo.png">
<figcaption><span class="figure-number">Figure 1: </span>A screenshot of a (compiled to PDF) LaTeX export, with an HTTPS and tramp images.</figcaption>
</figure>
<p>
While this is currently only implemented for <kbd>ox-latex</kbd>, this can be applied
generally, and so there's a good chance you'll hear more about this in the future.
</p>
<p>
There are also thoughts of moving this to the links file (<kbd>ol.el</kbd>) 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).
</p>
<p>
Other improvements
Produce less native-comp warnings <span class="underline">Ihor Radchenko</span>
Add a header to the clock report table <span class="underline">Samim Pezeshki</span>
More verbose test failure summary <span class="underline">Max Nikulin</span>
Parallelise <kbd>make</kbd>ing the docs <span class="underline">Marco Wahl</span>
More org-element tests <span class="underline">Ihor Radchenko</span>
Bugfixes
Fix formatting in elisp-link prompt <span class="underline">TEC</span>
Correct some checkdoc and compiler warnings <span class="underline">Ihor Radchenko</span>
Correct signature for <code>org-element-at-point</code> <span class="underline">Mark A. Hershberger</span>
Fix the LaTeX macron accent in org-entities <span class="underline">TEC</span>
Ignore narrowing when tangling a file <span class="underline">Nicolas Goaziou</span>
</p>
]]></description>
</item>
<item>
<title>May 2022</title>
<link>https://blog.tecosaur.net/tmio/2022-05-31-folding.html</link>
<author>contact.tmio@tecosaur.net (TEC)</author>
<guid isPermaLink="false">https://blog.tecosaur.net/tmio/2022-05-31-folding.html</guid>
<pubDate>Thu, 02 Jun 2022 00:00:00 +0800</pubDate>
<description><![CDATA[<p>
Finding time as of late has been more difficult than I anticipated, and on top
of that, just as I was thinking of writing last month's post, I got distracted
by an exciting patchset that has been in the works for over a year finally
getting sorted out and landing. So, I hope that some of the fun developments in
this post will make up the absense of the last one 🙂.
</p>
<p>
Since it's been longer than I thought since the last standard post, we've got a
fair few commits to catch up on --- about 200. Most of these are miscellaneous
minor improvements and bugfixes, but a few notable changes have arrived too.
</p>
<p>
Folding
</p>
<p>
The fabulous new folding engine (<kbd>org-fold-core</kbd>) should noticeably improve Org's
performance with large files. It contains a number of key optimisations to
improve speed, namely:
Deferring fontification of folded regions
Using text properties (\(\mathcal{O}(n \log n)\)) instead of overlays (\(\mathcal{O}(n^2)\)) for folded regions
A collection of aggressive optimisations available under <code>org-fold-core--optimise-for-huge-buffers</code>
Convert text properties to overlays for <kbd>isearch</kbd> (which currently only supports overlays)
</p>
<p>
How noticeable is the overall performance impact? Well, I poked Ihor and he was
kind enough to whip up some benchmarks.
</p>
<figure id="orgd512bbb">
<img src="https://blog.tecosaur.net/tmio/figures/org-fold-perf-shifttab-contents.svg" alt="org-fold-perf-shifttab-contents.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 2: </span>The scaling of <code>org-shifttab</code> showing file contents, as file size increases, with and without org-fold.</figcaption>
</figure>
<figure id="org56ebae9">
<img src="https://blog.tecosaur.net/tmio/figures/org-fold-perf-shifttab-showall.svg" alt="org-fold-perf-shifttab-showall.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 3: </span>The scaling of <code>org-shifttab</code> showing the entire file, as file size increases, with and without org-fold.</figcaption>
</figure>
<p>
Well this looks very promising[fn:Note the difference in scale, org-fold makes
the most difference in the graph where the times are an order of magnitude
more.]! Let's see how much of an improvement this is overall.
</p>
<table>
<caption class="t-above"><span class="table-number">Table 1:</span> Time to run <kbd>org-shifttab</kbd> twice, cycling through all three display modes (in seconds).</caption>
<colgroup>
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">File size (Mb)</th>
<th scope="col" class="org-right">Headings (thousands)</th>
<th scope="col" class="org-right">Bugfix (no org-fold)</th>
<th scope="col" class="org-right">Main (with org-fold)</th>
<th scope="col" class="org-right">Improvement</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">18</td>
<td class="org-right">36</td>
<td class="org-right">115.31</td>
<td class="org-right">0.89</td>
<td class="org-right">99%</td>
</tr>
<tr>
<td class="org-right">8.8</td>
<td class="org-right">24</td>
<td class="org-right">19.03</td>
<td class="org-right">0.48</td>
<td class="org-right">97%</td>
</tr>
<tr>
<td class="org-right">4.4</td>
<td class="org-right">5</td>
<td class="org-right">3.79</td>
<td class="org-right">0.13</td>
<td class="org-right">97%</td>
</tr>
<tr>
<td class="org-right">2.2</td>
<td class="org-right">2</td>
<td class="org-right">1.29</td>
<td class="org-right">0.08</td>
<td class="org-right">94%</td>
</tr>
<tr>
<td class="org-right">1.1</td>
<td class="org-right">1</td>
<td class="org-right">0.50</td>
<td class="org-right">0.045</td>
<td class="org-right">91%</td>
</tr>
</tbody>
</table>
<p>
To be clear, even the smallest file in this data --- a 1.1 Mb Org file with around
a thousand headings, is fairly large. So, it's unlikely you'll notice much of a
difference with small--medium files, but if you a few large+ files this should
be a <i>fantastic</i> improvement. Once again, thanks Ihor!
</p>
<div class="warning" id="orgb9edafc">
<p>
The change to text properties instead of overlays breaks a number of third party
packages like <kbd>evil-search</kbd> and <kbd>consult</kbd>'s <code>consult-line</code>.
If you are involved in any packages affected by this, you'll either want to
consider supporting invisible text, or look at <code>isearch-filter-predicate</code> and
<code>isearch-mode-end-hook</code>, which <kbd>org-fold</kbd> now uses.
If you're an end-user, perhaps politely make an issue on the repo for a project
<i>if no issue currently exists</i>, and either:
Stay off Org's bleeding edge till the package ecosystem has adapted to this change
Help the packages you use adapt to this change
Set <code>org-fold-core-style</code> to <code>overlays</code> to restore the old behaviour
</p>
</div>
]]></description>
</item>
<item>
<title>Special Announcement</title>
<link>https://blog.tecosaur.net/tmio/2022-04-01-confluence.html</link>
@ -201,10 +354,10 @@
</p>
<figure id="org6a4f901">
<figure id="org0df714a">
<img src="https://blog.tecosaur.net/tmio/figures/org-markup-to-confluence.svg" alt="org-markup-to-confluence.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 3: </span>Translation between Org's syntax and our new Confluence overlords's equivalents</figcaption>
<figcaption><span class="figure-number">Figure 4: </span>Translation between Org's syntax and our new Confluence overlords's equivalents</figcaption>
</figure>
<p>
@ -382,8 +535,8 @@
Besides parsing, I had a few more challenges to overcome:
</p>
<div id="outline-container-understanding-orgmode-syntax" class="outline-3">
<h3 id="understanding-orgmode-syntax"><span class="section-number-3">3.1.</span> Understanding the OrgMode syntax and all the functionality</h3>
<div class="outline-text-3" id="text-3-1">
<h3 id="understanding-orgmode-syntax"><span class="section-number-3">4.1.</span> Understanding the OrgMode syntax and all the functionality</h3>
<div class="outline-text-3" id="text-4-1">
<p>
This is still the biggest challenge. I didn't have any idea how big and robust
OrgMode is. If I would know it at that time, I wouldn't even jump on this train.
@ -393,8 +546,8 @@
</div>
</div>
<div id="outline-container-remote-editing" class="outline-3">
<h3 id="remote-editing"><span class="section-number-3">3.2.</span> Remote editing</h3>
<div class="outline-text-3" id="text-3-2">
<h3 id="remote-editing"><span class="section-number-3">4.2.</span> Remote editing</h3>
<div class="outline-text-3" id="text-4-2">
<p>
By remote editing, I mean automatically updating content in the current
or any other file. Few examples: adding/updating properties, managing
@ -417,8 +570,8 @@
</div>
</div>
<div id="outline-container-working-with-dates" class="outline-3">
<h3 id="working-with-dates"><span class="section-number-3">3.3.</span> Working with dates</h3>
<div class="outline-text-3" id="text-3-3">
<h3 id="working-with-dates"><span class="section-number-3">4.3.</span> Working with dates</h3>
<div class="outline-text-3" id="text-4-3">
<p>
From my experience, dates are challenging in all areas of programming,
so this is not so surprising. There are some Lua plugins for dates, but
@ -430,8 +583,8 @@
</div>
</div>
<div id="outline-container-highlighting-mostly-agenda" class="outline-3">
<h3 id="highlighting-mostly-agenda"><span class="section-number-3">3.4.</span> Highlighting, mostly in Agenda view</h3>
<div class="outline-text-3" id="text-3-4">
<h3 id="highlighting-mostly-agenda"><span class="section-number-3">4.4.</span> Highlighting, mostly in Agenda view</h3>
<div class="outline-text-3" id="text-4-4">
<p>
Vim's syntax engine is fairly old, but still very much used, especially
in the Vim community. Implementation of tree-sitter slightly improved
@ -450,8 +603,8 @@
</div>
</div>
<div id="outline-container-keeping-configuration-simple" class="outline-3">
<h3 id="keeping-configuration-simple"><span class="section-number-3">3.5.</span> Keeping configuration simple and familiar to Emacs OrgMode</h3>
<div class="outline-text-3" id="text-3-5">
<h3 id="keeping-configuration-simple"><span class="section-number-3">4.5.</span> Keeping configuration simple and familiar to Emacs OrgMode</h3>
<div class="outline-text-3" id="text-4-5">
<p>
Vim-dotoo configuration was mostly Vim style, through some global
variables. I wanted to have a configuration that is familiar to an Emacs
@ -654,159 +807,6 @@
</div>
]]></description>
</item>
<item>
<title>January 2022</title>
<link>https://blog.tecosaur.net/tmio/2022-01-31-caching.html</link>
<author>contact.tmio@tecosaur.net (TEC)</author>
<guid isPermaLink="false">https://blog.tecosaur.net/tmio/2022-01-31-caching.html</guid>
<pubDate>Tue, 01 Feb 2022 00:00:00 +0800</pubDate>
<description><![CDATA[<p>
There are less "obvious user-facing changes" this month, but a lot of good work
has been happening 🙂.
</p>
<p>
The cache continues to make strides
</p>
<p>
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.
</p>
<p>
This is no longer the case! We're finally confident enough to flip
<code>org-element-use-cache</code>'s default from <code>nil</code> to <code>t</code>. I mentioned some of the
improvements in <a href="https://blog.tecosaur.net/tmio/2021-11-30-element.html#org5ee96ff">November</a>, however Ihor has continued to make strides with the
cache.
</p>
<p>
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:
</p>
<div class="info" id="org10a59c3">
<div style="text-align: left; margin-left: 1rem;">
<p>
The cache is actively being developed now, for the first time in years, so:
Ignore old advice (like <a href="https://emacs.stackexchange.com/questions/42006/trouble-with-org-mode">this</a>) which suggests disabling the cache
Note that the cache will <i>not</i> stuff anything up, at worst it will emit a warning
If you see an org-cache warning <i>please</i> report it to the Org mailing list ---
<kbd>emacs-orgmode@gnu.org</kbd>.
</p>
<p>
Cache warnings look something like this:
</p>
<pre class="example" id="org1d32da3">
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...
</pre>
<p>
A good way to start is by copying this to your clipboard and then trying <kbd>M-x
org-submit-bug-report</kbd>. 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 😆.
</p>
</div>
</div>
<p>
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
<code>org-element--cache-avoid-synchronous-headline-re-parsing</code> for a bit more
information). This improvement is particularly noticeable when refiling and
archiving headings.
</p>
<p>
Persisting data
</p>
<p>
In October, Ihor started work on <kbd>org-persist.el</kbd> --- a way to <i>persist</i> 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.
</p>
<p>
Over the past month, Ihor has <i>doubled</i> the total number of commits applied to
<kbd>org-persist.el</kbd> 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.
</p>
<p>
Exporting documents with remote resources
</p>
<p>
Ever linked to an online image like
<kbd>https://orgmode.org/resources/img/org-mode-unicorn.svg</kbd> 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 <code>org-export-link-localise</code> that's just been added to <kbd>ox.el</kbd>.
</p>
<p>
Using <kbd>org-persist.el</kbd> this acquires a local copy of the remote resource and
substitutes it in for the remote link. This is currently utilised in <kbd>ox-latex.el</kbd>
to provide support for not just HTTPS links but also tramp files!
</p>
<figure id="org967b2b5">
<img src="https://blog.tecosaur.net/tmio/figures/ox-latex-image-link-localisation-demo.png" alt="ox-latex-image-link-localisation-demo.png">
<figcaption><span class="figure-number">Figure 4: </span>A screenshot of a (compiled to PDF) LaTeX export, with an HTTPS and tramp images.</figcaption>
</figure>
<p>
While this is currently only implemented for <kbd>ox-latex</kbd>, this can be applied
generally, and so there's a good chance you'll hear more about this in the future.
</p>
<p>
There are also thoughts of moving this to the links file (<kbd>ol.el</kbd>) 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).
</p>
<p>
Other improvements
Produce less native-comp warnings <span class="underline">Ihor Radchenko</span>
Add a header to the clock report table <span class="underline">Samim Pezeshki</span>
More verbose test failure summary <span class="underline">Max Nikulin</span>
Parallelise <kbd>make</kbd>ing the docs <span class="underline">Marco Wahl</span>
More org-element tests <span class="underline">Ihor Radchenko</span>
Bugfixes
Fix formatting in elisp-link prompt <span class="underline">TEC</span>
Correct some checkdoc and compiler warnings <span class="underline">Ihor Radchenko</span>
Correct signature for <code>org-element-at-point</code> <span class="underline">Mark A. Hershberger</span>
Fix the LaTeX macron accent in org-entities <span class="underline">TEC</span>
Ignore narrowing when tangling a file <span class="underline">Nicolas Goaziou</span>
</p>
]]></description>
</item>
<item>
<title>December 2021</title>
<link>https://blog.tecosaur.net/tmio/2021-12-31-retrospection.html</link>
@ -980,7 +980,7 @@
<p>
Now, if you have a line like:
</p>
<pre class="example" id="orge364d21">
<pre class="example" id="org7f4fb98">
#+cite_export: FORMAT ...
</pre>
<p>
@ -1014,7 +1014,7 @@
<p>
This means the following forms are now all equivalent:
</p>
<pre class="example" id="org4757f3e">
<pre class="example" id="orgba6a40b">
:tangle-mode (identity #o755)
:tangle-mode o755
:tangle-mode a=rx,u+w
@ -1074,7 +1074,7 @@
</p>
<figure id="org333e404">
<figure id="org00a6529">
<img src="https://blog.tecosaur.net/tmio/figures/inline-src-block-fontified-vs-code.png" alt="inline-src-block-fontified-vs-code.png">
<figcaption><span class="figure-number">Figure 5: </span>Side-by-side comparison of a identical paragraphs using code (<code>~</code>) markup and inline source blocks (<code>src_</code>).</figcaption>
@ -1089,7 +1089,7 @@
</p>
<figure id="orgbee9f94">
<figure id="org772265f">
<img src="https://blog.tecosaur.net/tmio/figures/inline-src-block-julia-demo.png" alt="inline-src-block-julia-demo.png">
<figcaption><span class="figure-number">Figure 6: </span>A paragraph making use of <i>evaluated</i> inline source blocks. Note that the <kbd>⟨11⟩</kbd> is a prettified results macro (using a potential future org-mode patch).</figcaption>
@ -1199,7 +1199,7 @@
</p>
<figure id="orgf602d0c">
<figure id="orgbf0f3bc">
<img src="https://blog.tecosaur.net/tmio/figures/proportional-image-width.png" alt="proportional-image-width.png">
<figcaption><span class="figure-number">Figure 7: </span>A containing with an image set to half of the accesible text width</figcaption>
@ -1459,7 +1459,7 @@
</div>
<figure id="orga9366dd">
<figure id="orgdf7cb8c">
<img src="https://blog.tecosaur.net/tmio/figures/org-verses-example-poem-dream-within-dream.png" alt="org-verses-example-poem-dream-within-dream.png">
<figcaption><span class="figure-number">Figure 8: </span>A short Poe-em</figcaption>
@ -1615,7 +1615,7 @@
</p>
<figure id="orgb8a0254">
<figure id="orgb2a09fb">
<img src="https://blog.tecosaur.net/tmio/figures/citation-structure-full.svg" alt="citation-structure-full.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 9: </span>The full citation syntax</figcaption>
@ -1629,7 +1629,7 @@
</p>
<figure id="orgbe06549">
<figure id="org33d79d2">
<img src="https://blog.tecosaur.net/tmio/figures/org-citar-insertion.png" alt="org-citar-insertion.png">
<figcaption><span class="figure-number">Figure 10: </span>Inserting a citation with the <i>citar</i> package</figcaption>
@ -1671,7 +1671,7 @@
</p>
<figure id="org6ba6175">
<figure id="org6fc45a1">
<img src="https://blog.tecosaur.net/tmio/figures/ob-julia-latexify-rendered.png" alt="ob-julia-latexify-rendered.png">
<figcaption><span class="figure-number">Figure 11: </span>Rendered LaTeX representations of some Julia values</figcaption>
@ -1777,7 +1777,7 @@
give it a shot!
</p>
<div class="info" id="org5863410">
<div class="info" id="orgbd6c4cd">
<p>
<b>Ways you can contribute to the project</b>
</p>
@ -1958,7 +1958,7 @@
</p>
<figure id="org63df673">
<figure id="org51cf8b5">
<img src="https://blog.tecosaur.net/tmio/figures/celebrate-citations.svg" alt="celebrate-citations.svg" class="org-svg">
</figure>
@ -2057,7 +2057,7 @@
<kbd>.bib</kbd>, <kbd>.bibtex</kbd>, or <kbd>.json</kbd> extension), which we do either via the <kbd>#+bibliography</kbd>
keyword, or the variable <code>org-cite-global-bibliography</code>.
</p>
<pre class="example" id="orgf6cc135">
<pre class="example" id="orgfeefa44">
#+bibliography: orgcite.bib
</pre>
@ -2067,7 +2067,7 @@
</p>
<figure id="orgd425d14">
<figure id="org80f806a">
<img src="https://blog.tecosaur.net/tmio/figures/citation-structure-basic.svg" alt="citation-structure-basic.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 12: </span>The new citation syntax, for simple citations</figcaption>
@ -2083,11 +2083,11 @@
<kbd>#+print_bibliography</kbd> keyword, like so:
</p>
<pre class="example" id="orgb7491d3">
<pre class="example" id="org7de9f8e">
#+print_bibliography:
</pre>
<div class="info" id="orgdfbc55a">
<div class="info" id="org3d05349">
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
</div>
@ -2096,7 +2096,7 @@
<p>
So, to summarise, all one needs to get started is:
</p>
<pre class="example" id="orgc99c4c7">
<pre class="example" id="orgd85a5d4">
#+bibliography: references.bib
[cite:@key]
#+print_bibliography:
@ -2116,7 +2116,7 @@
</p>
<figure id="org565d659">
<figure id="org0380fc8">
<img src="https://blog.tecosaur.net/tmio/figures/citation-structure-full.svg" alt="citation-structure-full.svg" class="org-svg">
<figcaption><span class="figure-number">Figure 13: </span>The new citations syntax, in full</figcaption>
@ -2420,7 +2420,7 @@
on a per-document basis via the <kbd>#+cite_export</kbd> keyword. Here, I shall use the <kbd>csl</kbd>
processor,
</p>
<pre class="example" id="org8eb4c7b">
<pre class="example" id="orgce34f87">
#+cite_export: csl
</pre>
@ -2429,7 +2429,7 @@
style by giving a triplet of parameters <code class="src src-elisp">(PROCESSOR BIBLIOGRAPHY-STYLE CITATION-STYLE)</code> instead of just the processor. You can also use this triplet of
values with the <kbd>#+cite_export</kbd> keyword
</p>
<pre class="example" id="org5ebbfda">
<pre class="example" id="org725589d">
#+cite_export: processor bibliography-style citation-style
</pre>
@ -2440,7 +2440,7 @@
options to a <code class="src src-LaTeX"><span class="org-keyword">\printbibliography</span></code> command, allowing for the
following:
</p>
<pre class="example" id="org2e559f3">
<pre class="example" id="org7b1e687">
#+print_bibliography: :section 2 :heading subbibliography
#+print_bibliography: :keyword abc,xyz :title "Primary Sources"
</pre>
@ -2486,7 +2486,7 @@
either absolute or relative to <code>org-cite-csl-styles-dir</code>. For example, if I
download <kbd>apa.csl</kbd> I can use it like so:
</p>
<pre class="example" id="org85d3e0c">
<pre class="example" id="org95875d4">
#+cite_export: csl ~/Downloads/apa.csl
</pre>
@ -2515,14 +2515,14 @@
</p>
<figure id="orgf67316e">
<figure id="org5920f47">
<img src="https://blog.tecosaur.net/tmio/figures/zotero-export-library.png" alt="zotero-export-library.png">
<figcaption><span class="figure-number">Figure 14: </span>Zotero library right click context menu, showing the export option</figcaption>
</figure>
<figure id="org99c846a">
<figure id="orgee18766">
<img src="https://blog.tecosaur.net/tmio/figures/zotero-export-options-prompt.png" alt="zotero-export-options-prompt.png">
<figcaption><span class="figure-number">Figure 15: </span>Zotero collection export dialog</figcaption>
@ -2534,7 +2534,7 @@
</p>
<figure id="org4827996">
<figure id="org2eb3ade">
<img src="https://blog.tecosaur.net/tmio/figures/zotero-cite-styles-menu.png" alt="zotero-cite-styles-menu.png">
<figcaption><span class="figure-number">Figure 16: </span>Zotero CSL style management within preferences</figcaption>
@ -2554,7 +2554,7 @@
To then use the citation style defined by <kbd>~/Zotero/styles/apa.csl</kbd> one can then
simply refer to <kbd>apa.csl</kbd> when using the <kbd>#+cite_export</kbd> keyword.
</p>
<pre class="example" id="org6f23d37">
<pre class="example" id="org8f421dc">
#+cite_export: csl apa.csl
</pre>
</div>
@ -2643,7 +2643,7 @@
</p>
<figure id="orge02d862">
<figure id="orgfae7781">
<img src="https://blog.tecosaur.net/tmio/figures/org-roam-graph-2d-overview.png" alt="org-roam-graph-2d-overview.png">
<figcaption><span class="figure-number">Figure 17: </span>org-roam-ui's 2D overview.</figcaption>
@ -2664,7 +2664,7 @@
</p>
<figure id="org71abeb7">
<figure id="org48ab00d">
<img src="https://blog.tecosaur.net/tmio/figures/org-roam-ui-in-emacs.png" alt="org-roam-ui-in-emacs.png">
<figcaption><span class="figure-number">Figure 18: </span>Embed org-roam-ui in Emacs using xwidget-webkit.</figcaption>
@ -2749,7 +2749,7 @@
</p>
<figure id="org5f99ef8">
<figure id="orgc767572">
<img src="https://blog.tecosaur.net/tmio/figures/dilbert-zenos-paradox.jpg" alt="dilbert-zenos-paradox.jpg">
<figcaption><span class="figure-number">Figure 19: </span>It's right around the corner, I swear!</figcaption>
@ -2766,7 +2766,7 @@
</p>
<figure id="orgaf79b56">
<figure id="org7fbf9bc">
<img src="https://blog.tecosaur.net/tmio/figures/org-latex-default-reference-to-sec.png" alt="org-latex-default-reference-to-sec.png">
<figcaption><span class="figure-number">Figure 20: </span>A LaTeX export of a simple document with a reference to both the first and second section. "2" what? Section 2, Table 2, Figure 2, ...</figcaption>
@ -2779,7 +2779,7 @@
</p>
<figure id="org3e9e74b">
<figure id="orgdd7bb5a">
<img src="https://blog.tecosaur.net/tmio/figures/org-latex-cref-reference-to-sec.png" alt="org-latex-cref-reference-to-sec.png">
<figcaption><span class="figure-number">Figure 21: </span>A LaTeX export of the same document, but now using <code>cleveref</code>. Note the change from "1" and "2" to "Section 1" and "Section 2".</figcaption>
@ -2861,7 +2861,7 @@
keyword, this works nicely in HTML too 🙂.
</p>
<figure id="org12b3ab5">
<figure id="orge27eb21">
<img src="https://blog.tecosaur.net/tmio/figures/salvador-dali-persistence-of-memory.jpg" alt="salvador-dali-persistence-of-memory.jpg">
<figcaption><span class="figure-number">Figure 22: </span>A famous surrealist painting</figcaption>
@ -2923,7 +2923,7 @@
Org is nice and does the right thing<sup>TM</sup> by including the caption at the top.
</p>
<figure id="org17bce8d">
<figure id="org6b96778">
<img src="https://blog.tecosaur.net/tmio/figures/org-table-to-latex-example.png" alt="org-table-to-latex-example.png">
<figcaption><span class="figure-number">Figure 23: </span>Look ma, I put the caption in the right place.</figcaption>
@ -3206,7 +3206,7 @@
</p>
<figure id="orgbe2c92e">
<figure id="org500f0ee">
<img src="https://blog.tecosaur.net/tmio/figures/screenshot-of-updates-orgmode-org.png" alt="screenshot-of-updates-orgmode-org.png">
<figcaption><span class="figure-number">Figure 24: </span>A screenshot of <a href="https://updates.orgmode.org/">updates.orgmode.org</a></figcaption>
@ -3240,7 +3240,7 @@
</p>
<figure id="orgd5283f0">
<figure id="orgc9e1286">
<img src="https://github.com/larsmagne/meme/raw/master/images/Grandma-Finds-The-Internet.jpg" alt="Grandma-Finds-The-Internet.jpg">
<figcaption><span class="figure-number">Figure 25: </span>Org mode discovers the internet</figcaption>
@ -3261,7 +3261,7 @@
</p>
<figure id="org25e0649">
<figure id="org233a034">
<img src="https://blog.tecosaur.net/tmio/figures/org-edit-special-latex-fragment.png" alt="org-edit-special-latex-fragment.png">
<figcaption><span class="figure-number">Figure 26: </span>Running <code>org-edit-special</code> on an inline LaTeX fragment</figcaption>
@ -3279,7 +3279,7 @@
</p>
<figure id="org4421f16">
<figure id="org4a2c3ee">
<img src="https://blog.tecosaur.net/tmio/figures/org-startup-num-and-levels.png" alt="org-startup-num-and-levels.png">
<figcaption><span class="figure-number">Figure 27: </span>Opening a buffer with the new <kbd>num</kbd> and <kbd>show2levels</kbd> startup options</figcaption>