Neovim auto-completion for JSON schemas. Works with Swagger/OpenAPI docs, database schemas, and custom JSON formats.
{
"joe-dil/json-cmp",
dependencies = { "hrsh7th/nvim-cmp" },
opts = { paths = { "/path/to/json" } }
}require("json-cmp").setup({
paths = { "/path/to/json/files" }
})require("json-cmp").setup({
sources = {
{ name = "swagger", paths = { "/api/docs" }, preset = "swagger" },
{ name = "db", paths = { "/db/schemas" }, preset = "generic" }
}
})swagger: Swagger/OpenAPI parameters (name,description,schema.type)generic: Standard schemas (column,fieldType.type,fieldType.options)json_schema: JSON Schema properties (name,type,description)
JSON:
{
"paths": {
"/users": {
"get": {
"parameters": [
{
"name": "limit",
"description": "Max results",
"schema": { "type": "integer" }
}
]
}
}
}
}Config:
require("json-cmp").setup({
sources = {
{ name = "api", paths = { "/api/swagger" }, preset = "swagger" }
}
})require("json-cmp").setup({
sources = {
{
name = "custom",
paths = { "/path/to/schemas" },
mapping = {
labelField = {"name", "column"},
typeField = {"dataType", "type"},
docField = {"description"},
fieldsContainer = {"columns", "fields"}
}
}
}
})local result = require("json-cmp").setup({
autoRegister = false,
sources = {
{ name = "my_source", paths = { "/path" } }
}
})
-- Register manually
require("cmp").register_source("my_source", result.sources[1])MIT