Skip to content

rclawlor/regex-railroad.nvim

Repository files navigation

regex-railroad.nvim

rust workflow lua workflow

regex-railroad.nvim generates useful text and diagrams to help explain regular expressions in your code.

Getting started

Required dependencies

Installation

lazy.nvim

-- plugins/regex-railroad.lua:
return {
    "rclawlor/regex-railroad.nvim",
    tag = "0.0.3",
    dependencies = { "nvim-treesitter/nvim-treesitter" }
}

Usage

Use :RegexText to generate a text description of the regular expression under your cursor, or :RegexRailroad to instead generate a railroad diagram!

regex-railroad

To remap the functions to something more convenient, use the following:

vim.api.nvim_set_keymap("n", "<C-x>", "<cmd>RegexText<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<C-s>", "<cmd>RegexRailroad<CR>", {noremap = true, silent = true})

Customisation

This section explains the available options for configuring regex-railroad.nvim

Setup function

require("regex-railroad").setup({
    --- Github release of plugin
    tag = "v0.0.3",
    --- Highlight group used in :RegexText
    highlight = {
        bold = true,
        fg = "fg",
        bg = "bg"
    }})

Supported Features

Character classes

Feature Example Supported
Character set [ABC]
Negated set [^ABC]
Range [A-Z]
Dot .
Word \w
Non-word \W
Digit \d
Non-digit \D
Whitespace \s
Non-whitespace \S
Unicode category \p{L}
Non-unicode category \p{L}
Unicode script \p{Han}
Non-unicode script \P{Han}

Anchors

Feature Example Supported
Beginning ^
End $
Word boundary \b
Non-word boundary \B

Groups & References

Feature Example Supported
Capturing group (ABC)
Named capturing group (?ABC)
Numeric reference \1
Non-capturing group (?:ABC)

Lookaround

Feature Example Supported
Positive lookahead (?=ABC)
Negative lookahead (?!ABC)
Positive lookbehind (?<=ABC)
Negative lookbehind (?<!ABC)

Qualifiers & Alternation

Feature Example Supported
Plus +
Star *
Quantifier {1,3}
Optional ?
Lazy ?
Alternation |