Skip to content

tronikelis/ts-autotag.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ts-autotag.nvim

Introduction

A minimalist Neovim plugin that auto closes & renames html/jsx elements without setting keymaps

Examples

Auto close tag

auto close tag gif

Manual rename tag

Note

Keymaps are not set by default, you have to set them yourself like so

vim.keymap.set("n", "<leader>rn", function()
	-- it returns success status, thus you can fallback like so
	if not require("ts-autotag").rename() then
		vim.lsp.buf.rename()
	end
end)

manual rename tag gif

Auto live rename tag

Warning

Feature is VERY experimental and DISABLED BY DEFAULT, uses extmarks to keep track of tags and replaces them, using TS is not enough for multi language support. As it doesn't cover all edge-cases I recommend using the manual method, however if you really want live replace you can enable it.

auto rename tag gif

Install

With lazy.nvim

{
    "tronikelis/ts-autotag.nvim",
    opts = {},
    -- ft = {}, optionally you can load it only in jsx/html
    event = "VeryLazy",
}

Configuration

Default config

{

	opening_node_types = {
		-- templ
		"tag_start",

		-- xml,
		"STag",

		-- html
		"start_tag",

		-- jsx
		"jsx_opening_element",
	},
	identifier_node_types = {
		-- html
		"tag_name",
		"erroneous_end_tag_name",

		-- xml,
		"Name",

		-- jsx
		"member_expression",
		"identifier",

		-- templ
		"element_identifier",
	},

	disable_in_macro = true,

	auto_close = {
		enabled = true,
	},
	auto_rename = {
		enabled = false,
		closing_node_types = {
			-- jsx
			"jsx_closing_element",

			-- xml,
			"ETag",

			-- html
			"end_tag",
			"erroneous_end_tag",

			-- templ
			"tag_end",
		},
	},
}

Differences between nvim-ts-autotag

  • A much more "dumb" and simple solution which just checks child node types under cursor
  • Does not override any keymaps, nvim-ts-autotag overrides > keymap which could break other plugins

About

A minimalist neovim plugin to close & rename html/jsx elements with the power of treesitter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages