2024-01-09 18:20:48 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
<!-- 2022 - 03 - 03 Thu 01:39 -->
< meta charset = "utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > May 2021< / title >
< meta name = "author" content = "TEC" / >
< meta name = "generator" content = "org mode" / >
< meta name = "theme-color" content = "#77aa99" / >
< meta property = "og:type" content = "article" / >
< meta property = "og:title" content = "May 2021" / >
< meta property = "og:description" content = "Asynchronous code execution" / >
2024-01-09 19:19:11 +00:00
< meta property = "og:image" content = "https://blog.tecosaur.net/tmio/org-icon.png" / >
2024-01-09 18:20:48 +00:00
< meta property = "og:image:type" content = "image/png" / >
< meta property = "og:image:width" content = "464" / >
< meta property = "og:image:height" content = "512" / >
< 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 = "2021-05-31T00:00:00+0800" / >
< meta property = "og:article:modified_time" content = "2021-12-01T17:35:20+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" >
< link rel = "stylesheet" type = "text/css" href = "blog.css" >
< script src = "org-style.js" > < / script >
< / head >
< body >
< input type = 'checkbox' id = 'theme-switch' > < div id = 'page' > < label id = 'switch-label' for = 'theme-switch' > < / label > < div id = "preamble" class = "status" >
< header >
< h4 > < a href = "https://orgmode.org" class = "orgicorn" > < img src = "org-icon-monochrome.svg" class = "invertible" > < / a >
2024-01-09 19:19:11 +00:00
< a href = "https://blog.tecosaur.net/tmio/" class = "title" >
2024-01-09 18:20:48 +00:00
This Month in Org< / a >
< a href = "rss.xml" title = "RSS Feed" type = "application/rss+xml" class = "rss" >
< img src = "rss.svg" alt = "RSS icon" / >
< / a > < / h4 >
< / header >
< / div >
< div id = "content" >
< header class = "page-header" > < div class = "page-meta" > 2021-05-31, < span class = 'acr' > TEC< / span > < / div >
< h1 class = "title" > May 2021< / h1 >
< p class = "subtitle" role = "doc-subtitle" > Asynchronous code execution< / p >
< / header >
< div id = "outline-container-async-babel-sessions" class = "outline-2" >
< h2 id = "async-babel-sessions" > Async Babel sessions have landed< a aria-hidden = "true" href = "#async-babel-sessions" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-async-babel-sessions" >
< p >
Jack Kamm has made a fantastic contribution to Org: < kbd > ob-comint.el< / kbd > now supports
asynchronous output from source blocks < i > with full support for sessions< / i > 🎉.
< / p >
< p >
If you haven’ t used sessions before, you’ re in for a treat! By simply assigning
a named session to a source code block, e.g. < kbd > :session foo< / kbd > , the same process will
be reused for any other code blocks that specify the < kbd > foo< / kbd > session. To do this for
a certain language across the entire document, you can set the header argument
property, i.e.
< / p >
< details id = 'async-babel-sessions,code--1' class = 'code' open > < summary > < span class = "lang" > Org mode< / span > < / summary >
< div class = 'gutter' >
< a href = '#async-babel-sessions,code--1' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-org" > < span class = "org-org-meta-line" > #+property: header-args:lang :session foo< / span >
< / pre >
< / div >
< / details >
< p >
Along with the asynchronous process communication in < kbd > ob-comint.el< / kbd > , we have an
implementation for < b > Python< / b > , and we should see support for < b > R< / b > and < b > Ruby< / b > in the
not-too-distant future 😍.
< / p >
< p >
To use this, just add the < kbd > :async< / kbd > parameter to a python block. Instead of Emacs
freezing until it completes execution, you’ ll see a placeholder inserted which is
replaced by the result when it is ready.
< / p >
< figure >
< video width = "100%" height = "auto" autoplay loop muted class = "doom-one" >
< source src = "figures/org-async-python-demo.mp4" type = "video/mp4" / >
< / video >
< figcaption >
< span class = "figure-number" > Figure 0:< / span >
A demonstration of the new asyncronous Python execution capabilities.
< / figcaption >
< / figure >
< p >
< a href = "https://github.com/nnicandro/emacs-jupyter" > emacs-jupyter< / a > allowed for asynchronous code execution (with sessions), but it’ s
great to have a solution that doesn’ t require Jupyter kernels, and is part of
Org.
< / p >
< / div >
< / div >
< div id = "outline-container-font-lock-inline" class = "outline-2" >
< h2 id = "font-lock-inline" > Font lock for inline export snippets< a aria-hidden = "true" href = "#font-lock-inline" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-font-lock-inline" >
< p >
Now, this isn’ t necessarily a significant change, but I don’ t think many people
know about this feature so I’ ll take the opportunity to go over it 🙂.
< / p >
< p >
If you want to include a snippet of < span class = 'acr' > HTML< / span > /LaTeX etc. when exporting to that
format, you can use a < kbd > #+begin_export html< / kbd > block which simply includes the
enclosed content verbatim. This doesn’ t really work for small inline snippets
though — but never fear, Org has < i > inline< / i > export snippets which simply follow the
form < code class = "src src-org" > < span class = "org-comment" > @@< / span > < span class = "org-org-tag" > format:< / span > content< span class = "org-comment" > @@< / span > < / code > . For example:
< / p >
< details id = 'font-lock-inline,code--1' class = 'code' open > < summary > < span class = "lang" > Org mode< / span > < / summary >
< div class = 'gutter' >
< a href = '#font-lock-inline,code--1' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-org" > I love using Org to export to < span class = "org-comment" > @@< / span > < span class = "org-org-tag" > html:< / span > < abbr title="Hyper Text Markup Language"> HTML< /abbr> < span class = "org-comment" > @@< / span > < span class = "org-comment" > @@< / span > < span class = "org-org-tag" > latex:< / span > < span class = "org-org-block" > < span class = "custom" > < span class = "org-font-latex-sedate" > < span class = "org-keyword" > \LaTeX< / span > < / span > < / span > < / span > < span class = "org-org-block" > < span class = "custom" > {}< / span > < / span > < span class = "org-comment" > @@< / span > documents.
< / pre >
< / div >
< / details >
< p >
which will export to < span class = 'acr' > HTML< / span > as,
< / p >
< details id = 'font-lock-inline,code--2' class = 'code' open > < summary > < span class = "lang" > HTML< / span > < / summary >
< div class = 'gutter' >
< a href = '#font-lock-inline,code--2' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-html" > I love using Org to export to < < span class = "org-function-name" > abbr< / span > < span class = "org-variable-name" > title< / span > =< span class = "org-string" > "Hyper Text Markup Language"< / span > > HTML< /< span class = "org-function-name" > abbr< / span > > documents.
< / pre >
< / div >
< / details >
< p >
and then in LaTeX will be,
< / p >
< details id = 'font-lock-inline,code--3' class = 'code' open > < summary > < span class = "lang" > LaTeX< / span > < / summary >
< div class = 'gutter' >
< a href = '#font-lock-inline,code--3' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-LaTeX" > I love using Org to export to < span class = "org-font-latex-sedate" > < span class = "org-keyword" > \LaTeX< / span > < / span > {} documents.
< / pre >
< / div >
< / details >
< p >
isn’ t that neat!
< / p >
< p >
Now you’ ll find the < kbd > @@< / kbd > parts using the comment face and the < kbd > format:< / kbd > bit using the
Org tag’ s face. It’ s a small change, but it makes it easier to see what’ s going on.
< / p >
< p >
No mode-specific syntax highlighting yet, but that may come in the future 😉.
< / p >
< / div >
< / div >
< div id = "outline-container-plot-your-results" class = "outline-2" >
< h2 id = "plot-your-results" > < kbd > #+plot< / kbd > your < kbd > #+results< / kbd > < a aria-hidden = "true" href = "#plot-your-results" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-plot-your-results" >
< p >
Org-plot has been getting some more love as of late (see < a href = "2021-04-30-export-plot.html" > last month’ s post< / a > ), and
that hasn’ t stopped yet. This month there’ s been a fairly minor change that I’ m
quite a fan of. If you have a source block that produces a table of < kbd > #+results< / kbd > , you
can now put a < kbd > #+plot< / kbd > statement immediately above to get a visualisation of those
results!
< / p >
< details id = 'plot-your-results,code--1' class = 'code' open > < summary > < span class = "lang" > Org mode< / span > < / summary >
< div class = 'gutter' >
< a href = '#plot-your-results,code--1' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-org" > < span class = "org-org-block-begin-line" > #+begin_src python< / span >
< span class = "org-org-block" > < span class = "org-comment-delimiter" > # < / span > < / span > < span class = "org-org-block" > < span class = "org-comment" > pretend this is some profound source of information< / span > < / span >
< span class = "org-org-block" > < span class = "org-keyword" > return< / span > < / span > < span class = "org-org-block" > [[i, i^< / span > < span class = "org-org-block" > < span class = "org-highlight-numbers-number" > 3< / span > < / span > < span class = "org-org-block" > - < / span > < span class = "org-org-block" > < span class = "org-highlight-numbers-number" > 4< / span > < / span > < span class = "org-org-block" > *i^< / span > < span class = "org-org-block" > < span class = "org-highlight-numbers-number" > 2< / span > < / span > < span class = "org-org-block" > - < / span > < span class = "org-org-block" > < span class = "org-highlight-numbers-number" > 2< / span > < / span > < span class = "org-org-block" > *i] < / span > < span class = "org-org-block" > < span class = "org-keyword" > for< / span > < / span > < span class = "org-org-block" > i < / span > < span class = "org-org-block" > < span class = "org-keyword" > in< / span > < / span > < span class = "org-org-block" > < / span > < span class = "org-org-block" > < span class = "org-builtin" > range< / span > < / span > < span class = "org-org-block" > (< / span > < span class = "org-org-block" > < span class = "org-highlight-numbers-number" > 5< / span > < / span > < span class = "org-org-block" > )]< / span >
< span class = "org-org-block-end-line" > #+end_src< / span >
< span class = "org-org-meta-line" > #+plot: ind:1< / span >
< span class = "org-org-meta-line" > #+RESULTS:< / span >
< span class = "org-org-table" > | 0 | 1 |< / span >
< span class = "org-org-table" > | 1 | -2 |< / span >
< span class = "org-org-table" > | 2 | 7 |< / span >
< span class = "org-org-table" > | 3 | 8 |< / span >
< span class = "org-org-table" > | 4 | 13 |< / span >
< / pre >
< / div >
< / details >
< p >
As usual, this relies on < kbd > gnuplot< / kbd > being present. You can read more
about it in the < a href = "https://orgmode.org/manual/Org-Plot.html" > manual< / a > .
< / p >
< / div >
< / div >
< div id = "outline-container-fancier-latex-verses" class = "outline-2" >
< h2 id = "fancier-latex-verses" > Fancier LaTeX verses< a aria-hidden = "true" href = "#fancier-latex-verses" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-fancier-latex-verses" >
< p >
With the use of < kbd > verse.sty< / kbd > you can now export fancier verses from Org, as verse
blocks now support four new attributes:
< / p >
< ul class = "org-ul" >
< li > < kbd > :lines< / kbd > for the numbering interval.< / li >
< li > < kbd > :center< / kbd > which can be set to < kbd > t< / kbd > and works as long as,
< ul class = "org-ul" >
< li > < kbd > :versewidth< / kbd > , the longest line in the verse as a text string is set.< / li >
< / ul > < / li >
< li > You can also easily add arbitrary LaTeX code to be included with < kbd > :latexcode< / kbd > .< / li >
< / ul >
< details id = 'fancier-latex-verses,code--1' class = 'code' open > < summary > < span class = "lang" > Org mode< / span > < / summary >
< div class = 'gutter' >
< a href = '#fancier-latex-verses,code--1' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-org" > < span class = "org-org-meta-line" > #+latex_header: \usepackage{verse}< / span >
< span class = "org-org-meta-line" > #+latex: \poemtitle{A Dream Within a Dream}< / span >
< span class = "org-org-meta-line" > #+attr_latex: :lines 3 :center t< / span >
< span class = "org-org-meta-line" > #+attr_latex: :versewidth Through my fingers to the deep,< / span >
< span class = "org-org-block-begin-line" > #+begin_verse< / span >
< span class = "org-org-verse" > Take this kiss upon the brow!< / span >
< span class = "org-org-verse" > And, in parting from you now,< / span >
< span class = "org-org-verse" > Thus much let me avow — < / span >
< span class = "org-org-verse" > You are not wrong, who deem< / span >
< span class = "org-org-verse" > That my days have been a dream;< / span >
< span class = "org-org-verse" > Yet if hope has flown away< / span >
< span class = "org-org-verse" > In a night, or in a day,< / span >
< span class = "org-org-verse" > In a vision, or in none,< / span >
< span class = "org-org-verse" > Is it therefore the less < / span > < span class = "org-org-verse" > < span class = "org-italic" > gone?< / span > < / span >
< span class = "org-org-verse" > < span class = "org-italic" > All< / span > < / span > < span class = "org-org-verse" > that we see or seem< / span >
< span class = "org-org-verse" > Is but a dream within a dream.< / span >
< span class = "org-org-verse" > I stand amid the roar< / span >
< span class = "org-org-verse" > Of a surf-tormented shore,< / span >
< span class = "org-org-verse" > And I hold within my hand< / span >
< span class = "org-org-verse" > Grains of the golden sand — < / span >
< span class = "org-org-verse" > How < / span > < span class = "org-org-verse" > < span class = "org-writegood-weasels" > few< / span > < / span > < span class = "org-org-verse" > ! yet how they creep< / span >
< span class = "org-org-verse" > Through my fingers to the deep,< / span >
< span class = "org-org-verse" > While I weep — while I weep!< / span >
< span class = "org-org-verse" > O God! Can I not grasp< / span >
< span class = "org-org-verse" > Them with a tighter clasp?< / span >
< span class = "org-org-verse" > O God! can I not save< / span >
< span class = "org-org-verse" > < span class = "org-italic" > One< / span > < / span > < span class = "org-org-verse" > from the pitiless wave?< / span >
< span class = "org-org-verse" > Is < / span > < span class = "org-org-verse" > < span class = "org-italic" > all< / span > < / span > < span class = "org-org-verse" > that we see or seem< / span >
< span class = "org-org-verse" > But a dream within a dream?< / span >
< span class = "org-org-block-end-line" > #+end_verse< / span >
< / pre >
< / div >
< / details >
< figure id = "org6e89901" >
< img src = "figures/org-verses-example-poem-dream-within-dream.png" alt = "org-verses-example-poem-dream-within-dream.png" class = "invertible" >
< figcaption > < span class = "figure-number" > Figure 1: < / span > A short Poe-em< / figcaption >
< / figure >
< / div >
< / div >
< div id = "outline-container-easy-zero-width" class = "outline-2" >
< h2 id = "easy-zero-width" > Easy zero-width spaces with Org< a aria-hidden = "true" href = "#easy-zero-width" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-easy-zero-width" >
< p >
Occasionally you may run into annoyances when you wish to have two different Org
elements right next to each other (no space) — for example, < b > emph< / b > asising part of
a word or putting a currency symbol immediately before an inline source block.
< / p >
< p >
The best solution to this in Org is zero-width spaces. As such, I’ ve found it
rather nice adding insertion of a zero-width space to the < code > org-mode-map< / code > in my
config. Perhaps some of you might find this solution useful too 🙂.
< / p >
< details id = 'easy-zero-width,code--1' class = 'code' open > < summary > < span class = "lang" > Emacs Lisp< / span > < / summary >
< div class = 'gutter' >
< a href = '#easy-zero-width,code--1' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-emacs-lisp" > < span class = "org-rainbow-delimiters-depth-1" > (< / span > < span class = "org-constant" > define-key< / span > < span class = "org-variable-name" > org-mode-map< / span > < span class = "org-rainbow-delimiters-depth-2" > (< / span > < span class = "org-constant" > kbd< / span > < span class = "org-string" > "M-SPC M-SPC"< / span > < span class = "org-rainbow-delimiters-depth-2" > )< / span >
< span class = "org-rainbow-delimiters-depth-2" > (< / span > < span class = "org-keyword" > lambda< / span > < span class = "org-rainbow-delimiters-depth-3" > ()< / span > < span class = "org-rainbow-delimiters-depth-3" > (< / span > < span class = "org-keyword" > interactive< / span > < span class = "org-rainbow-delimiters-depth-3" > )< / span > < span class = "org-rainbow-delimiters-depth-3" > (< / span > < span class = "org-constant" > insert< / span > < span class = "org-string" > "\u200b"< / span > < span class = "org-rainbow-delimiters-depth-3" > )< / span > < span class = "org-rainbow-delimiters-depth-2" > )< / span > < span class = "org-rainbow-delimiters-depth-1" > )< / span >
< / pre >
< / div >
< / details >
< p >
Should you want to keep zero-width spaces out of exports, that’ s easy enough to
accomplish with an < a href = "https://orgmode.org/manual/Advanced-Export-Configuration.html" > export filter< / a > .
< / p >
< details id = 'easy-zero-width,code--2' class = 'code' open > < summary > < span class = "lang" > Emacs Lisp< / span > < / summary >
< div class = 'gutter' >
< a href = '#easy-zero-width,code--2' > #< / a >
< button title = 'Copy to clipboard' onclick = 'copyPreToClipbord(this)' > ⎘< / button > < / div >
< div class = "org-src-container" >
< pre class = "src src-emacs-lisp" > < span class = "org-rainbow-delimiters-depth-1" > (< / span > < span class = "org-keyword" > defun< / span > < span class = "org-function-name" > +org-export-remove-zero-width-space< / span > < span class = "org-rainbow-delimiters-depth-2" > (< / span > text _backend _info< span class = "org-rainbow-delimiters-depth-2" > )< / span >
< span class = "org-doc" > "Remove zero width spaces from TEXT."< / span >
< span class = "org-rainbow-delimiters-depth-2" > (< / span > < span class = "org-keyword" > unless< / span > < span class = "org-rainbow-delimiters-depth-3" > (< / span > < span class = "org-constant" > org-export-derived-backend-p< / span > < span class = "org-highlight-quoted-quote" > '< / span > < span class = "org-highlight-quoted-symbol" > org< / span > < span class = "org-rainbow-delimiters-depth-3" > )< / span >
< span class = "org-rainbow-delimiters-depth-3" > (< / span > < span class = "org-constant" > replace-regexp-in-string< / span > < span class = "org-string" > "\u200b"< / span > < span class = "org-string" > ""< / span > text< span class = "org-rainbow-delimiters-depth-3" > )< / span > < span class = "org-rainbow-delimiters-depth-2" > )< / span > < span class = "org-rainbow-delimiters-depth-1" > )< / span >
< span class = "org-rainbow-delimiters-depth-1" > (< / span > < span class = "org-constant" > add-to-list< / span > < span class = "org-highlight-quoted-quote" > '< / span > < span class = "org-variable-name" > org-export-filter-final-output-functions< / span > < span class = "org-highlight-quoted-quote" > #'< / span > < span class = "org-highlight-quoted-symbol" > +org-export-remove-zero-width-space< / span > t< span class = "org-rainbow-delimiters-depth-1" > )< / span >
< / pre >
< / div >
< / details >
< / div >
< / div >
< div id = "outline-container-orgs-repos-have" class = "outline-2" >
< h2 id = "orgs-repos-have" > Org’ s repos have moved< a aria-hidden = "true" href = "#orgs-repos-have" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-orgs-repos-have" >
< ul class = "org-ul" >
< li > < kbd > contrib/< / kbd > is now at < a href = "https://git.sr.ht/~bzg/org-contrib" > https://git.sr.ht/~bzg/org-contrib< / a > for Org 9.5, and it will
be available on Non-< span class = 'acr' > GNU< / span > < span class = 'acr' > ELPA< / span > .< / li >
< li > Worg is now at < a href = "https://git.sr.ht/~bzg/worg" > https://git.sr.ht/~bzg/worg< / a > < / li >
< li > Org itself is moving to Savannah< / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-other-improvements" class = "outline-2" >
< h2 id = "other-improvements" > Other improvements< a aria-hidden = "true" href = "#other-improvements" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-other-improvements" >
< ul class = "org-ul" >
< li > Add support for < kbd > HHhMM< / kbd > date formats (e.g. < kbd > 13h20< / kbd > ) < span class = "underline" > Gustavo Barros< / span > < / li >
< li > Make tangling faster < i > and< / i > more robust < span class = "underline" > Sébastien Miquel< / span > < / li >
< li > Allow importing tables from files that < i > don’ t< / i > end in < kbd > .txt< / kbd > , < kbd > .tsv< / kbd > , or < kbd > .csv< / kbd >
< span class = "underline" > Utkarsh Singh< / span > < / li >
< li > Add an < span class = 'acr' > SVG< / span > -specific post-export < kbd > ob-plantuml< / kbd > step:
< code > org-babel-plantuml-svg-text-to-path< / code > for running Inkscape text-to-path
replacement < span class = "underline" > Nick Daly< / span > < / li >
< li > Refactor JavaScript in < kbd > ox-html< / kbd > < span class = "underline" > Anthony Carrico< / span > < / li >
< li > Set < code > org-html-head-include-scripts< / code > to < code > nil< / code > by default (was < code > t< / code > ) < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Remove LaTeX-environment type < kbd > #+results< / kbd > < span class = "underline" > < span class = 'acr' > TEC< / span > < / span > < / li >
< li > New capture templates parameter, < kbd > :refile-targets< / kbd > < span class = "underline" > Richard Garner< / span > < / li >
< li > Merge < code > org-speed-commands-default< / code > and < code > org-speed-commands-user< / code > into a new
variable, < code > org-speed-commands< / code > < span class = "underline" > Bastien Guerry< / span > < / li >
< li > < span class = 'acr' > URL< / span > recognition regex now handles up to two levels of nested brackets, and is
tested < span class = "underline" > Ihor Radchenko< / span > < / li >
< li > Cache parent heading positions for faster movement up buffers. Significantly
improves Org queries involving inheritance (~15-50x improvement) < span class = "underline" > Ihor Radchenko< / span > < / li >
< li > New command < code > org-refile-reverse< / code > bound to < kbd > C-c C-M-w< / kbd > < span class = "underline" > Adam Spiers< / span > < / li >
< li > Allow inline tasks to be dragged up/down < span class = "underline" > Bastien Guerry< / span > < / li >
< li > LaTeX export, allow arbitrary < kbd > :float< / kbd > values < span class = "underline" > Thomas S. Dye< / span > < / li >
< li > Org attach git, new option < code > org-attach-git-dir< / code > to use the attachment dir as a
git repository < span class = "underline" > Juan Manuel Macías< / span > < / li >
< li > Use a write-back buffer in Org src < span class = "underline" > Sébastien Miquel< / span > < / li >
< li > Add the < kbd > :environment< / kbd > and < kbd > :options< / kbd > LaTeX attributes to Quote blocks < span class = "underline" > Juan Manuel Macias< / span > < / li >
< li > Surround LaTeX < kbd > :options< / kbd > attribute with curly braces when it contains square
braces < span class = "underline" > Markus Huber< / span > < / li >
< li > Recognise the specific contributions of Kyle Meyer, Ihor Radchenko, and < span class = 'acr' > TEC< / span > in
the manual < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Improve test coverage < span class = "underline" > Ihor Radchenko, Kévin Le Gouguec< / span > < / li >
< li > A bikeshed of new maintainers
< ul class = "org-ul" >
< li > New maintainer for < kbd > ox-html< / kbd > — < span class = 'acr' > TEC< / span > < / li >
< li > New < kbd > ob-ledger< / kbd > maintainer — Eric S Fraga< / li >
< li > New < kbd > ob-awk< / kbd > maintainer — Tyler Smith< / li >
< li > New < kbd > ob-calc< / kbd > maintainer — Tom Gillespie< / li >
< li > New < kbd > ob-asymptote< / kbd > and < kbd > ob-coq< / kbd > maintainer — Luc Pellissier< / li >
< / ul > < / li >
< li > General code cleanup < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Documentation improvements < span class = "underline" > Bastien Guerry, Eric S Fraga, Samim Pezeshki,
Nicolar Goaziou< / span > < / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-bugfixes" class = "outline-2" >
< h2 id = "bugfixes" > Bugfixes< a aria-hidden = "true" href = "#bugfixes" > #< / a > < / h2 >
< div class = "outline-text-2" id = "text-bugfixes" >
< ul class = "org-ul" >
< li > Make < kbd > ob-gnuplot< / kbd > work on remote systems < span class = "underline" > Ihor Radchenko< / span > < / li >
< li > Stop < kbd > M-x org-toggle-link-display< / kbd > from affecting emphasis markers < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Inserting a heading before a headline < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Perform < code > org-entry-put< / code > in a read-only buffer < span class = "underline" > Ihor Radchenko< / span > < / li >
< li > Emacs 24 compatibility for < kbd > ob-C< / kbd > and < code > org-agenda-show-new-time< / code > < span class = "underline" > Kyle Meyer< / span > < / li >
< li > Maintain Org’ s keybindings when < code > visual-line-mode< / code > active < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Keep track of start of region beginning in < code > org-table-wrap-region< / code > < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Ensure correct visibility when unfolding subtree < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Corner case in < code > org--backwards-paragaph-once< / code > < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Some byte compiler silencing < span class = "underline" > Kyle Meyer< / span > < / li >
< li > Make tags filtering case-sensitive < span class = "underline" > Bastien Guerry< / span > < / li >
< li > < kbd > C-c C-c< / kbd > on a < kbd > #+plot< / kbd > line can no longer cause an error < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Ensure consistent position-translation in < kbd > org-src< / kbd > by using point for position
instead of column < span class = "underline" > < span class = 'acr' > TEC< / span > < / span > < / li >
< li > Prevent < kbd > ob-sql< / kbd > from getting stuck on an error < span class = "underline" > Ivan Sokolov< / span > < / li >
< li > Make < kbd > org-columns< / kbd > respect < code > global-visual-line-mode< / code > , and simplify tag scanning
< span class = "underline" > Nick Savage< / span > < / li >
< li > Don’ t fontify < kbd > ::< / kbd > in headlines as description item < span class = "underline" > Ihor Radchenko< / span > < / li >
< li > Handle a few corner-cases in < kbd > ob-R< / kbd > < span class = "underline" > Jeremie Juste< / span > < / li >
< li > Many fixes to < code > org-indent-line< / code > < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Make headline numbering consistent with < span class = 'acr' > TOC< / span > < span class = "underline" > Mingkai Dong< / span > < / li >
< li > Allow read-only tangling again, and ensure the correct filename is used < span class = "underline" > Sébastien Miquel< / span > < / li >
< li > Fix edge case when converting durations to minutes < span class = "underline" > Nicolas Goaziou< / span > < / li >
< li > Make org-refile work in non-file-visiting buffers < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Be more rigorous in < code > org-sort-remove-invisible< / code > < span class = "underline" > Nicolas Goaziou< / span > < / li >
< li > Don’ t update checkbox stats when heading has < kbd > todo< / kbd > < kbd > COOKIE_DATA< / kbd > < span class = "underline" > Bastien Guerry< / span > < / li >
< li > Don’ t recognise a lone < kbd > :END:< / kbd > to be forming a drawer < span class = "underline" > Nicolas Goaziou< / span > < / li >
< li > Allow new footnotes in empty table cells < span class = "underline" > Nicolas Goaziou< / span > < / li >
< / ul >
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< footer >
< p xmlns:dct = "http://purl.org/dc/terms/" xmlns:vcard = "http://www.w3.org/2001/vcard-rdf/3.0#" >
< a rel = "license" class = "external" rel = "nofollow" href = "http://creativecommons.org/publicdomain/zero/1.0/" >
< img src = "cc0.svg" alt = "CC0" class = "invertible" style = "position:relative;bottom:-0.2em" / >
< / a >
To the extent possible under law,
< a rel = "dct:publisher"
2024-01-09 19:19:11 +00:00
href="https://blog.tecosaur.net/">
2024-01-09 18:20:48 +00:00
< span property = "dct:title" > TEC< / span > < / a >
has waived all copyright and related or neighboring rights to
< span property = "dct:title" style = "font-style:italic" > This Month in Org< / span > .
< / p >
< / footer >
< script src = "theme-switcher.js" > < / script >
< / div >
< / div >
< / body >
< / html >