# ultimate-autopair.nvim: treesitter-aware autopairing for Neovim

> Ultimate-autopair is a Neovim plugin that inserts closing brackets and quotes as you type, with multiline support, treesitter node filtering and treesitter filetype detection as its differentiators. Its README also states plainly that the plugin is in maintenance mode, which is the most useful thing in it for anyone choosing a pairing plugin today.

**altermo/ultimate-autopair.nvim** — A treesitter supported autopairing plugin with extensions, and much more

- Repository: https://github.com/altermo/ultimate-autopair.nvim
- Stars: 582 · Forks: 8
- Language: Lua
- License: MIT
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/altermo-ultimate-autopair-nvim

## Pairing that knows which node you are in

The README describes the plugin as aiming to always work as you expect and to be ultra customizable while making it easy to configure, and it claims features that other auto-pairing plugins lack: multiline support, treesitter-node filtering and treesitter-filetype detection.

Those three are the substance. Most pairing plugins work on characters, so a closing bracket appears wherever a bracket character is typed, including inside a string literal or inside a comment. Node filtering means the plugin asks treesitter what kind of syntax element the cursor is in and decides whether a pair is appropriate, which is why the README notes that some features, including string filtering, require treesitter. Filetype detection is the related piece, since the rules for a language differ and the plugin needs to know which language it is looking at.

Multiline support is the other differentiator, and it matters more than it sounds. A pairing plugin that treats a triple-quoted string as three separate quote pairs will fight you, and the ability to keep a construct open across lines is what makes pairing usable in modern languages with block syntax.

The version in the README is 0.6.1, the primary language is Lua, and the topics are the usual Neovim plugin vocabulary with autopair at the front.

## The README leads with a maintenance mode notice

The first line of the README is a warning, and it is the first thing a reader sees. It says that ultimate-autopair is currently in maintenance mode, and that no new features will be added in the near future.

That is unusual and it changes how the project should be evaluated. A plugin in maintenance mode is not abandoned, it is finished, and the value of it is that it keeps working rather than that it improves. For a pairing plugin that is arguably the right trade, since the feature set of pairing has not changed much in years, and a plugin that stops moving is one that will not break when your editor updates.

The README also describes the branch layout, which is the practical consequence. The default branch of the repository is v0.6, and the development branch is sometimes up to date with the default branch. There is a v0.7 branch for testing the non-finished next version, and the installation snippets for both Lazy and Packer recommend the v0.6 branch, with a comment explaining that each new version will have breaking changes.

The plugin requires neovim 0.9, and for older versions of neovim the README points to previous versions of the plugin.

## Two package managers, one recommendation

The installation section gives a Lazy snippet and a Packer snippet, and they are the same configuration expressed twice.

For Lazy:

```lua
{
    'altermo/ultimate-autopair.nvim',
    event={'InsertEnter','CmdlineEnter'},
    branch='v0.6', --recommended as each new version will have breaking changes
    opts={
        --Config goes here
    },
}
```

And for Packer:

```lua
use{
    'altermo/ultimate-autopair.nvim',
    event={'InsertEnter','CmdlineEnter'},
    branch='v0.6', --recommended as each new version will have breaking changes
    config=function ()
        require('ultimate-autopair').setup({
                --Config goes here
                })
    end,
}
```

Two details in both snippets matter. The `branch='v0.6'` line with its comment is the plugin asking you not to track the default branch, because the version scheme carries breaking changes, and the `event` field is what defers loading until you enter insert mode or the command line, which keeps the plugin out of your startup path until it is needed.

The configuration itself goes through `require('ultimate-autopair').setup({...})` in both cases, and the default configuration is not in the README at all. The README points at the documentation for it, `:help ultimate-autopair-default-config`, and for new users it points at the starter documentation, `:help ultimate-autopair`.

## Treesitter is a hard requirement for the interesting parts

The requirement list in the README is short and worth reading exactly. The plugin requires neovim 0.9, for some features including string filtering it requires treesitter, and for the development version the README says to check out the development branch.

The treesitter requirement is the one to plan around. Without a parser for the language you are editing, you get the basic pairing behaviour and none of the node filtering that is the plugin's main claim, and the string filtering that keeps a quote character inside a string literal from triggering a pair is simply unavailable.

So the realistic order of operations for a new user is: get treesitter working with a parser for your language first, then install the plugin, then read the starter documentation. The README points new users to that starter documentation, `:help ultimate-autopair`, and the default configuration is documented separately in `:help ultimate-autopair-default-config`.

The version floor interacts with this. Neovim 0.9 is the minimum, and for older versions of neovim the answer is previous versions of the plugin, which means an older Neovim means an older version of everything, including whatever treesitter support looked like then. The plugin is not the place to start that negotiation.

## It is meant to run alongside other pairing plugins

The README has a section listing other plugins to supercharge auto-pairing, and it is worth reading because it defines the plugin's boundaries.

