diff options
Diffstat (limited to 'modules/tools/editor/neovim/plugins')
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/base16.mustache.lua (renamed from modules/tools/editor/neovim/plugins/base16.mustache.lua) | 0 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/comment.lua (renamed from modules/tools/editor/neovim/plugins/comment.lua) | 0 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/default.nix | 19 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/lsp-config.lua | 51 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/lualine.lua (renamed from modules/tools/editor/neovim/plugins/lualine.lua) | 0 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/nvim-tree.lua (renamed from modules/tools/editor/neovim/plugins/nvim-tree.lua) | 0 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/config/treesitter.nix (renamed from modules/tools/editor/neovim/plugins/treesitter.nix) | 0 | ||||
| -rw-r--r-- | modules/tools/editor/neovim/plugins/default.nix | 36 |
8 files changed, 96 insertions, 10 deletions
diff --git a/modules/tools/editor/neovim/plugins/base16.mustache.lua b/modules/tools/editor/neovim/plugins/config/base16.mustache.lua index 3c13fcc..3c13fcc 100644 --- a/modules/tools/editor/neovim/plugins/base16.mustache.lua +++ b/modules/tools/editor/neovim/plugins/config/base16.mustache.lua diff --git a/modules/tools/editor/neovim/plugins/comment.lua b/modules/tools/editor/neovim/plugins/config/comment.lua index 9086261..9086261 100644 --- a/modules/tools/editor/neovim/plugins/comment.lua +++ b/modules/tools/editor/neovim/plugins/config/comment.lua diff --git a/modules/tools/editor/neovim/plugins/config/default.nix b/modules/tools/editor/neovim/plugins/config/default.nix new file mode 100644 index 0000000..fb2ac1a --- /dev/null +++ b/modules/tools/editor/neovim/plugins/config/default.nix @@ -0,0 +1,19 @@ +{ config }: + +let + extra = if config.tools.editor.neovim.configuration == "full" then +'' +${builtins.readFile ./lsp-config.lua} +'' + else ""; +in +'' +${builtins.readFile ./comment.lua} +${builtins.readFile ./lualine.lua} +${import ./treesitter.nix { inherit config; }} +${builtins.readFile (config.scheme { + template = builtins.readFile ./base16.mustache.lua; +})} +${builtins.readFile ./nvim-tree.lua} +${extra} +'' diff --git a/modules/tools/editor/neovim/plugins/config/lsp-config.lua b/modules/tools/editor/neovim/plugins/config/lsp-config.lua new file mode 100644 index 0000000..43cdb95 --- /dev/null +++ b/modules/tools/editor/neovim/plugins/config/lsp-config.lua @@ -0,0 +1,51 @@ +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", +}; + +-- Keeping track of all the lsps that have been already configured +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({}); + 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", { + pattern = "*", -- Match all file types + callback = function() + setup_lsp(vim.bo.filetype); -- Call the setup_lsp function only if the filetype is in the mapping + end, +}); diff --git a/modules/tools/editor/neovim/plugins/lualine.lua b/modules/tools/editor/neovim/plugins/config/lualine.lua index ba2eda6..ba2eda6 100644 --- a/modules/tools/editor/neovim/plugins/lualine.lua +++ b/modules/tools/editor/neovim/plugins/config/lualine.lua diff --git a/modules/tools/editor/neovim/plugins/nvim-tree.lua b/modules/tools/editor/neovim/plugins/config/nvim-tree.lua index c6c4102..c6c4102 100644 --- a/modules/tools/editor/neovim/plugins/nvim-tree.lua +++ b/modules/tools/editor/neovim/plugins/config/nvim-tree.lua diff --git a/modules/tools/editor/neovim/plugins/treesitter.nix b/modules/tools/editor/neovim/plugins/config/treesitter.nix index be0bdb6..be0bdb6 100644 --- a/modules/tools/editor/neovim/plugins/treesitter.nix +++ b/modules/tools/editor/neovim/plugins/config/treesitter.nix diff --git a/modules/tools/editor/neovim/plugins/default.nix b/modules/tools/editor/neovim/plugins/default.nix index ace5379..6e4f844 100644 --- a/modules/tools/editor/neovim/plugins/default.nix +++ b/modules/tools/editor/neovim/plugins/default.nix @@ -1,11 +1,27 @@ -{ config }: +{ config, pkgs, lib }: -'' -${builtins.readFile ./comment.lua} -${builtins.readFile ./lualine.lua} -${import ./treesitter.nix { inherit config; }} -${builtins.readFile (config.scheme { - template = builtins.readFile ./base16.mustache.lua; -})} -${builtins.readFile ./nvim-tree.lua} -'' +{ + configuration = import ./config { inherit config; }; + + list = with pkgs.vimPlugins; lib.mkMerge [ + [ + comment-nvim + lualine-nvim + nvim-treesitter + nvim-web-devicons + nvim-tree-lua + (base16-vim.overrideAttrs (old: { + patchPhase = "ln -s ${config.scheme base16-vim} colors/base16-scheme.vim"; + })) + ] + (if config.tools.editor.neovim.configuration == "full" then + [ + nvim-lspconfig + ] + else null) + ]; + + requirements = with pkgs; [ + gcc # for treesitter + ]; +} |
