From 8b561153bcf0572ee562233eaa3373c0f48bfc44 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Thu, 16 May 2024 22:49:46 -0400 Subject: [PATCH] feat(nvim): setup json/yaml lsp --- common/home/neovim/langs/default.nix | 1 + common/home/neovim/langs/json.nix | 50 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 common/home/neovim/langs/json.nix diff --git a/common/home/neovim/langs/default.nix b/common/home/neovim/langs/default.nix index fb93bfb..c55a830 100644 --- a/common/home/neovim/langs/default.nix +++ b/common/home/neovim/langs/default.nix @@ -12,6 +12,7 @@ in { ./clang.nix ./hyprlang.nix ./java.nix + ./json.nix ./lua.nix ./markdown.nix ./nix.nix diff --git a/common/home/neovim/langs/json.nix b/common/home/neovim/langs/json.nix new file mode 100644 index 0000000..2033774 --- /dev/null +++ b/common/home/neovim/langs/json.nix @@ -0,0 +1,50 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (config.vars) neovimIde; +in + lib.mkIf neovimIde { + programs = { + neovim = { + extraPackages = [ + pkgs.vscode-langservers-extracted + pkgs.yaml-language-server + ]; + + extraLuaConfig = + /* + lua + */ + '' + vim.api.nvim_create_autocmd('FileType', { + pattern = 'yaml', + command = 'setlocal ts=4 sw=4 sts=0 expandtab', + }); + vim.api.nvim_create_autocmd('FileType', { + pattern = 'json', + command = 'setlocal ts=4 sw=4 sts=0 expandtab', + }); + + local lsp = require('lspconfig'); + local coq = require('coq'); + + lsp.jsonls.setup(coq.lsp_ensure_capabilities({})); + + lsp.yamlls.setup(coq.lsp_ensure_capabilities({ + settings = { + yaml = { + schemas = { + [ + "https://json.schemastore.org/github-workflow.json" + ] = "/.github/workflows/*", + }, + }, + }, + })); + ''; + }; + }; + }