The framing is that these are plugins which are related to pairing and have features that ultimate-autopair does not have. endwise wisely adds `end` in lua, ruby, and similar, with a note that it does not get broken by ultimate-autopair's newline. tabout lets you tab out of treesitter nodes. surround deletes and changes surrounding parentheses and more. autotag auto pairs html tags.

That list is a statement about scope. Ultimate-autopair does not try to be the whole editing environment, it does the pairing and it does it with awareness of the syntax tree, and the things it does not do are things other plugins do better.

There is also a specific note about coexistence with the other well known pairing plugin. If you want to use this together with nvim-autopairs, the README says to read `:h ultimate-autopair-use-with-npairs`, which implies the two can be combined and that the combination has its own documented behaviour rather than being an accident.

The project also has a chat section pointing at GitHub discussions for questions, and a donation section with a buymeacoffee link, the link being discoverable from a hint giving the number 50 in decimal.

## The documentation lives in the help files

A short README is normal for a Neovim plugin, because the documentation for a Neovim plugin is expected to live in the help tags. Here that is explicit rather than assumed.

The repository layout is a plugin rather than a project, with a `doc` directory for the help files, `lua` for the source, and a `notes` directory. The root holds README.md, CONTRIBUTING.md, Q&A.md and the LICENSE file, and the README points at `:help ultimate-autopair` for the starter documentation and `:help ultimate-autopair-default-config` for the defaults.

The demo in the README is a short animation, and the repository also carries a demo section in the same page. The structure of the project, a `doc` directory alongside `lua`, is the conventional Neovim plugin layout, and it means the plugin installs with its help files, so `:help ultimate-autopair` works the moment the plugin is loaded rather than after a trip to a website.

Q&A.md at the root is the one file that suggests the maintainer expects the common questions to be answered in the repository rather than only in the discussions.

## MIT licensed, no tags, and a plugin that is done rather than done with

The licence is MIT, with the LICENSE file at the repository root. The repository is not archived and the last push was on 2026-07-18, so the branch is a few months old but the project is not dead, which is consistent with a plugin in maintenance mode: the code gets fixed when something breaks, and nothing new appears.

There are no GitHub releases, which fits a Neovim plugin, since these are installed by branch or by a plugin manager rather than from a release feed, and it is also why the README is so insistent about which branch to use.

The default branch is v0.6 and the version in the README is 0.6.1, so the stable line and the documented version agree with each other, and the unfinished v0.7 branch is a separate place where new work accumulates until it is finished enough to become a new major.

The practical advice for a new user is therefore straightforward. Install the v0.6 branch as the snippets say, read the starter documentation before changing any configuration, and if you want the next version, test the v0.7 branch in a scratch configuration rather than in the one you depend on.

## Conclusion

ultimate-autopair.nvim fits a Neovim user with treesitter set up who wants pairing that understands the syntax tree rather than a character class, and who has read the maintenance-mode notice and decided a stable plugin beats an active one. It is the wrong choice if you want new features, since the README says none will be added in the near future, and the wrong choice if you are still on a Neovim older than 0.9. Verify first that your Neovim version and treesitter setup match the stated requirements, that the branch you install is the one the documentation describes, and that you are comfortable with a plugin whose next version already exists as an unfinished branch.

## FAQ

### What does ultimate-autopair.nvim do?

It is a Neovim auto-pairing plugin that inserts closing brackets and quotes as you type, and the features it claims over other pairing plugins are multiline support, treesitter-node filtering and treesitter-filetype detection. It aims to be ultra customizable while being easy to configure.

### Is ultimate-autopair.nvim still being developed?

The README states at the top that ultimate-autopair is currently in maintenance mode and that no new features will be added in the near future. The last push was on 2026-07-18, the default branch is v0.6, and an unfinished v0.7 branch exists for testing the next version.

### How do I install ultimate-autopair.nvim with lazy.nvim?

Add the plugin spec 'altermo/ultimate-autopair.nvim' with event={'InsertEnter','CmdlineEnter'} and branch='v0.6', which the README recommends because each new version will have breaking changes. The configuration goes in the opts table, and the same setup can be called with require('ultimate-autopair').setup() in the Packer variant.

### Does ultimate-autopair.nvim require treesitter?

Partly. The README says that for some features, including string filtering, treesitter is required, and it also requires neovim 0.9. For older versions of neovim the README points to previous versions of the plugin.

### Can ultimate-autopair.nvim be used with nvim-autopairs?

The README says that if you want to use this together with nvim-autopairs you should read :h ultimate-autopair-use-with-npairs, and it also lists other pairing plugins with features ultimate-autopair does not have, among them endwise, tabout, surround and autotag.

## Sources

- [altermo/ultimate-autopair.nvim on GitHub](https://github.com/altermo/ultimate-autopair.nvim)
- [Issues](https://github.com/altermo/ultimate-autopair.nvim/issues)
- [License: MIT](https://github.com/altermo/ultimate-autopair.nvim/blob/v0.6/LICENSE)
- [README](https://github.com/altermo/ultimate-autopair.nvim/blob/v0.6/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/altermo-ultimate-autopair-nvim
