diff --git a/nvim/dot-config/nvim/lazy-lock.json b/nvim/dot-config/nvim/lazy-lock.json index 83e736e..ff6e25a 100644 --- a/nvim/dot-config/nvim/lazy-lock.json +++ b/nvim/dot-config/nvim/lazy-lock.json @@ -33,6 +33,7 @@ "peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "ros-nvim": { "branch": "main", "commit": "f0e16eebe68546025784593fa2355ca6749014a0" }, + "schema-companion.nvim": { "branch": "main", "commit": "7d662b6c1497fdd82e3e8836eb122f5c4b0d8277" }, "schemastore.nvim": { "branch": "main", "commit": "0098dde21296a454ae1426f9ac47340dd38c27ce" }, "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, diff --git a/nvim/dot-config/nvim/lua/plugins/lualine.lua b/nvim/dot-config/nvim/lua/plugins/lualine.lua index af55a49..6741b62 100644 --- a/nvim/dot-config/nvim/lua/plugins/lualine.lua +++ b/nvim/dot-config/nvim/lua/plugins/lualine.lua @@ -1,11 +1,11 @@ -- https://github.com/nvim-lualine/lualine.nvim local function get_schema() - local schema = require("yaml-companion").get_buf_schema(0) - if schema.result[1].name == "none" then + local schema = require("schema-companion.context").get_buffer_schema() + if schema.name == "none" then return "" end - return schema.result[1].name + return schema.name end return { diff --git a/nvim/dot-config/nvim/lua/plugins/schema-companion.lua b/nvim/dot-config/nvim/lua/plugins/schema-companion.lua new file mode 100644 index 0000000..5092a29 --- /dev/null +++ b/nvim/dot-config/nvim/lua/plugins/schema-companion.lua @@ -0,0 +1,63 @@ +local kubernetes = {} +kubernetes.name = "Kubernetes" + +---@type schema_companion.MatcherMatchFn +kubernetes.match = function(bufnr) + local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) + local kind = false + local api_version = false + + for _, line in ipairs(lines) do + if kind or vim.regex("^kind: .*$"):match_str(line) then + kind = true + end + + if api_version or vim.regex("^apiVersion: .*$"):match_str(line) then + api_version = true + end + + if kind and api_version then + return { + name = "Kubernetes", + uri = require("kubernetes").yamlls_schema(), + } + end + end + + return nil +end + +return { + "cenk1cenk2/schema-companion.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope.nvim", + "diogo464/kubernetes.nvim", + }, + config = function() + require("schema-companion").setup({ + enable_telescope = true, + matchers = { + kubernetes, + }, + schemas = {}, + }) + + vim.keymap.set( + "n", + "ss", + require("telescope").extensions.schema_companion.select_schema, + { desc = "Select schema" } + ) + + vim.lsp.config( + "yamlls", + require("schema-companion").setup_client({ + single_file_support = true, + settings = { + yaml = {}, + }, + }) + ) + end, +} diff --git a/nvim/dot-config/nvim/lua/plugins/yaml-companion.lua b/nvim/dot-config/nvim/lua/plugins/yaml-companion.lua deleted file mode 100644 index efcec4a..0000000 --- a/nvim/dot-config/nvim/lua/plugins/yaml-companion.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - "someone-stole-my-name/yaml-companion.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-telescope/telescope.nvim", - "nvim-telescope/telescope.nvim", - "diogo464/kubernetes.nvim", - }, - config = function() - require("telescope").load_extension("yaml_schema") - - vim.lsp.config("yamlls", require("yaml-companion").setup({ - builtin_matchers = { - kubernetes = { enabled = false }, - kubernetes_custom = { enabled = true }, - }, - })) - end, -} diff --git a/nvim/dot-config/nvim/lua/yaml-companion/builtin/kubernetes_custom.lua b/nvim/dot-config/nvim/lua/yaml-companion/builtin/kubernetes_custom.lua deleted file mode 100644 index 4f10b0d..0000000 --- a/nvim/dot-config/nvim/lua/yaml-companion/builtin/kubernetes_custom.lua +++ /dev/null @@ -1,35 +0,0 @@ -local M = {} - -local api = vim.api -local uri = require("kubernetes").yamlls_schema() - -local schema = { - name = "Kubernetes", - uri = uri, -} - -M.match = function(bufnr) - local lines = api.nvim_buf_get_lines(bufnr, 0, -1, false) - local kind = false - local api_version = false - - for _, line in ipairs(lines) do - if kind or vim.regex("^kind: .*$"):match_str(line) then - kind = true - end - - if api_version or vim.regex("^apiVersion: .*$"):match_str(line) then - api_version = true - end - - if kind and api_version then - return schema - end - end -end - -M.handles = function() - return { schema } -end - -return M