157 words
1 minute
Using sphinx.ext.extlinks for issue links
Anubhav Gain
2024-03-31

Using sphinx.ext.extlinks for issue links#

Datasette’s release notes are formatted using Sphinx. Almost every bullet point links to the corresponding GitHub issue, so they were full of lines that look like this:

- Fixed a bug where ``?_search=`` and ``?_sort=`` parameters were incorrectly duplicated when the filter form on the table page was re-submitted. (`#1214 <https://github.com/simonw/datasette/issues/1214>`__)

I noticed that the aspw documentation was using sphinx.ext.extlinks to define a macro for this: :issue:`268` - so I decided to configure that for Datasette.

I added the following to the conf.py for my documentation:

extensions = ["sphinx.ext.extlinks"]
extlinks = {
"issue": ("https://github.com/simonw/datasette/issues/%s", "#"),
}

Then in Visual Studio Code I opened the “Edit -> Replace in Files” tool. I used this search pattern:

`#(\d+) <https://github.com/simonw/datasette/issues/\1>`__

And this as the replacement value:

:issue:`$1`

Note that the search pattern uses \1 as the group reference for the captured number, but in the replacement value you use $1 to re-use that value.

Here’s the commit where I applied that change to Datasette’s existing documentation.

Using sphinx.ext.extlinks for issue links
https://mranv.pages.dev/posts/using-sphinxextextlinks-for-issue-links/
Author
Anubhav Gain
Published at
2024-03-31
License
CC BY-NC-SA 4.0