feat(lsp): jsonls schemas

This commit is contained in:
Matt Leong 2021-12-20 16:44:02 -08:00
parent 7232abb157
commit 1d09e75d0f
3 changed files with 187 additions and 0 deletions

View file

@ -23,6 +23,9 @@ local default_config = {
opts = {}
}, ]]
jsonls = {
format = false,
},
sumneko_lua = {
format = false, -- disable formatting all together
},

View file

@ -55,6 +55,8 @@ lsp_installer.on_server_ready(function(server)
-- set up default cosmic options
if server.name == 'tsserver' then
opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.tsserver'))
elseif server.name == 'jsonls' then
opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.jsonls'))
elseif server.name == 'sumneko_lua' then
opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.sumneko_lua'))
end

View file

@ -0,0 +1,182 @@
local schemas = {
{
description = 'TypeScript compiler configuration file',
fileMatch = {
'tsconfig.json',
'tsconfig.*.json',
},
url = 'https://json.schemastore.org/tsconfig.json',
},
{
description = 'Lerna config',
fileMatch = { 'lerna.json' },
url = 'https://json.schemastore.org/lerna.json',
},
{
description = 'Babel configuration',
fileMatch = {
'.babelrc.json',
'.babelrc',
'babel.config.json',
},
url = 'https://json.schemastore.org/babelrc.json',
},
{
description = 'ESLint config',
fileMatch = {
'.eslintrc.json',
'.eslintrc',
},
url = 'https://json.schemastore.org/eslintrc.json',
},
{
description = 'Bucklescript config',
fileMatch = { 'bsconfig.json' },
url = 'https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json',
},
{
description = 'Prettier config',
fileMatch = {
'.prettierrc',
'.prettierrc.json',
'prettier.config.json',
},
url = 'https://json.schemastore.org/prettierrc',
},
{
description = 'Vercel Now config',
fileMatch = { 'now.json' },
url = 'https://json.schemastore.org/now',
},
{
description = 'Stylelint config',
fileMatch = {
'.stylelintrc',
'.stylelintrc.json',
'stylelint.config.json',
},
url = 'https://json.schemastore.org/stylelintrc',
},
{
description = 'A JSON schema for the ASP.NET LaunchSettings.json files',
fileMatch = { 'launchsettings.json' },
url = 'https://json.schemastore.org/launchsettings.json',
},
{
description = 'Schema for CMake Presets',
fileMatch = {
'CMakePresets.json',
'CMakeUserPresets.json',
},
url = 'https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json',
},
{
description = 'Configuration file as an alternative for configuring your repository in the settings page.',
fileMatch = {
'.codeclimate.json',
},
url = 'https://json.schemastore.org/codeclimate.json',
},
{
description = 'LLVM compilation database',
fileMatch = {
'compile_commands.json',
},
url = 'https://json.schemastore.org/compile-commands.json',
},
{
description = 'Config file for Command Task Runner',
fileMatch = {
'commands.json',
},
url = 'https://json.schemastore.org/commands.json',
},
{
description = 'AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.',
fileMatch = {
'*.cf.json',
'cloudformation.json',
},
url = 'https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json',
},
{
description = 'The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.',
fileMatch = {
'serverless.template',
'*.sam.json',
'sam.json',
},
url = 'https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json',
},
{
description = 'Json schema for properties json file for a GitHub Workflow template',
fileMatch = {
'.github/workflow-templates/**.properties.json',
},
url = 'https://json.schemastore.org/github-workflow-template-properties.json',
},
{
description = 'golangci-lint configuration file',
fileMatch = {
'.golangci.toml',
'.golangci.json',
},
url = 'https://json.schemastore.org/golangci-lint.json',
},
{
description = 'JSON schema for the JSON Feed format',
fileMatch = {
'feed.json',
},
url = 'https://json.schemastore.org/feed.json',
versions = {
['1'] = 'https://json.schemastore.org/feed-1.json',
['1.1'] = 'https://json.schemastore.org/feed.json',
},
},
{
description = 'Packer template JSON configuration',
fileMatch = {
'packer.json',
},
url = 'https://json.schemastore.org/packer.json',
},
{
description = 'NPM configuration file',
fileMatch = {
'package.json',
},
url = 'https://json.schemastore.org/package.json',
},
{
description = 'JSON schema for Visual Studio component configuration files',
fileMatch = {
'*.vsconfig',
},
url = 'https://json.schemastore.org/vsconfig.json',
},
{
description = 'Resume json',
fileMatch = { 'resume.json' },
url = 'https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json',
},
}
local opts = {
settings = {
json = {
schemas = schemas,
},
},
setup = {
commands = {
Format = {
function()
vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line('$'), 0 })
end,
},
},
},
}
return opts