neo2005/config/plugins/lang/ts.nix

93 lines
2 KiB
Nix

{ pkgs, ... }:
{
plugins = {
conform-nvim.settings = {
formatters_by_ft = {
javascript = [ "eslint_d" ];
javascriptreact = [ "eslint_d" ];
typescript = [ "eslint_d" ];
typescriptreact = [ "eslint_d" ];
svelte = [ "eslint_d" ];
};
formatters.eslint_d = {
command = "${pkgs.eslint_d}/bin/eslint_d";
};
};
lsp.servers = {
svelte.enable = true;
eslint = {
enable = true;
filetypes = [
"javascript"
"javascriptreact"
"javascript.jsx"
"typescript"
"typescriptreact"
"typescript.tsx"
"vue"
"html"
"markdown"
"json"
"jsonc"
"yaml"
"toml"
"xml"
"gql"
"graphql"
"svelte"
"css"
"less"
"scss"
"pcss"
"postcss"
];
};
ts_ls = {
enable = true;
filetypes = [
"javascript"
"javascriptreact"
"typescript"
"typescriptreact"
"svelte"
];
settings = {
complete_function_calls = true;
vtsls = {
autoUseWorkspaceTsdk = true;
experimental = {
completion = {
enableServerSideFuzzyMatch = true;
};
};
};
typescript = {
updateImportsOnFileMove.enabled = "always";
suggest = {
completeFunctionCalls = true;
};
inlayHints = {
enumMemberValues.enabled = true;
functionLikeReturnTypes.enabled = true;
parameterNames.enabled = "literals";
parameterTypes.enabled = true;
propertyDeclarationTypes.enabled = true;
variableType.enabled = false;
};
};
};
};
};
ts-autotag.enable = true;
};
}