{pkgs, ...}: { globals = { mapleader = " "; }; opts = { number = true; relativenumber = true; tabstop = 4; shiftwidth = 2; expandtab = true; smartindent = true; scrolloff = 4; undofile = true; undodir.__raw = ''vim.fn.expand("$HOME/.local/share/nvim/undo")''; list = true; listchars = builtins.concatStringsSep "," [ "tab: >" "leadmultispace: |" "trail:." "extends:>" "precedes:<" ]; }; extraPlugins = [(pkgs.vimPlugins.actions-preview-nvim)]; extraConfigLua = '' require("actions-preview").setup { highlight_command = { require("actions-preview.highlight").delta("${pkgs.delta}/bin/delta --no-gitconfig --side-by-side"), }, telescope = { sorting_strategy = "ascending", layout_strategy = "vertical", layout_config = { width = 0.8, height = 0.9, prompt_position = "top", preview_cutoff = 20, preview_height = function(_, _, max_lines) return max_lines - 10 end, }, }, } vim.keymap.set({ "v", "n" }, "", require("actions-preview").code_actions) vim.keymap.set({ "n" }, "ca", require("actions-preview").code_actions) ''; keymaps = [ { key = ""; action = ''"+y''; options.desc = "copy to clipboard"; } { key = "ca"; action = '' require("actions-preview").code_actions ''; } { key = ""; action = "tabnext"; } { key = ""; action = "tabprev"; } { key = "gl"; action = "g$"; } { key = "gh"; action = "g0"; } { mode = "v"; key = ">"; action = ">gv"; options.desc = "indent"; options.silent = true; } { mode = "v"; key = "<"; action = "fg" = "live_grep"; "/" = "live_grep"; "ff" = "find_files"; "fb" = "buffers"; "fh" = "help_tags"; ":" = "commands"; "ft" = "treesitter"; "fr" = "lsp_references"; "cr" = "lsp_definition"; }; }; lsp = { enable = true; servers = { ts-ls.enable = true; nil-ls.enable = true; }; keymaps = { lspBuf = { "ck" = "hover"; "K" = "hover"; "cr" = "rename"; "" = "rename"; }; }; }; cmp = { enable = true; autoEnableSources = true; }; cmp-nvim-lsp.enable = true; cmp-path.enable = true; gitsigns.enable = true; git-worktree = { enable = true; enableTelescope = true; }; lazygit.enable = true; which-key.enable = true; harpoon = { enable = true; keymaps = { addFile = "ha"; toggleQuickMenu = "hf"; navNext = "n"; }; }; vim-css-color.enable = true; treesitter = { enable = true; folding = true; }; treesitter-textobjects = { enable = true; select = { enable = true; lookahead = true; keymaps = { "af" = { query = "@function.outer"; desc = "Function Outer"; }; "ac" = { query = "@comment.outer"; desc = "Comment Outer"; }; "if" = { query = "@function.inner"; desc = "Function Inner"; }; }; }; }; oil.enable = true; autoclose.enable = true; guess-indent.enable = true; }; }