diff --git a/modules/home-manager/vim/init.lua b/modules/home-manager/vim/init.lua index e6283c7..14d71f1 100644 --- a/modules/home-manager/vim/init.lua +++ b/modules/home-manager/vim/init.lua @@ -4,11 +4,19 @@ vim.g.loaded_netrwPlugin = 1 vim.g.mapleader = " " vim.opt.termguicolors = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 vim.opt.expandtab = true -vim.cmd.colorscheme "catppuccin" +vim.opt.number = true +vim.opt.relativenumber = true +vim.opt.scrolloff = 8 --- Custom bindings +vim.cmd.colorscheme "catppuccin-mocha" + +-- Custom bindings for buffer navigation vim.keymap.set("n", "n", "bn", { noremap = true, silent = true }) vim.keymap.set("n", "p", "bp", { noremap = true, silent = true }) @@ -21,9 +29,60 @@ require("lualine").setup{} -- Telescope (anything search) vim.keymap.set("n", "b", "Telescope buffers", { noremap = true, silent = true }) vim.keymap.set("n", "f", "Telescope find_files", { noremap = true, silent = true }) +vim.keymap.set("n", "g", "Telescope git_files", { noremap = true, silent = true }) + +-- Tree (file manager) +require("nvim-tree").setup() +vim.keymap.set("n", "t", "NvimTreeToggle", { noremap = true, silent = true }) -- lspconfig (LSPs) -vim.lsp.enable("nil") +vim.lsp.enable("lua_ls") +vim.lsp.enable("nil_ls") vim.lsp.enable("pyright") -vim.lsp.enable("rust-analyzer") +vim.lsp.enable("rust_analyzer") + +vim.keymap.set("n", "o", vim.lsp.buf.format) + +vim.api.nvim_create_autocmd('LspAttach', { + desc = 'LSP actions', + callback = function() + local bufmap = function(mode, lhs, rhs) + local opts = {buffer = true} + vim.keymap.set(mode, lhs, rhs, opts) + end + + -- Displays hover information about the symbol under the cursor + bufmap('n', 'K', vim.lsp.buf.hover) + + -- Jump to the definition + bufmap('n', 'gd', vim.lsp.buf.definition) + + -- Jump to declaration + bufmap('n', 'gD', vim.lsp.buf.declaration) + + -- Lists all the implementations for the symbol under the cursor + bufmap('n', 'gi', vim.lsp.buf.implementation) + + -- Jumps to the definition of the type symbol + bufmap('n', 'go', vim.lsp.buf.type_definition) + + -- Lists all the references + bufmap('n', 'gr', vim.lsp.buf.references) + + -- Displays a function's signature information + bufmap('n', '', vim.lsp.buf.signature_help) + + -- Renames all references to the symbol under the cursor + bufmap('n', 'R', vim.lsp.buf.rename) + + -- Show diagnostics in a floating window + bufmap('n', 'gl', vim.diagnostic.open_float) + + -- Move to the previous diagnostic + bufmap('n', '[d', vim.diagnostic.goto_prev) + + -- Move to the next diagnostic + bufmap('n', ']d', vim.diagnostic.goto_next) + end +}) diff --git a/modules/home-manager/vim/vim.nix b/modules/home-manager/vim/vim.nix index 20a34a9..deaef85 100644 --- a/modules/home-manager/vim/vim.nix +++ b/modules/home-manager/vim/vim.nix @@ -14,6 +14,7 @@ in config = lib.mkIf cfg.enable { home.packages = with pkgs; [ + lua-language-server nil pyright rust-analyzer @@ -29,6 +30,7 @@ in bufferline-nvim catppuccin-nvim lualine-nvim + nvim-tree-lua nvim-lspconfig telescope-nvim nvim-web-devicons