system/neovim/configs/language-server.nix

101 lines
2.4 KiB
Nix
Raw Normal View History

2024-08-14 01:20:44 +03:00
{ config, lib, pkgs, ... }:
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
nil_ls = { };
2024-08-10 23:02:08 +03:00
# rust
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
eslint = {
on_attach = config.fn.lspconfig-eslint-on-attach.lambda;
flags = {
allow_incremental_sync = false;
debounce_text_changes = 1000;
};
};
2024-08-10 23:02:08 +03:00
# vue
volar = {
init_options = {
typescript.tsdk = "./node_modules/typescript/lib";
};
};
2024-08-10 23:02:08 +03:00
# python
pylsp = { };
2024-08-10 23:02:08 +03:00
# typescript, javascript
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-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 = {
2024-11-28 16:46:56 +03:00
floating_window = false;
hint_enable = true;
hint_prefix = {
above = " ";
current = " ";
below = " ";
2024-11-24 17:16:02 +03:00
};
};
};
}