diff --git a/lua/plugins.lua b/lua/plugins.lua index 8c91017..d4933b8 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -1,140 +1,140 @@ -- Bootstrap lazy.nvim and load plugins local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", - lazypath, - }) + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", + lazypath, + }) end vim.opt.rtp:prepend(lazypath) -- plugins to load local plugins = { - -- Appearance - { - "hardhackerlabs/theme-vim", - name = "hardhacker", - lazy = false, - priority = 1000, - config = function() - vim.g.hardhacker_hide_tilde = 1 - vim.g.hardhacker_keyword_italic = 1 - vim.g.hardhacker_custom_highlights = {} - vim.cmd("colorscheme hardhacker") - end, - }, - { "ellisonleao/gruvbox.nvim", priority = 1000, config = true }, - { - "navarasu/onedark.nvim", - config = { - style = "warmer", - transparent = true, - term_colors = true, - ending_tildes = false, - cmp_itemkind_reverse = false, - toggle_style_key = nil, - toggle_style_list = { "dark", "darker", "cool", "deep", "warm", "warmer", "light" }, - code_style = { - comments = "italic", - keywords = "none", - functions = "none", - strings = "none", - variables = "none", - }, - lualine = { transparent = false }, - colors = {}, - highlights = {}, - diagnostics = { - darker = true, - undercurl = true, - background = true, - }, - }, - }, - { "EdenEast/nightfox.nvim" }, - { "rebelot/kanagawa.nvim" }, - { "savq/melange-nvim" }, + -- Appearance + { + "hardhackerlabs/theme-vim", + name = "hardhacker", + lazy = false, + priority = 1000, + config = function() + vim.g.hardhacker_hide_tilde = 1 + vim.g.hardhacker_keyword_italic = 1 + vim.g.hardhacker_custom_highlights = {} + vim.cmd("colorscheme hardhacker") + end, + }, + { "ellisonleao/gruvbox.nvim", priority = 1000, config = true }, + { + "navarasu/onedark.nvim", + config = { + style = "warmer", + transparent = true, + term_colors = true, + ending_tildes = false, + cmp_itemkind_reverse = false, + toggle_style_key = nil, + toggle_style_list = { "dark", "darker", "cool", "deep", "warm", "warmer", "light" }, + code_style = { + comments = "italic", + keywords = "none", + functions = "none", + strings = "none", + variables = "none", + }, + lualine = { transparent = false }, + colors = {}, + highlights = {}, + diagnostics = { + darker = true, + undercurl = true, + background = true, + }, + }, + }, + { "EdenEast/nightfox.nvim" }, + { "rebelot/kanagawa.nvim" }, + { "savq/melange-nvim" }, - -- UI - { "folke/zen-mode.nvim" }, - { "nvim-lualine/lualine.nvim" }, - { "stevearc/dressing.nvim", event = "VeryLazy" }, - { - "akinsho/bufferline.nvim", - version = "*", - dependencies = "nvim-tree/nvim-web-devicons", - config = true, - }, - { - "akinsho/toggleterm.nvim", - version = "*", - opts = { - size = function(term) - if term.direction == "horizontal" then - return 24 - elseif term.direction == "vertical" then - return vim.o.columns * 0.4 - end - end, - open_mapping = [[]], - hide_numbers = true, - start_in_insert = true, - direction = "tab", - close_on_exit = true, - shell = vim.o.shell, - float_opts = { border = "curved" }, - }, - }, - { - "nvim-neo-tree/neo-tree.nvim", - branch = "v3.x", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", - "MunifTanjim/nui.nvim", - "3rd/image.nvim", - }, - config = { hijack_netrw_behavior = "open_default" }, - }, + -- UI + { "folke/zen-mode.nvim" }, + { "nvim-lualine/lualine.nvim" }, + { "stevearc/dressing.nvim", event = "VeryLazy" }, + { + "akinsho/bufferline.nvim", + version = "*", + dependencies = "nvim-tree/nvim-web-devicons", + config = true, + }, + { + "akinsho/toggleterm.nvim", + version = "*", + opts = { + size = function(term) + if term.direction == "horizontal" then + return 24 + elseif term.direction == "vertical" then + return vim.o.columns * 0.4 + end + end, + open_mapping = [[]], + hide_numbers = true, + start_in_insert = true, + direction = "tab", + close_on_exit = true, + shell = vim.o.shell, + float_opts = { border = "curved" }, + }, + }, + { + "nvim-neo-tree/neo-tree.nvim", + branch = "v3.x", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-tree/nvim-web-devicons", + "MunifTanjim/nui.nvim", + "3rd/image.nvim", + }, + config = { hijack_netrw_behavior = "open_default" }, + }, - -- Git - { "lewis6991/gitsigns.nvim" }, + -- Git + { "lewis6991/gitsigns.nvim" }, - -- LSP and Completion - { "williamboman/mason.nvim" }, - { "williamboman/mason-lspconfig.nvim" }, - { "neovim/nvim-lspconfig" }, - { "jose-elias-alvarez/null-ls.nvim" }, - { "L3MON4D3/LuaSnip" }, - { "rafamadriz/friendly-snippets" }, - { "hrsh7th/nvim-cmp" }, - { "hrsh7th/cmp-buffer" }, - { "hrsh7th/cmp-path" }, - { "saadparwaiz1/cmp_luasnip" }, - { "onsails/lspkind.nvim" }, - { "hrsh7th/cmp-nvim-lsp" }, + -- LSP and Completion + { "williamboman/mason.nvim" }, + { "williamboman/mason-lspconfig.nvim" }, + { "neovim/nvim-lspconfig" }, + { "jose-elias-alvarez/null-ls.nvim" }, + { "L3MON4D3/LuaSnip" }, + { "rafamadriz/friendly-snippets" }, + { "hrsh7th/nvim-cmp" }, + { "hrsh7th/cmp-buffer" }, + { "hrsh7th/cmp-path" }, + { "saadparwaiz1/cmp_luasnip" }, + { "onsails/lspkind.nvim" }, + { "hrsh7th/cmp-nvim-lsp" }, - -- Treesitter - { "nvim-treesitter/nvim-treesitter" }, - { "simrat39/rust-tools.nvim" }, + -- Treesitter + { "nvim-treesitter/nvim-treesitter" }, + { "simrat39/rust-tools.nvim" }, - -- Misc - { "norcalli/nvim-colorizer.lua" }, - { "github/copilot.vim" }, + -- Misc + { "norcalli/nvim-colorizer.lua" }, + { "github/copilot.vim" }, - -- Telescope - { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { - "nvim-lua/plenary.nvim", - { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, - }, - }, + -- Telescope + { + "nvim-telescope/telescope.nvim", + branch = "0.1.x", + dependencies = { + "nvim-lua/plenary.nvim", + { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, + }, + }, } -- options diff --git a/lua/setup/cmp.lua b/lua/setup/cmp.lua index 6fad8eb..dacdba5 100644 --- a/lua/setup/cmp.lua +++ b/lua/setup/cmp.lua @@ -1,126 +1,126 @@ local cmp_status_ok, cmp = pcall(require, "cmp") if not cmp_status_ok then - return + return end local snip_status_ok, luasnip = pcall(require, "luasnip") if not snip_status_ok then - return + return end require("luasnip/loaders/from_vscode").lazy_load() local check_backspace = function() - local col = vim.fn.col(".") - 1 - return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") + local col = vim.fn.col(".") - 1 + return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") end local kind_icons = { - Text = "󰉿", - Method = "󰆧", - Function = "󰊕", - Constructor = "", - Field = " ", - Variable = "󰀫", - Class = "󰠱", - Interface = "", - Module = "", - Property = "󰜢", - Unit = "󰑭", - Value = "󰎠", - Enum = "", - Keyword = "󰌋", - Snippet = "", - Color = "󰏘", - File = "󰈙", - Reference = "", - Folder = "󰉋", - EnumMember = "", - Constant = "󰏿", - Struct = "", - Event = "", - Operator = "󰆕", - TypeParameter = " ", - Misc = " ", + Text = "󰉿", + Method = "󰆧", + Function = "󰊕", + Constructor = "", + Field = " ", + Variable = "󰀫", + Class = "󰠱", + Interface = "", + Module = "", + Property = "󰜢", + Unit = "󰑭", + Value = "󰎠", + Enum = "", + Keyword = "󰌋", + Snippet = "", + Color = "󰏘", + File = "󰈙", + Reference = "", + Folder = "󰉋", + EnumMember = "", + Constant = "󰏿", + Struct = "", + Event = "", + Operator = "󰆕", + TypeParameter = " ", + Misc = " ", } -- find more here: https://www.nerdfonts.com/cheat-sheet cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) -- For `luasnip` users. - end, - }, - mapping = { - [""] = cmp.mapping.select_prev_item(), - [""] = cmp.mapping.select_next_item(), - [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), - [""] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [""] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - -- Accept currently selected item. If none selected, `select` first item. - -- Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping.confirm({ select = true }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expandable() then - luasnip.expand() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif check_backspace() then - fallback() - else - fallback() - end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { - "i", - "s", - }), - }, - formatting = { - fields = { "kind", "abbr", "menu" }, - format = function(entry, vim_item) - -- Kind icons - vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) - -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind - vim_item.menu = ({ - nvim_lsp = "[LSP]", - luasnip = "[Snippet]", - buffer = "[Buffer]", - path = "[Path]", - })[entry.source.name] - return vim_item - end, - }, - sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }, - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - experimental = { - ghost_text = false, - native_menu = false, - }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) -- For `luasnip` users. + end, + }, + mapping = { + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), + [""] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [""] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + -- Accept currently selected item. If none selected, `select` first item. + -- Set `select` to `false` to only confirm explicitly selected items. + [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expandable() then + luasnip.expand() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif check_backspace() then + fallback() + else + fallback() + end + end, { + "i", + "s", + }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { + "i", + "s", + }), + }, + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + -- Kind icons + vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) + -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind + vim_item.menu = ({ + nvim_lsp = "[LSP]", + luasnip = "[Snippet]", + buffer = "[Buffer]", + path = "[Path]", + })[entry.source.name] + return vim_item + end, + }, + sources = { + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + }, + confirm_opts = { + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }, + experimental = { + ghost_text = false, + native_menu = false, + }, }) diff --git a/lua/setup/colorscheme.lua b/lua/setup/colorscheme.lua index d1ef3a8..be8445d 100644 --- a/lua/setup/colorscheme.lua +++ b/lua/setup/colorscheme.lua @@ -1,8 +1,8 @@ -local ok, _ = pcall(require, "hardhacker") +local ok, _ = pcall(require, "gruvbox") if not ok then - return + return end -- setup must be called before loading vim.opt.termguicolors = true -vim.cmd.colorscheme("hardhacker") +vim.cmd.colorscheme("gruvbox") diff --git a/lua/setup/gitsigns.lua b/lua/setup/gitsigns.lua index bddf9e6..54ece69 100644 --- a/lua/setup/gitsigns.lua +++ b/lua/setup/gitsigns.lua @@ -1,47 +1,47 @@ local ok, gitsigns = pcall(require, "gitsigns") if not ok then - return + return end gitsigns.setup({ - signs = { - add = { text = "│" }, - change = { text = "│" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - untracked = { text = "┆" }, - }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = false, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - watch_gitdir = { - interval = 1000, - follow_files = true, - }, - attach_to_untracked = true, - current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - current_line_blame_opts = { - virt_text = true, - virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - ignore_whitespace = false, - }, - current_line_blame_formatter = ", - ", - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - max_file_length = 40000, -- Disable if file is longer than this (in lines) - preview_config = { - -- Options passed to nvim_open_win - border = "single", - style = "minimal", - relative = "cursor", - row = 0, - col = 1, - }, - yadm = { - enable = false, - }, + signs = { + add = { text = "│" }, + change = { text = "│" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + watch_gitdir = { + interval = 1000, + follow_files = true, + }, + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + ignore_whitespace = false, + }, + current_line_blame_formatter = ", - ", + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, -- Disable if file is longer than this (in lines) + preview_config = { + -- Options passed to nvim_open_win + border = "single", + style = "minimal", + relative = "cursor", + row = 0, + col = 1, + }, + yadm = { + enable = false, + }, }) diff --git a/lua/setup/lualine.lua b/lua/setup/lualine.lua index c038fdf..ac46d39 100644 --- a/lua/setup/lualine.lua +++ b/lua/setup/lualine.lua @@ -1,45 +1,45 @@ local ok, lualine = pcall(require, "lualine") if not ok then - return + return end lualine.setup({ - options = { - icons_enabled = false, - theme = "auto", - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { - statusline = {}, - winbar = {}, - }, - ignore_focus = {}, - always_divide_middle = true, - globalstatus = false, - refresh = { - statusline = 1000, - tabline = 1000, - winbar = 1000, - }, - }, - sections = { - lualine_a = { "mode" }, - lualine_b = { "branch", "diff", "diagnostics" }, - lualine_c = { "filename" }, - lualine_x = { "encoding", "fileformat", "filetype" }, - lualine_y = { "progress" }, - lualine_z = { "location" }, - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = { "filename" }, - lualine_x = { "location" }, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - winbar = {}, - inactive_winbar = {}, - extensions = {}, + options = { + icons_enabled = false, + theme = "auto", + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + disabled_filetypes = { + statusline = {}, + winbar = {}, + }, + ignore_focus = {}, + always_divide_middle = true, + globalstatus = false, + refresh = { + statusline = 1000, + tabline = 1000, + winbar = 1000, + }, + }, + sections = { + lualine_a = { "mode" }, + lualine_b = { "branch", "diff", "diagnostics" }, + lualine_c = { "filename" }, + lualine_x = { "encoding", "fileformat", "filetype" }, + lualine_y = { "progress" }, + lualine_z = { "location" }, + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = { "filename" }, + lualine_x = { "location" }, + lualine_y = {}, + lualine_z = {}, + }, + tabline = {}, + winbar = {}, + inactive_winbar = {}, + extensions = {}, }) diff --git a/lua/setup/null-ls.lua b/lua/setup/null-ls.lua index 8870f17..e9bbc97 100644 --- a/lua/setup/null-ls.lua +++ b/lua/setup/null-ls.lua @@ -1,35 +1,35 @@ local ok, null_ls = pcall(require, "null-ls") if not ok then - return + return end local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) null_ls.setup({ - sources = { - null_ls.builtins.formatting.rustfmt, - null_ls.builtins.formatting.stylua, - null_ls.builtins.formatting.black, - null_ls.builtins.formatting.prettier, - null_ls.builtins.formatting.clang_format, - }, + sources = { + null_ls.builtins.formatting.rustfmt, + null_ls.builtins.formatting.stylua, + null_ls.builtins.formatting.black, + null_ls.builtins.formatting.prettier, + null_ls.builtins.formatting.clang_format, + }, - -- you can reuse a shared lspconfig on_attach callback here - on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ - bufnr = bufnr, - filter = function() - return client.name == "null-ls" - end, - }) - end, - }) - end - end, + -- you can reuse a shared lspconfig on_attach callback here + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ + bufnr = bufnr, + filter = function() + return client.name == "null-ls" + end, + }) + end, + }) + end + end, }) diff --git a/lua/setup/nvim-cmp.lua b/lua/setup/nvim-cmp.lua index bf69666..67cf7a7 100644 --- a/lua/setup/nvim-cmp.lua +++ b/lua/setup/nvim-cmp.lua @@ -1,93 +1,93 @@ local ok, cmp = pcall(require, "cmp") if not ok then - return + return end local luasnip_ok, luasnip = pcall(require, "luasnip") if not luasnip_ok then - return + return end local luasnip_vscode_ok, luasnip_vscode = pcall(require, "luasnip/loaders/from_vscode") if not luasnip_vscode_ok then - return + return end local lspkind_ok, lspkind = pcall(require, "lspkind") if not lspkind_ok then - return + return end luasnip_vscode.lazy_load() local has_words_before = function() - unpack = unpack or table.unpack - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end cmp.setup({ - view = { - --entries = { name = "custom", selection_order = "near_cursor" }, - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) -- For `luasnip` users. - end, - }, - mapping = { - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.abort(), - [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + view = { + --entries = { name = "custom", selection_order = "near_cursor" }, + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) -- For `luasnip` users. + end, + }, + mapping = { + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() - -- they way you will only jump inside the snippet region - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() + -- they way you will only jump inside the snippet region + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }, - sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }, - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - experimental = { - ghost_text = false, - }, - formatting = { - fields = { "abbr", "kind", "menu" }, - format = function(entry, vim_item) - local kind = lspkind.cmp_format({ mode = "symbol_text", maxwidth = 50 })(entry, vim_item) - local strings = vim.split(kind.kind, "%s", { trimempty = true }) - kind.kind = " " .. (strings[1] or "") .. " " - kind.menu = (strings[2] or "") + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + }, + confirm_opts = { + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }, + experimental = { + ghost_text = false, + }, + formatting = { + fields = { "abbr", "kind", "menu" }, + format = function(entry, vim_item) + local kind = lspkind.cmp_format({ mode = "symbol_text", maxwidth = 50 })(entry, vim_item) + local strings = vim.split(kind.kind, "%s", { trimempty = true }) + kind.kind = " " .. (strings[1] or "") .. " " + kind.menu = (strings[2] or "") - return kind - end, - }, + return kind + end, + }, }) diff --git a/lua/setup/nvim-lspconfig.lua b/lua/setup/nvim-lspconfig.lua index 23b0788..d075963 100644 --- a/lua/setup/nvim-lspconfig.lua +++ b/lua/setup/nvim-lspconfig.lua @@ -1,54 +1,54 @@ local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") if not lspconfig_status_ok then - return + return end local mason_status_ok, mason = pcall(require, "mason") if not mason_status_ok then - return + return end local mason_lspconfig_status_ok, mason_lspconfig = pcall(require, "mason-lspconfig") if not mason_lspconfig_status_ok then - return + return end mason.setup({}) mason_lspconfig.setup({ - ensure_installed = { "lua_ls", "rust_analyzer", "clangd", "marksman" }, + ensure_installed = { "lua_ls", "rust_analyzer", "clangd", "marksman" }, }) local cnl_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") if not cnl_ok then - return + return end local capabilities = cmp_nvim_lsp.default_capabilities() mason_lspconfig.setup_handlers({ - function(server) - lspconfig[server].setup({ - capabilities = capabilities, - }) - lspconfig.lua_ls.setup({ - capabilities = capabilities, - settings = { - Lua = { - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = { "vim" }, - }, - }, - }, - }) - end, - ["rust_analyzer"] = function() - local rt_ok, rust_tools = pcall(require, "rust-tools") - if rt_ok then - rust_tools.setup({}) - end - end, + function(server) + lspconfig[server].setup({ + capabilities = capabilities, + }) + lspconfig.lua_ls.setup({ + capabilities = capabilities, + settings = { + Lua = { + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + }, + }, + }) + end, + ["rust_analyzer"] = function() + local rt_ok, rust_tools = pcall(require, "rust-tools") + if rt_ok then + rust_tools.setup({}) + end + end, }) -- Global mappings. @@ -61,30 +61,30 @@ vim.keymap.set("n", "q", vim.diagnostic.setloclist) -- Use LspAttach autocommand to only map the following keys -- after the language server attaches to the current buffer vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("UserLspConfig", {}), - callback = function(ev) - -- Enable completion triggered by - vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + -- Enable completion triggered by + vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" - -- Buffer local mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local opts = { buffer = ev.buf } - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) - vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) - vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) - vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) - vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) - vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set("n", "wl", function() - print(vim.inspect(vim.lsp.buf.list_workLeader_folders())) - end, opts) - vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) - vim.keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) - vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) - vim.keymap.set("n", "f", function() - vim.lsp.buf.format({ async = true }) - end, opts) - end, + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf } + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) + vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) + vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) + vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set("n", "wl", function() + print(vim.inspect(vim.lsp.buf.list_workLeader_folders())) + end, opts) + vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) + vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) + vim.keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) + vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) + vim.keymap.set("n", "f", function() + vim.lsp.buf.format({ async = true }) + end, opts) + end, }) diff --git a/lua/setup/telescope.lua b/lua/setup/telescope.lua index cea8c22..8dd3c41 100644 --- a/lua/setup/telescope.lua +++ b/lua/setup/telescope.lua @@ -1,48 +1,48 @@ local status_ok, telescope = pcall(require, "telescope") if not status_ok then - return + return end local actions_ok, actions = pcall(require, "telescope.actions") if not actions_ok then - return + return end telescope.setup({ - defaults = { - -- Default configuration for telescope goes here: - -- config_key = value, - mappings = { - i = { - -- map telescope.actions.which_key to (default: ) - -- telescope.actions.which_key shows the mappings for your picker, - -- e.g. git_{create, delete, ...}_branch for the git_branches picker - [""] = "which_key", - [""] = actions.move_selection_previous, - [""] = actions.move_selection_next, - [""] = actions.send_selected_to_qflist + actions.open_qflist, - }, - }, - }, - pickers = { - -- Default configuration for builtin pickers goes here: - -- picker_name = { - -- picker_config_key = value, - -- ... - -- } - -- Now the picker_config_key will be applied every time you call this - -- builtin picker - find_files = { - hidden = false, - }, - }, - extensions = { - -- Your extension configuration goes here: - -- extension_name = { - -- extension_config_key = value, - -- } - -- please take a look at the readme of the extension you want to configure - }, + defaults = { + -- Default configuration for telescope goes here: + -- config_key = value, + mappings = { + i = { + -- map telescope.actions.which_key to (default: ) + -- telescope.actions.which_key shows the mappings for your picker, + -- e.g. git_{create, delete, ...}_branch for the git_branches picker + [""] = "which_key", + [""] = actions.move_selection_previous, + [""] = actions.move_selection_next, + [""] = actions.send_selected_to_qflist + actions.open_qflist, + }, + }, + }, + pickers = { + -- Default configuration for builtin pickers goes here: + -- picker_name = { + -- picker_config_key = value, + -- ... + -- } + -- Now the picker_config_key will be applied every time you call this + -- builtin picker + find_files = { + hidden = false, + }, + }, + extensions = { + -- Your extension configuration goes here: + -- extension_name = { + -- extension_config_key = value, + -- } + -- please take a look at the readme of the extension you want to configure + }, }) telescope.load_extension("fzf") diff --git a/lua/setup/terminal.lua b/lua/setup/terminal.lua index ffda971..d3f8e80 100644 --- a/lua/setup/terminal.lua +++ b/lua/setup/terminal.lua @@ -2,13 +2,13 @@ -- This function is taken from https://github.com/norcalli/nvim_utils local function nvim_create_augroups(definitions) for group_name, definition in pairs(definitions) do - vim.api.nvim_command('augroup ' .. group_name) - vim.api.nvim_command('autocmd!') + vim.api.nvim_command("augroup " .. group_name) + vim.api.nvim_command("autocmd!") for _, def in ipairs(definition) do - local command = table.concat(vim.tbl_flatten { 'autocmd', def }, ' ') + local command = table.concat(vim.tbl_flatten({ "autocmd", def }), " ") vim.api.nvim_command(command) end - vim.api.nvim_command('augroup END') + vim.api.nvim_command("augroup END") end end diff --git a/lua/setup/treesitter.lua b/lua/setup/treesitter.lua index 1245f40..a75690c 100644 --- a/lua/setup/treesitter.lua +++ b/lua/setup/treesitter.lua @@ -1,42 +1,42 @@ local ok, nvim_treesitter = pcall(require, "nvim-treesitter.configs") if not ok then - return + return end nvim_treesitter.setup({ - -- A list of parser names, or "all" (the four listed parsers should always be installed) - ensure_installed = { "c", "lua", "vim", "cpp", "rust" }, - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = false, - -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally - auto_install = true, - -- List of parsers to ignore installing (for "all") - ignore_install = { "javascript" }, - ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) - -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + -- A list of parser names, or "all" (the four listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim", "cpp", "rust" }, + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + -- List of parsers to ignore installing (for "all") + ignore_install = { "javascript" }, + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! - highlight = { - enable = true, - -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to - -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is - -- the name of the parser) - -- list of language that will be disabled - disable = { "" }, - -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files - --disable = function(lang, buf) - -- local max_filesize = 100 * 1024 -- 100 KB - -- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) - -- if ok and stats and stats.size > max_filesize then - -- return true - -- end - --end, + highlight = { + enable = true, + -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to + -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is + -- the name of the parser) + -- list of language that will be disabled + disable = { "" }, + -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files + --disable = function(lang, buf) + -- local max_filesize = 100 * 1024 -- 100 KB + -- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + -- if ok and stats and stats.size > max_filesize then + -- return true + -- end + --end, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = true, - }, - indent = { enable = true, disable = { "yaml" } }, + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = true, + }, + indent = { enable = true, disable = { "yaml" } }, })