This plug-in is still very much in alpha phase, use at your own risk.
- neovim 0.5.0+
- nvim-treesitter/nvim-treesitter
- gomodifytags
- install using your favorite plugin manager (lazy in this example)
{
'simondrake/gomodifytags',
dependencies = { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
}
Require and call the setup
function, with optional configuration (see below) - require('gomodifytags').setup()
.
By passing through an optional table into the setup()
function, you can set defaults that can be overridden on a per-invocation basis. For example, to change the transformation
to snakecase
you would do the following:
require('gomodifytags').setup({transformation = "snakecase"})`
Or directly with the lazy plug-in manager:
{
'simondrake/gomodifytags',
dependencies = { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
opts = {
transformation = "snakecase",
skip_unexported = true,
override = true,
options = { "json=omitempty" }
},
}
The default configuration for this plug-in is below:
M.config = {
transformation = "camelcase",
skip_unexported = true,
override = true,
sort = false,
options = {},
parse = { enabled = false, seperator = "--" }
}
GoAddTags
can be used, with optional overrides, by requiring and calling the GoAddTags
function:
:lua require('gomodifytags').GoAddTags("json,yaml", {transformation = "snakecase", skip_unexported = false})
GoRemoveTags
can be used by requiring and calling the GoRemoveTags
function:
:lua require('gomodifytags').GoRemoveTags("json,yaml")
Because of how vim.api.nvim_create_user_command
works, it is not possible to pass through a table and args
is a string parameter. If you would still like to use a command, this is very experimental and may have some edge cases.
If you would still like to try it out, you will need to set an additional configuration - parse
. In most cases seperator
can be kept as the default (--
) but it is added as a configuration option in case you need to amend it.
require('gomodifytags').setup({transformation = "camelcase", parse = { enabled = true, seperator = "--" }})`
Or directly with the lazy plug-in manager:
{
'simondrake/gomodifytags',
dependencies = { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
opts = {
transformation = "camelcase",
skip_unexported = true,
override = true,
options = { "json=omitempty" },
parse = { enabled = true, seperator = "--" },
},
}
You can use the following which will create a GoAddTags
command:
vim.api.nvim_create_user_command('GoAddTags', function(opts) require('gomodifytags').GoAddTags(opts.fargs[1], opts.args) end, { nargs = "+" })
Which can be used with the following format, where <parse.seperator>
is what is defined in the configuration (--
by default):
:GoAddTags "json" <parse.seperator> {transformation = "snakecase", skip_unexported = false}