Skip to content

πŸ’ YAML toolkit for Neovim users

License

Notifications You must be signed in to change notification settings

cuducos/yaml.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yaml.nvim Tests status

Simple tools to help developers working YAML in Neovim.

Assuming yaml = require("yaml_nvim") for the Lua API:

Command Lua API Description
:YAMLView yaml.view() Shows the full path and value of the current key/value pair
:YAMLYank [register] yaml.yank_all([register]) Yanks the full path and value of the current key/value pair. The default register is the unnamed one (")
:YAMLYankKey [register] yaml.yank_key([register]) Yanks the full path of the key for the current key/value pair. The default register is the unnamed one (")
:YAMLYankValue [register] yaml.yank_value([register]) Yanks the value of the current key/value pair. The default register is the unnamed one (")
:YAMLQuickfix yaml.quickfix() Generates a quickfix with key/value pairs
:YAMLTelescope yaml.telescope() Full path key/value fuzzy finder via Telescope if installed

Example GIF

Requirements

Telescope is optional.

What about older versions of Neovim?
  • For Neovim 0.7 or 0.8, pin to 7925bd2
  • For Neovim 0.5 or 0.6, pin to 155c23d

Install

{
  "cuducos/yaml.nvim",
  ft = { "yaml" }, -- optional
  dependencies = {
    "nvim-treesitter/nvim-treesitter",
    "nvim-telescope/telescope.nvim", -- optional
  },
}
use {
  "cuducos/yaml.nvim",
  ft = { "yaml" }, -- optional
  requires = {
    "nvim-treesitter/nvim-treesitter",
    "nvim-telescope/telescope.nvim" -- optional
  },
}

With vim-plug:

Plug 'nvim-telescope/telescope.nvim' " optional
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'cuducos/yaml.nvim'

Configuration

File types

The plugin ignores other file types than YAML. By now the list of YAML file types includes yaml and eruby.yaml β€” we're are open to enhance this list, so PRs are welcomed.

If you want to manually change this list, you can pass a custom config:

require("yaml_nvim").setup({ ft = { "yaml",  "other yaml filetype" } })

Showing the YAML path and value

Neovim's winbar

vim.api.nvim_create_autocmd({ "BufEnter", "CursorMoved" }, {
	pattern = { "*.yaml" },
	callback = function()
		vim.opt_local.winbar = require("yaml_nvim").get_yaml_key_and_value()
	end,
})

You can also call get_yaml_key() instead of get_yaml_key_and_value() to show only the YAML key.

Neovim's statusline (with lualine.nvim)

require("lualine").setup({
	sections = {
		lualine_x = { require("yaml_nvim").get_yaml_key_and_value },
		-- etc
    }
})

Reporting bugs and contributing

There is a mini toolchain to help you test the plugin in isolation using a container. It requires:

Command Description
./manage build Builds the container
./manage test Runs the tests inside the container
./manage nvim Opens the container's Neovim with a sample YAML file