Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Elm-pair logo Elm-pair

Elm-pair helps you write Elm code. You tell Elm-pair about the change you want to make and it will do the actual work. It's a bit like using an IDE, except you don't need to learn any keyboard shortcuts.

You talk to Elm-pair by making a change in your code. If Elm-pair understands your intent then it will follow up with its own change.

Renaming variables, types, and constructors

Rename a variable and Elm-pair will propagate the new name wherever the variable is used. Elm-pair will propagate type and constructor names in the same way.

Demonstration of rename functionality in Visual Studio Code

Changing import statements

As you change an import statement alias or exposing list, Elm-pair will update your code to keep it compiling.

Demonstration of import statement functionality in Visual Studio Code

Use your own editor

Elm-pair integrates with your editor of choice. Currently Neovim is supported and Visual Studio Code support is on the way, with support for additional editors planned. Elm-pair runs on MacOS and Linux.

Get it

You can find installation instructions at


This project is made possible by a couple of others.

  • tree-sitter is a library for fast code parsing. It allows Elm-pair to listen to every key stroke and figure out programmer intent quickly and efficiently.
  • tree-sitter-elm is an extension for tree-sitter that adds support for the Elm programming language.
  • ropey provides the 'rope' datastructure Elm-pair uses to store local copies of source code.
  • notify makes it easy for Elm-pair to subscribe to changes in the file system, so it can keep up with what's happening in your Elm projects.
  • differential-dataflow provides a way to do incremental computation, allowing Elm-pair to do the bare minimum of work when a file changes.