Image 1 — Blessed UK charity (thrift) shop find
Image 2 — Blessed UK charity (thrift) shop find

Blessed UK charity (thrift) shop find

Y2K tour Tshirt - £3.75!

u/_wurli — 12 days ago
▲ 0 r/Python

Custom Python autocompletions using Jet ✈️

Data science workflows often involve keeping a Python session running and iteratively running lines, e.g. when performing exploratory data analysis.

I do this a lot and often find myself jumping into the REPL to run e.g. my_data.columns to check I'm using the right column names in my code.

It turns out that if you're using IPython there are some pretty powerful mechanisms for implementing custom completions in scenarios just like this.

I wrote a blog post showing how you can do this, e.g. to expose Pyspark DataFrame columns as autocomplete suggestions. If you tend to work interactively in a long-running Python session, the techniques used are widely applicable to whatever libraries/classes you tend to work with:

<https://jacobnscott.com/posts/hacking-python-autocomplete/>

reddit.com
u/_wurli — 1 month ago
▲ 92 r/neovim

jet.nvim: a Jupyter kernel supervisor for Neovim ✈️

Repo: https://github.com/wurli/jet.nvim

Features

  • A repl which runs in Neovim's built-in terminal
  • An LSP server which provides live completions from the kernel
  • A Lua API with fine-grained control over running kernels, down to the level of individual Jupyter messages
  • Ability to connect to kernel sessions running outside of Neovim
  • AI-friendly: agents can use the Jet CLI to interact with your kernel sessions
  • Detailed (non-vibed) vimdoc documentation
  • Plug and play - No remote plugin stuff. No python requirements.

Not yet implemented

  • Notebooks
  • Windows support (contributions welcome!)

Why jet.nvim?

No existing Jupyter plugins did what I wanted:

  • I don't want to think about setting up Python infrastructure for every project which uses a Jupyter kernel. Stuff should just work.
  • I want a more native-feeling repl than other plugins could provide
  • I want to be able to hook into Jupyter mechanisms such as 'comms' to expose non-standard features in Neovim, e.g. the Ark R Kernel's LSP server
  • I want a Lua API which is well documented and typed
  • I wanted a Neovim plugin for the Ark R kernel (this now exists as a jet.nvim extension)

jet.nvim achieves all this stuff by building on Jet, a custom Rust backend built to power this plugin, but which does some other sick stuff too.

jet.nvim is bare-bones

There are a billion different kernels out there - jet.nvim doesn't favour any particular one. Instead, jet.nvim aims to provide tools which can be used to create full-featured extension plugins for R, Python, Julia, etc. Existing extensions I'm already using are jet.ark (R) and jet.ipy (Python).

Benefits of this architecture:

  • A small scope will allow jet.nvim to reach maturity much faster
  • Niche features (and associated code churn) can live in extension plugins, affecting only the folks who opt in

Why Jupyter?

Jupyter != notebooks. Jupyter is a standard/protocol which interactive languages can use to tell editors about state and execution results. It's cool. Jupyter kernels wrap interactive languages to implement the protocol; frontends need to implement a Jupyter 'client' to talk to kernels (this is non-trivial because you have to handle ØMQ, tonnes of different message types, etc). jet.nvim implements a Jupyter client using Rust for low-level stuff and Neovim's Lua for the high-level API. jet.nvim extensions can now build on this foundation to talk to kernels and implement language-specific behaviour which was previously not possible. E.g. jet.ark implements a plots pane where plots automatically redraw to fit the window dimensions.

jet.nvim needs you!

Testers wanted! I've been dogfooding this plugin for like 2 months and it works very nicely, but I've only been using it in anger for Python and R. All feedback is very appreciated, but especially if you use Julia or some other esoteric kernel. No gripe is too small to report!

Enjoy, and thanks for reading ✈️

u/_wurli — 1 month ago
▲ 3 r/neovim

pandoc-better-vim: enhancements to pandoc's native vimdoc output

Pandoc is a tool for converting between a myriad of different document formats. In particular, as of September 2025, it supports vimdoc outputs, allowing you to generate rather nice plugin documentation from markdown.

I gave the native vimdoc writer a spin and wasn't quite satisfied with some of the behaviour, so I wrote a pandoc extension (i.e. filter) pandoc-better-vim which provides a bit more control and produces outputs slightly closer to those you see in neovim/vim.

For example, using the filter, pandoc's 'definition lists' render like so:

Input markdown:

definition 1
: first item

definition 2
: second item
  * with a sub-bullet
  * and another sub-bullet

definition 3
: third item

Output vimdoc:

• definition 1  first item
• definition 2  second item
                • with a sub-bullet
                • and another sub-bullet
• definition 3  third item

The filter's other features are listed on GitHub :)

Note: for earlier versions of Pandoc you can also use panvimdoc, which also includes a GitHub Action.

reddit.com
u/_wurli — 2 months ago