Something went wrong. Try again.
my lil nvim config
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288vim.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", "<leader>ma", miniharp.toggle_file)vim.keymap.set("n", "<leader>mc", miniharp.clear)vim.keymap.set("n", "<leader>ml", miniharp.show_list)vim.keymap.set("n", "<leader><C-n>", miniharp.next)vim.keymap.set("n", "<leader><C-p>", 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", "<leader>hs", gitsigns.stage_hunk) map("n", "<leader>hr", gitsigns.reset_hunk) map("v", "<leader>hs", function() gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end) map("v", "<leader>hr", function() gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end) map("n", "<leader>hR", gitsigns.reset_buffer) map("n", "<leader>hp", gitsigns.preview_hunk) map("n", "<leader>hi", gitsigns.preview_hunk_inline) map("n", "<leader>hb", function() gitsigns.blame_line({ full = true }) end) map("n", "<leader>hd", gitsigns.diffthis) map("n", "<leader>hD", function() gitsigns.diffthis("~") end) map("n", "<leader>hQ", function() gitsigns.setqflist("all") end) map("n", "<leader>hq", gitsigns.setqflist) map("n", "<leader>tb", gitsigns.toggle_current_line_blame) map("n", "<leader>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", ["<C-y>"] = { "select_and_accept" }, ["<C-h>"] = { "show", "show_documentation", "hide_documentation" }, ["<C-k>"] = { "select_prev", "fallback" }, ["<C-j>"] = { "select_next", "fallback" }, ["<C-b>"] = { "scroll_documentation_down", "fallback" }, ["<C-f>"] = { "scroll_documentation_up", "fallback" }, ["<C-e>"] = { "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) endend
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", "-", "<cmd>Oil<CR>")vim.keymap.set("n", "<leader>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 = { ["<Up>"] = { "history_back", mode = { "i", "n" } }, ["<Down>"] = { "history_forward", mode = { "i", "n" } }, }, }, }, previewers = { diff = { style = "terminal" } }, },})
local p = require("snacks").pickervim.keymap.set("n", "<leader><leader>", p.smart)vim.keymap.set("n", "<leader>e", function() require("snacks").explorer() end)
vim.keymap.set("n", "<leader>fb", p.buffers)vim.keymap.set("n", "<leader>ff", p.files)vim.keymap.set("n", "<leader>fF", p.git_files)vim.keymap.set("n", "<leader>fg", p.grep)vim.keymap.set("n", "<leader>fh", p.help)vim.keymap.set("n", "<leader>fl", p.lines)vim.keymap.set("n", "<leader>fr", p.recent)vim.keymap.set("n", "<leader>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", "<leader>ss", "<cmd>Fluoride<cr>")vim.keymap.set("n", "<leader>sS", p.lsp_workspace_symbols)
vim.keymap.set("n", "<leader>gb", p.git_branches)vim.keymap.set("n", "<leader>gs", p.git_status)vim.keymap.set("n", "<leader>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 }, },})