vim.pack.add({ { src = "https://github.com/catppuccin/nvim", name = "catppuccin" }, { src = "https://github.com/kepano/flexoki-neovim" }, { src = "https://github.com/nvim-lualine/lualine.nvim" }, { src = "https://github.com/folke/noice.nvim" }, { src = "https://github.com/folke/snacks.nvim" }, { src = "https://github.com/folke/flash.nvim" }, { src = "https://github.com/windwp/nvim-autopairs" }, { src = "https://github.com/folke/todo-comments.nvim" }, { src = "https://github.com/lewis6991/gitsigns.nvim" }, -- { src = "https://github.com/m4xshen/hardtime.nvim" }, { src = "https://github.com/vieitesss/miniharp.nvim" }, { src = "https://github.com/stevearc/oil.nvim" }, { src = "https://github.com/refractalize/oil-git-status.nvim" }, { src = "https://github.com/nvim-treesitter/nvim-treesitter" }, { src = "https://github.com/saghen/blink.cmp", version = vim.version.range("^1") }, { src = "https://github.com/rachartier/tiny-inline-diagnostic.nvim" }, { src = "https://github.com/xzbdmw/colorful-menu.nvim" }, { src = "https://github.com/Sang-it/fluoride" }, -- Deps { src = "https://github.com/MunifTanjim/nui.nvim" }, -- for noice.nvim { src = "https://github.com/rcarriga/nvim-notify" }, -- for noice.nvim { src = "https://github.com/nvim-tree/nvim-web-devicons" }, -- for oil }) -- no config plugins ---------------------------------------------------------- vim.cmd.colorscheme("flexoki") require("nvim-autopairs").setup() require("todo-comments").setup() require("noice").setup() require("colorful-menu").setup() require("fluoride").setup() -- require("hardtime").setup() require("nvim-treesitter").setup({ install_dir = vim.fn.stdpath("data") .. "/site" }) -- flash ---------------------------------------------------------------------- require("flash").setup() vim.keymap.set("n", "s", require("flash").jump, { noremap = true, silent = true }) -- MiniHarp ------------------------------------------------------------------- local miniharp = require("miniharp") miniharp.setup({ show_on_autoload = true }) vim.keymap.set("n", "ma", miniharp.toggle_file) vim.keymap.set("n", "mc", miniharp.clear) vim.keymap.set("n", "ml", miniharp.show_list) vim.keymap.set("n", "", miniharp.next) vim.keymap.set("n", "", miniharp.prev) -- lualine ------------------------------------------------------------------- require("lualine").setup({ options = { section_separators = { left = "", right = "" }, component_separators = { left = "", right = "" }, }, sections = { lualine_a = { { "mode", separator = { left = "" }, right_padding = 2 } }, lualine_z = { { "location", separator = { right = "" }, left_padding = 2 } }, }, }) -- gitsigns ------------------------------------------------------------------- require("gitsigns").setup({ on_attach = function(bufnr) local gitsigns = require("gitsigns") local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end -- Navigation map("n", "]c", function() if vim.wo.diff then vim.cmd.normal({ "]c", bang = true }) else gitsigns.nav_hunk("next") end end) map("n", "[c", function() if vim.wo.diff then vim.cmd.normal({ "[c", bang = true }) else gitsigns.nav_hunk("prev") end end) -- Actions map("n", "hs", gitsigns.stage_hunk) map("n", "hr", gitsigns.reset_hunk) map("v", "hs", function() gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end) map("v", "hr", function() gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end) map("n", "hR", gitsigns.reset_buffer) map("n", "hp", gitsigns.preview_hunk) map("n", "hi", gitsigns.preview_hunk_inline) map("n", "hb", function() gitsigns.blame_line({ full = true }) end) map("n", "hd", gitsigns.diffthis) map("n", "hD", function() gitsigns.diffthis("~") end) map("n", "hQ", function() gitsigns.setqflist("all") end) map("n", "hq", gitsigns.setqflist) map("n", "tb", gitsigns.toggle_current_line_blame) map("n", "tw", gitsigns.toggle_word_diff) -- Text object map({ "o", "x" }, "ih", gitsigns.select_hunk) end, }) -- blink.cmp ------------------------------------------------------------------ require("blink.cmp").setup({ fuzzy = { implementation = "prefer_rust_with_warning" }, signature = { enabled = true }, keymap = { preset = "default", [""] = { "select_and_accept" }, [""] = { "show", "show_documentation", "hide_documentation" }, [""] = { "select_prev", "fallback" }, [""] = { "select_next", "fallback" }, [""] = { "scroll_documentation_down", "fallback" }, [""] = { "scroll_documentation_up", "fallback" }, [""] = { "hide" }, }, appearance = { use_nvim_cmp_as_default = true, nerd_font_variant = "normal" }, sources = { default = { "lsp" } }, completion = { menu = { draw = { -- We don't need label_description now because label and label_description are already -- combined together in label by colorful-menu.nvim. columns = { { "kind_icon" }, { "label", gap = 1 } }, components = { label = { text = function(ctx) return require("colorful-menu").blink_components_text(ctx) end, highlight = function(ctx) return require("colorful-menu").blink_components_highlight(ctx) end, }, }, }, }, }, }) -- oil ------------------------------------------------------------------------ function _G.get_oil_winbar() local bufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid) local dir = require("oil").get_current_dir(bufnr) if dir then return vim.fn.fnamemodify(dir, ":~") else return vim.api.nvim_buf_get_name(0) end end require("oil").setup({ default_file_explorer = true, columns = { "permissions", "size", "mtime", "icon" }, win_options = { signcolumn = "yes:2", winbar = "%!v:lua.get_oil_winbar()" }, view_options = { show_hidden = true }, watch_for_changes = true, skip_confirm_for_simple_edits = true, }) require("oil-git-status").setup() vim.keymap.set("n", "-", "Oil") vim.keymap.set("n", "oc", function() require("oil").open(vim.fn.getcwd()) end) -- snacks.nvim --------------------------------------------------------------- require("snacks").setup({ bigfile = { enabled = true }, indent = { enabled = true }, explorer = { enabled = true }, input = { enabled = true }, words = { enabled = true }, dashboard = { enabled = true, sections = { { section = "header" }, { section = "keys", gap = 1, padding = 1 }, { pane = 2, icon = " ", title = "Recent Files", section = "recent_files", indent = 2, padding = 1, }, { pane = 2, icon = " ", title = "Projects", section = "projects", indent = 2, padding = 1, }, { pane = 2, icon = " ", title = "Git Status", section = "terminal", enabled = function() return require("snacks").git.get_root() ~= nil end, cmd = "git status --short --branch --renames", height = 5, padding = 1, ttl = 30 * 60, indent = 3, }, }, }, picker = { enabled = true, layouts = { fullscreen = { preset = "default", layout = { box = "horizontal", width = 0, height = 0, { box = "vertical", border = false, title = "{title} {live} {flags}", { win = "input", height = 1, border = true }, { win = "list", border = "none" }, }, { win = "preview", title = "{preview}", border = true, width = 0.7 }, }, }, }, layout = "fullscreen", win = { input = { keys = { [""] = { "history_back", mode = { "i", "n" } }, [""] = { "history_forward", mode = { "i", "n" } }, }, }, }, previewers = { diff = { style = "terminal" } }, }, }) local p = require("snacks").picker vim.keymap.set("n", "", p.smart) vim.keymap.set("n", "e", function() require("snacks").explorer() end) vim.keymap.set("n", "fb", p.buffers) vim.keymap.set("n", "ff", p.files) vim.keymap.set("n", "fF", p.git_files) vim.keymap.set("n", "fg", p.grep) vim.keymap.set("n", "fh", p.help) vim.keymap.set("n", "fl", p.lines) vim.keymap.set("n", "fr", p.recent) vim.keymap.set("n", "fc", function() p.files({ cwd = vim.fn.stdpath("config") }) end) vim.keymap.set("n", "gd", p.lsp_definitions) vim.keymap.set("n", "gD", p.lsp_declarations) vim.keymap.set("n", "gr", p.lsp_references) vim.keymap.set("n", "gi", p.lsp_implementations) vim.keymap.set("n", "ss", "Fluoride") vim.keymap.set("n", "sS", p.lsp_workspace_symbols) vim.keymap.set("n", "gb", p.git_branches) vim.keymap.set("n", "gs", p.git_status) vim.keymap.set("n", "gl", p.git_log) -- tiny-inline-diagnostic.nvim ----------------------------------------------- require("tiny-inline-diagnostic").setup({ options = { show_source = { enabled = true }, add_messages = { display_count = true }, multilines = { enabled = true }, }, })