utilyre/sentiment.nvim

github github
editing-support
stars 135
issues 6
subscribers 4
forks 1
CREATED

2023-02-10

UPDATED

10 months ago


sentiment.nvim

Enhanced matchparen.vim plugin for Neovim to highlight the outer pair.

📹 Demo

DISCLAIMER: The autopair functionality is coming from nvim-autopairs.

demo.webm

✨ Features

  • 🚀 Performance (Blazingly Fast!!!).

  • 🪁 Fully compatible with anything that expects matchparen.vim to be there.

  • 👍 Ease of use.

📦 Installation

NOTE: Keep in mind that calling setup disables the built-in matchparen.vim plugin.

  • lazy.nvim

    {
      "utilyre/sentiment.nvim",
      version = "*",
      event = "VeryLazy", -- keep for lazy loading
      opts = {
        -- config
      },
      init = function()
        -- `matchparen.vim` needs to be disabled manually in case of lazy loading
        vim.g.loaded_matchparen = 1
      end,
    }
    
  • packer.nvim

    use({
      "utilyre/sentiment.nvim",
      tag = "*",
      config = function()
        require("sentiment").setup({
          -- config
        })
      end,
    })
    

🎮 Usage

  • require("sentiment").disable(), :NoMatchParen

    Disable the plugin.

  • require("sentiment").enable(), :DoMatchParen

    Re-enable the plugin.

🎨 Highlight

This plugin re-uses the widely supported MatchParen highlight group of the former matchparen.vim plugin.

See :help nvim_set_hl() for how you can change it.

🚠 Configuration

{
  ---Dictionary to check whether a buftype should be included.
  ---
  ---@type table<string, boolean>
  included_buftypes = {
    [""] = true,
  },

  ---Dictionary to check whether a filetype should be excluded.
  ---
  ---@type table<string, boolean>
  excluded_filetypes = {},

  ---Dictionary to check whether a mode should be included.
  ---
  ---@type table<string, boolean>
  included_modes = {
    n = true,
    i = true,
  },

  ---How much (in milliseconds) should the cursor stay still to calculate and
  ---render a pair.
  ---
  ---NOTE: It's recommended to set this somewhere above and close to your key
  ---repeat speed in order to keep the calculations at minimum.
  ---
  ---@type integer
  delay = 50,

  ---How many lines to look backwards/forwards to find a pair.
  ---
  ---@type integer
  limit = 100,

  ---List of `(left, right)` pairs.
  ---
  ---NOTE: Both sides of a pair can't have the same character.
  ---
  ---@type tuple<string, string>[]
  pairs = {
    { "(", ")" },
    { "{", "}" },
    { "[", "]" },
  },
}