2024-08-14 01:20:44 +03:00
|
|
|
{ config, lib, pkgs, ... }:
|
2024-06-18 17:14:05 +03:00
|
|
|
|
|
|
|
let inherit (lib.nix2lua) call; in
|
|
|
|
{
|
|
|
|
fn.lspconfig-eslint-on-attach = {
|
|
|
|
args = [ "client" "bufnr" ];
|
|
|
|
content = { bufnr, ... }: {
|
|
|
|
vim.augroup.eslint-fix = {
|
|
|
|
event = "BufWritePre";
|
|
|
|
buffer = bufnr;
|
|
|
|
command = "silent! EslintFixAll";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
plugins.language-server.lspconfig.serverSettings = {
|
2024-08-10 23:02:08 +03:00
|
|
|
# nix
|
2024-06-18 17:14:05 +03:00
|
|
|
nil_ls = { };
|
2024-08-10 23:02:08 +03:00
|
|
|
# rust
|
2024-06-18 17:14:05 +03:00
|
|
|
rust_analyzer = {
|
|
|
|
settings.rust-analyzer = {
|
|
|
|
"server.path" = "rust-analyzer";
|
|
|
|
"updates.prompt" = false;
|
|
|
|
"updates.checkOnStartup" = false;
|
|
|
|
"checkOnSave.enable" = true;
|
|
|
|
"checkOnSave.command" = "clippy";
|
|
|
|
"cargo.autoreload" = true;
|
|
|
|
};
|
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# linter for javascript, typescript, vue
|
2024-06-18 17:14:05 +03:00
|
|
|
eslint = {
|
|
|
|
on_attach = config.fn.lspconfig-eslint-on-attach.lambda;
|
2024-08-10 09:58:48 +03:00
|
|
|
flags = {
|
|
|
|
allow_incremental_sync = false;
|
|
|
|
debounce_text_changes = 1000;
|
|
|
|
};
|
2024-06-18 17:14:05 +03:00
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# vue
|
2024-06-18 17:14:05 +03:00
|
|
|
volar = {
|
|
|
|
init_options = {
|
|
|
|
typescript.tsdk = "./node_modules/typescript/lib";
|
|
|
|
};
|
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# python
|
2024-06-18 17:14:05 +03:00
|
|
|
pylsp = { };
|
2024-08-10 23:02:08 +03:00
|
|
|
# typescript, javascript
|
2024-06-18 17:14:05 +03:00
|
|
|
denols = {
|
|
|
|
root_dir = call "${config.plugin.nvim-lspconfig.varName}.util.root_pattern" [ "deno.json" "deno.jsonc" ];
|
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# java
|
2024-08-14 01:20:44 +03:00
|
|
|
jdtls = {
|
2024-09-10 14:48:50 +03:00
|
|
|
cmd = [
|
|
|
|
"${pkgs.jdt-language-server}/bin/jdtls"
|
|
|
|
"--jvm-arg=-javaagent:${pkgs.lombok.out}/share/java/lombok.jar"
|
|
|
|
"--jvm-arg=-Xbootclasspath/a:${pkgs.lombok.out}/share/java/lombok.jar"
|
|
|
|
];
|
2024-08-14 01:20:44 +03:00
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# json
|
2024-08-10 06:25:55 +03:00
|
|
|
jsonls = { };
|
2024-08-10 23:02:08 +03:00
|
|
|
# css, scss, less
|
2024-09-10 14:48:50 +03:00
|
|
|
cssls = { };
|
2024-08-11 22:49:54 +03:00
|
|
|
css_variables = {
|
|
|
|
lookupFiles = [
|
|
|
|
"**/*.scss"
|
|
|
|
"**/*.less"
|
|
|
|
"**/*.css"
|
|
|
|
];
|
|
|
|
};
|
2024-08-10 23:02:08 +03:00
|
|
|
# Grammar/Spell Checker
|
|
|
|
ltex = {
|
|
|
|
language = "en-US";
|
|
|
|
languageToolHttpServerUri = "http://localhost:8081";
|
|
|
|
};
|
2024-06-18 17:14:05 +03:00
|
|
|
};
|
2024-08-10 18:17:50 +03:00
|
|
|
|
|
|
|
plugins.language-server.typescript-tools = {
|
|
|
|
enable = true;
|
|
|
|
serverSettings = {
|
|
|
|
filetypes = [ "javascript" "javascriptreact" "typescript" "typescriptreact" "vue" ];
|
|
|
|
settings = {
|
|
|
|
tsserver_max_memory = "auto";
|
|
|
|
tsserver_plugins = [ "@vue/typescript-plugin" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-11-24 17:16:02 +03:00
|
|
|
|
|
|
|
plugin.lsp_signature-nvim = {
|
|
|
|
enable = true;
|
|
|
|
name = "lsp_signature";
|
|
|
|
setupSettings = {
|
|
|
|
bind = true;
|
|
|
|
handler_opts = {
|
|
|
|
border = "rounded";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-06-18 17:14:05 +03:00
|
|
|
}
|