Skip to content

[Help] Trying to load schema for LSP to use with neoconf #42

@Ajaymamtora

Description

@Ajaymamtora

Hi I can't get this plugin to suggest anything from local schema files in jsonls.

I'm loading the local schemas (1 of my own, the rest being these https://github.com/folke/neoconf.nvim/blob/main/schemas) via my setup:

modules["b0o/schemastore.nvim"] = {
  version = false,
  lazy = false,
  config = function()
    local schemastore_status_ok, _ = pcall(require, "schemastore")
    if not schemastore_status_ok then
      return
    end

    local extra_schemas = {
      {
        description = "Schema for nvim project config",
        fileMatch = { "nvim.json", ".nvim.json" },
        name = "nvim.json",
        url = "file://" .. _G.__os.home .. "/.config/json_schema/nvim.json",
      },
    }

    local schema_path = _G.__os.home .. "/.local/share/nvim/lazy/neoconf.nvim/schemas"

    local function add_schema(file)
      local name = file:match("(.+)%.json$")
      if name then
        table.insert(extra_schemas, {
          description = "Schema for " .. name,
          fileMatch = { "nvim.json", ".nvim.json" },
          name = "nvim.json",
          url = "file://" .. schema_path .. "/" .. file,
        })
      end
    end

    local handle = vim.loop.fs_scandir(schema_path)
    if handle then
      local name, type
      while true do
        name, type = vim.loop.fs_scandir_next(handle)
        if not name then
          break
        end
        if type == "file" and name:match("%.json$") then
          add_schema(name)
        end
      end
    end

    require("schemastore").json.schemas({
      extra = extra_schemas,
    })
  end,
}



-- LSP Setup:
M.jsonls_config = function(file_types)
  return {
    flags = {
      debounce_text_changes = default_debounce_time,
    },
    autostart = true,
    filetypes = file_types,
    on_attach = function(client, bufnr)
      setup_diagnostics.keymaps(client, bufnr)
      setup_diagnostics.omni(client, bufnr)
      setup_diagnostics.tag(client, bufnr)
      if client.server_capabilities.document_highlight then
        setup_diagnostics.document_highlight(client, bufnr)
      end
      setup_diagnostics.document_formatting(client, bufnr)
      setup_diagnostics.inlay_hint(client, bufnr)
      if client.server_capabilities.documentSymbolProvider then
        navic.attach(client, bufnr)
      end
    end,
    capabilities = setup_diagnostics.get_capabilities(),
    root_dir = function(fname)
      return util.find_git_ancestor(fname) or vim.fn.getcwd()
    end,
    settings = {
      json = {
        validate = { enable = true },
        schemas = require("schemastore").json.schemas({
          extra = {
            {
              description = "Schema for nvim project config",
              fileMatch = { "nvim.json", ".nvim.json" },
              name = "nvim.json",
              url = "file://" .. _G.__os.home .. "/.config/json_schema/nvim.json",
            },
          },
        }),
      },
    },
  }
end

It successfully adds to extras but nothing is suggested by the LSP at all.

I'm triggering nvim cmp in files named nvim.json and .nvim.json and neither works

Please can I have some help?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions