aboutsummaryrefslogtreecommitdiffstats
path: root/modules/tools/editor
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-10-01 13:19:07 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-10-01 13:19:07 +0530
commit6349cff878c36336ed9027423aaebf98ac883501 (patch)
tree443c9fabb34010649c9a44bbc7c542e83d99fd08 /modules/tools/editor
parent9dc8cc8176be54df0d9ff4e7ef904e619deea3c2 (diff)
downloadhome-manager-config-6349cff878c36336ed9027423aaebf98ac883501.tar.gz
home-manager-config-6349cff878c36336ed9027423aaebf98ac883501.zip
Using noice.nvim for better looking UI for neovim.
Diffstat (limited to 'modules/tools/editor')
-rw-r--r--modules/tools/editor/neovim/plugins/config/default.nix3
-rw-r--r--modules/tools/editor/neovim/plugins/config/lsp-config.lua70
-rw-r--r--modules/tools/editor/neovim/plugins/config/noice.mustache.lua10
-rw-r--r--modules/tools/editor/neovim/plugins/default.nix1
4 files changed, 57 insertions, 27 deletions
diff --git a/modules/tools/editor/neovim/plugins/config/default.nix b/modules/tools/editor/neovim/plugins/config/default.nix
index fb2ac1a..6dff0b9 100644
--- a/modules/tools/editor/neovim/plugins/config/default.nix
+++ b/modules/tools/editor/neovim/plugins/config/default.nix
@@ -4,6 +4,9 @@ let
extra = if config.tools.editor.neovim.configuration == "full" then
''
${builtins.readFile ./lsp-config.lua}
+${builtins.readFile (config.scheme {
+ template = builtins.readFile ./noice.mustache.lua;
+})}
''
else "";
in
diff --git a/modules/tools/editor/neovim/plugins/config/lsp-config.lua b/modules/tools/editor/neovim/plugins/config/lsp-config.lua
index 43cdb95..88f063d 100644
--- a/modules/tools/editor/neovim/plugins/config/lsp-config.lua
+++ b/modules/tools/editor/neovim/plugins/config/lsp-config.lua
@@ -1,28 +1,42 @@
local lspconfig = require("lspconfig");
local filetype_to_lsp = {
- lua = "lua_ls",
- cpp = "clangd",
- c = "clangd",
- python = "pyright",
- javascript = "tsserver",
- typescript = "tsserver",
- go = "gopls",
- html = "html",
- css = "cssls",
- json = "jsonls",
- bash = "bashls",
- graphql = "graphql",
- dockerfile = "dockerls",
- php = "phpactor",
- rust = "rust_analyzer",
- haskell = "hls",
- deno = "denols",
- vim = "vimls",
- elixir = "elixirls",
- clojure = "clojure_lsp",
- scala = "scala_metals",
- ruby = "sorbet",
+ lua = { server = "lua_ls", executable = "lua-language-server" },
+ cpp = { server = "clangd", executable = "clangd" },
+ c = { server = "clangd", executable = "clangd" },
+ python = { server = "pyright", executable = "pyright-langserver" },
+ javascript = { server = "tsserver", executable = "typescript-language-server" },
+ typescript = { server = "tsserver", executable = "typescript-language-server" },
+ go = { server = "gopls", executable = "gopls" },
+ html = { server = "html", executable = "vscode-html-language-server" },
+ css = { server = "cssls", executable = "vscode-css-language-server" },
+ json = { server = "jsonls", executable = "vscode-json-language-server" },
+ bash = { server = "bashls", executable = "bash-language-server" },
+ graphql = { server = "graphql", executable = "graphql-lsp" },
+ dockerfile = { server = "dockerls", executable = "docker-langserver" },
+ php = { server = "phpactor", executable = "phpactor" },
+ rust = { server = "rust_analyzer", executable = "rust-analyzer" },
+ haskell = { server = "hls", executable = "haskell-language-server-wrapper" },
+ deno = { server = "denols", executable = "deno" },
+ vim = { server = "vimls", executable = "vim-language-server" },
+ elixir = { server = "elixirls", executable = "elixir-ls" },
+ clojure = { server = "clojure_lsp", executable = "clojure-lsp" },
+ scala = { server = "scala_metals", executable = "metals" },
+ ruby = { server = "sorbet", executable = "srb" },
+ zig = { server = "zls", executable = "zls" },
+ kotlin = { server = "kotlin_language_server", executable = "kotlin-language-server" },
+ java = { server = "jdtls", executable = "jdtls" },
+ dart = { server = "dartls", executable = "dart" },
+ yaml = { server = "yamlls", executable = "yaml-language-server" },
+ perl = { server = "perlls", executable = "perl" },
+ r = { server = "r_language_server", executable = "R" },
+ tex = { server = "texlab", executable = "texlab" },
+ swift = { server = "sourcekit", executable = "sourcekit-lsp" },
+ svelte = { server = "svelteserver", executable = "svelteserver" },
+ terraform = { server = "terraformls", executable = "terraform-ls" },
+ vue = { server = "vls", executable = "vls" },
+ markdown = { server = "marksman", executable = "marksman" },
+ yaml = { server = "yamlls", executable = "yaml-language-server" },
};
-- Keeping track of all the lsps that have been already configured
@@ -30,17 +44,19 @@ local lsp_setup_done = {};
-- Function to setup LSP based on filetype
local function setup_lsp(filetype)
- local lsp_server = filetype_to_lsp[filetype];
- if lsp_server and not lsp_setup_done[lsp_server] then
- lsp_setup_done[lsp_server] = true;
- lspconfig[lsp_server].setup({});
+ local lsp = filetype_to_lsp[filetype];
+ if lsp and not lsp_setup_done[lsp.server] then
+ lsp_setup_done[lsp.server] = true;
+ if vim.fn.executable(lsp.executable) then
+ lspconfig[lsp.server].setup({});
+ vim.lsp.start();
+ end
end
end
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { noremap = true, silent = true });
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { noremap = true, silent = true });
vim.keymap.set("n", "gr", vim.lsp.buf.references, { noremap = true, silent = true });
-vim.keymap.set("i", "<C-c>", vim.lsp.buf.completion, { noremap = true, silent = true });
vim.keymap.set("n", "gk", vim.lsp.buf.hover, { noremap = true, silent = true });
vim.api.nvim_create_autocmd("FileType", {
diff --git a/modules/tools/editor/neovim/plugins/config/noice.mustache.lua b/modules/tools/editor/neovim/plugins/config/noice.mustache.lua
new file mode 100644
index 0000000..a258c8e
--- /dev/null
+++ b/modules/tools/editor/neovim/plugins/config/noice.mustache.lua
@@ -0,0 +1,10 @@
+require("noice").setup();
+
+vim.api.nvim_set_hl(0, "NoiceCommandOutput", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceCmdline", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceCmdlinePopup", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceCmdlinePopupBorder", { fg = "#{{base03-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceError", { fg = "#{{base08-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceWarning", { fg = "#{{base0A-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceInfo", { fg = "#{{base0C-hex}}", bg = "#{{base00-hex}}" });
+vim.api.nvim_set_hl(0, "NoiceHint", { fg = "#{{base0B-hex}}", bg = "#{{base00-hex}}" });
diff --git a/modules/tools/editor/neovim/plugins/default.nix b/modules/tools/editor/neovim/plugins/default.nix
index 6e4f844..d2a58b1 100644
--- a/modules/tools/editor/neovim/plugins/default.nix
+++ b/modules/tools/editor/neovim/plugins/default.nix
@@ -16,6 +16,7 @@
]
(if config.tools.editor.neovim.configuration == "full" then
[
+ noice-nvim
nvim-lspconfig
]
else null)