nixos-configs/common/home/neovim/langs/web.nix

98 lines
2.8 KiB
Nix
Raw Normal View History

{
config,
pkgs,
lib,
2024-05-09 15:36:57 -04:00
stylelint-lsp,
vimplugin-ts-error-translator-src,
...
}: let
inherit (config.vars) neovimIde;
inherit (pkgs) vimPlugins;
inherit (import ../../../../lib.nix {inherit pkgs;}) buildPlugin;
in
lib.mkIf neovimIde {
programs = {
neovim = {
withNodeJs = true;
2024-05-09 15:36:57 -04:00
extraPackages = [
pkgs.nodejs_latest
pkgs.nodePackages.npm
pkgs.nodePackages.neovim
stylelint-lsp.packages.${pkgs.system}.default
pkgs.vscode-langservers-extracted
];
extraLuaConfig =
2024-06-09 22:49:30 -04:00
# lua
''
vim.api.nvim_create_autocmd('FileType', {
2024-05-09 15:36:57 -04:00
pattern = { 'javascript', 'typescript', 'css', 'scss' },
command = 'setlocal ts=4 sw=4 sts=0 expandtab',
});
vim.api.nvim_create_autocmd('FileType', {
pattern = 'html',
command = 'setlocal ts=2 sw=2 expandtab',
});
vim.api.nvim_create_autocmd('FileType', {
pattern = 'scss',
2024-05-09 15:36:57 -04:00
command = 'setlocal iskeyword+=@-@',
});
2024-05-09 15:36:57 -04:00
local lsp = require('lspconfig');
local coq = require('coq');
local tsserver = require('typescript-tools');
2024-05-09 15:36:57 -04:00
tsserver.setup(coq.lsp_ensure_capabilities({
handlers = {
-- format error code with better error message
['textDocument/publishDiagnostics'] = function(err, result, ctx, config)
require('ts-error-translator').translate_diagnostics(err, result, ctx, config)
vim.lsp.diagnostic.on_publish_diagnostics(err, result, ctx, config)
end,
},
}));
2024-05-09 15:36:57 -04:00
lsp.eslint.setup(coq.lsp_ensure_capabilities({
-- auto-save
on_attach = function(client, bufnr)
vim.api.nvim_create_autocmd('BufWritePre', {
buffer = bufnr,
command = 'EslintFixAll',
});
end,
}));
lsp.cssls.setup(coq.lsp_ensure_capabilities({
settings = {
css = {
validate = false,
},
less = {
validate = false,
},
scss = {
validate = false,
},
},
}));
lsp.stylelint_lsp.setup(coq.lsp_ensure_capabilities({
2024-05-09 15:36:57 -04:00
settings = {
stylelintplus = {},
},
}));
'';
plugins = [
2024-05-09 15:36:57 -04:00
vimPlugins.typescript-tools-nvim
2024-05-15 18:55:07 -04:00
(buildPlugin "ts-error-translator" vimplugin-ts-error-translator-src)
];
};
};
}