X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/71d8ed08696bb8e807b1d1518c55fd5885ed8c98..7d854464d9b1bd386b0eaf25f38ac3b96dd1fc18:/nvim/lua/plugins/lang/yaml.lua diff --git a/nvim/lua/plugins/lang/yaml.lua b/nvim/lua/plugins/lang/yaml.lua new file mode 100644 index 0000000..977590f --- /dev/null +++ b/nvim/lua/plugins/lang/yaml.lua @@ -0,0 +1,64 @@ +return { + -- yaml schema support + { + "b0o/SchemaStore.nvim", + lazy = true, + version = false, -- last release is way too old + }, + + -- correctly setup lspconfig + { + "neovim/nvim-lspconfig", + opts = { + -- make sure mason installs the server + servers = { + yamlls = { + -- Have to add this for yamlls to understand that we support line folding + capabilities = { + textDocument = { + foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true, + }, + }, + }, + -- lazy-load schemastore when needed + on_new_config = function(new_config) + new_config.settings.yaml.schemas = vim.tbl_deep_extend( + "force", + new_config.settings.yaml.schemas or {}, + require("schemastore").yaml.schemas() + ) + end, + settings = { + redhat = { telemetry = { enabled = false } }, + yaml = { + keyOrdering = false, + format = { + enable = true, + }, + validate = true, + schemaStore = { + -- Must disable built-in schemaStore support to use + -- schemas from SchemaStore.nvim plugin + enable = false, + -- Avoid TypeError: Cannot read properties of undefined (reading 'length') + url = "", + }, + }, + }, + }, + }, + setup = { + yamlls = function() + -- Neovim < 0.10 does not have dynamic registration for formatting + if vim.fn.has("nvim-0.10") == 0 then + rmz.lsp.on_attach(function(client, _) + client.server_capabilities.documentFormattingProvider = true + end, "yamlls") + end + end, + }, + }, + }, +}