diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 0788230..9389f36 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,8 +1,8 @@ { "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, - "LuaSnip": { "branch": "master", "commit": "825a61bad1d60d917a7962d73cf3c683f4e0407e" }, + "LuaSnip": { "branch": "master", "commit": "be7be2ca7f55bb881a7ffc16b2efa5af034ab06b" }, "bufferline.nvim": { "branch": "main", "commit": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef" }, - "catppuccin": { "branch": "main", "commit": "aebe43db9cb26e1c70fc5b2fd4158169c405e720" }, + "catppuccin": { "branch": "main", "commit": "02bdd749931a5d739063562e57531c118e081882" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, @@ -12,39 +12,42 @@ "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" }, "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" }, "fd": { "branch": "master", "commit": "11069e284a61afef8becdd4e189977e5621c0cf9" }, - "gitsigns.nvim": { "branch": "main", "commit": "fa052c20aa7cc62ce6a328c7f3bd556c93b5370e" }, - "go.nvim": { "branch": "master", "commit": "ae58327c9e894f6663bf43496063c167170b4ac3" }, + "gitsigns.nvim": { "branch": "main", "commit": "c097cb255096f333e14d341082a84f572b394fa2" }, + "go.nvim": { "branch": "master", "commit": "39c245285483f7b587d827b3ff3eaa7e9ed00510" }, "guihua.lua": { "branch": "master", "commit": "3b3126ae87c254f6849e708549ba76c39e3f42f8" }, "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" }, "laravel.nvim": { "branch": "main", "commit": "baafe3c0072ecb7c8f1efc9ed5e3c96ff4fbf056" }, "lazy.nvim": { "branch": "main", "commit": "31ddbea7c10b6920c9077b66c97951ca8682d5c8" }, "lspkind-nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, "lualine-lsp-progress": { "branch": "master", "commit": "56842d097245a08d77912edf5f2a69ba29f275d7" }, - "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" }, + "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" }, "mason-conform.nvim": { "branch": "main", "commit": "c41b19222db71b016e55c64454b5e03441f56859" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "44509689b9bf3984d729cc264aacb31cb7f41668" }, "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" }, "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" }, - "neo-tree.nvim": { "branch": "main", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" }, - "neotest": { "branch": "master", "commit": "e07fe8241112274aae9947b98d255763738a1d52" }, + "neo-tree.nvim": { "branch": "main", "commit": "c61074acb19102dfc6f21738dcae4d9a494a8959" }, + "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" }, + "neotest": { "branch": "master", "commit": "f03a78cef74db5638e4312e18b767294a90de8da" }, "neotest-go": { "branch": "main", "commit": "6a2f996d89fe4631942e035b1c114544ee045043" }, "neotest-phpunit": { "branch": "main", "commit": "5799a4ea84450af14461d24edbde43913f9b3008" }, - "noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" }, - "none-ls.nvim": { "branch": "main", "commit": "0d42ba8d506242b2252d2d2885a7f6f4f5b2bcb2" }, + "none-ls.nvim": { "branch": "main", "commit": "dca7ddec321a102ec9e792b1b29193702aff5fbb" }, "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" }, - "nvim-autopairs": { "branch": "master", "commit": "dbfc1c34bed415906395db8303c71039b3a3ffb4" }, + "nvim-autopairs": { "branch": "master", "commit": "4f41e5940bc0443fdbe5f995e2a596847215cd2a" }, "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" }, "nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" }, "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" }, - "nvim-lspconfig": { "branch": "master", "commit": "96e5711040df23583591391ce49e556b8cd248d8" }, + "nvim-lspconfig": { "branch": "master", "commit": "b3014f2209503944f2714cf27c95591433a0c7d8" }, "nvim-nio": { "branch": "master", "commit": "5800f585def265d52f1d8848133217c800bcb25d" }, - "nvim-treesitter": { "branch": "master", "commit": "1b050206e490a4146cdf25c7b38969c1711b5620" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "f5183cea0fda26126e22e789382c208e7b1120f4" }, + "nvim-treesitter": { "branch": "master", "commit": "b0ac1135fe304edd34e18204304906744db0fe63" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "67ac27f859ee3f7584f3edef81d0942bb61d5344" }, "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" }, - "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" }, + "nvim-web-devicons": { "branch": "master", "commit": "6e355632387a085f15a66ad68cf681c1d7374a04" }, + "onedark.nvim": { "branch": "master", "commit": "1230aaf2a427b2c5b73aba6e4a9a5881d3e69429" }, "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" }, - "telescope.nvim": { "branch": "master", "commit": "4626aaa2bcfdacf55fd6d44b430e2df81b2403ff" }, + "telescope.nvim": { "branch": "master", "commit": "5a701e99906961218b55d7ad6c2a998f066c6fe0" }, + "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" }, + "undotree": { "branch": "master", "commit": "aa93a7e5890dbbebbc064cd22260721a6db1a196" }, "vim-dotenv": { "branch": "master", "commit": "5c51cfcf8d87280d6414e03cd6b253eb70ecb800" }, "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } } \ No newline at end of file diff --git a/nvim/lua/config/commands.lua b/nvim/lua/config/commands.lua index 8ad8080..c1478a0 100644 --- a/nvim/lua/config/commands.lua +++ b/nvim/lua/config/commands.lua @@ -1,13 +1,11 @@ - -- Nice command that creates all directores in the path -- then creates the file and opens it. -vim.api.nvim_create_user_command('CreateFile', - function(opts) - local dir = vim.fs.dirname(opts.fargs[1]) - vim.cmd(string.format("!mkdir -p %s\n !touch %s", dir, opts.fargs[1])) - vim.cmd.e(opts.fargs) - end, - { nargs = 1, complete = "file" } -) +local createfile = function(opts) + local dir = vim.fs.dirname(opts.fargs[1]) + vim.cmd(string.format("!mkdir -p %s\n !touch %s", dir, opts.fargs[1])) + vim.cmd.e(opts.fargs) +end + +vim.api.nvim_create_user_command('CreateFile', createfile, { nargs = 1, complete = "file" }) vim.cmd("ca cf CreateFile") diff --git a/nvim/lua/config/filetype.lua b/nvim/lua/config/filetype.lua index 440df57..f365e0f 100644 --- a/nvim/lua/config/filetype.lua +++ b/nvim/lua/config/filetype.lua @@ -4,32 +4,45 @@ local autocmd = vim.api.nvim_create_autocmd local augroup = vim.api.nvim_create_augroup -augroup('indent', { clear = true }) --- Hardtabs for make -autocmd('Filetype', { - group = 'indent', - pattern = { 'make' }, - command = 'setlocal ts=4 sts=0 sw=4 noexpandtab' -}) - --- Softtab (2) for yaml -autocmd('Filetype', { - group = 'indent', - pattern = { 'yaml' }, - command = 'setlocal ts=2 sts=2 sw=2 expandtab' -}) - --- Hardtabs for c/cpp -autocmd('Filetype', { - group = 'indent', - pattern = { 'c', 'cpp' }, - command = 'setlocal ts=8 sts=0 sw=8 noexpandtab' +-- Add blade filetype for .blade.php files +vim.filetype.add({ + pattern = { + ['.*%.blade%.php'] = 'blade', + }, }) -- Fix autocomment plugins to use line comments for php. autocmd('Filetype', { - pattern = 'php', - command = 'setlocal commentstring=//\\%s' + pattern = 'php', + command = 'setlocal commentstring=//\\%s' }) + +-- +-- Indent +-- + + +augroup('indent', { clear = true }) + +-- Hardtabs for make +autocmd('Filetype', { + group = 'indent', + pattern = { 'make' }, + command = 'setlocal ts=4 sts=0 sw=4 noexpandtab' +}) + +-- Softtab (2) for yaml +autocmd('Filetype', { + group = 'indent', + pattern = { 'yaml' }, + command = 'setlocal ts=2 sts=2 sw=2 expandtab' +}) + +-- Hardtabs for c/cpp +autocmd('Filetype', { + group = 'indent', + pattern = { 'c', 'cpp' }, + command = 'setlocal ts=8 sts=0 sw=8 noexpandtab' +}) diff --git a/nvim/lua/config/icons.lua b/nvim/lua/config/icons.lua index 71beb37..50326a3 100644 --- a/nvim/lua/config/icons.lua +++ b/nvim/lua/config/icons.lua @@ -1,89 +1,90 @@ return { - prompt = '', - current = ' ', - selected = '', - close = '󰅖', - pinned = '', - tree = { - node = '│', - nodelast = '└', - }, - files = { - text = "", - symlink = "", - }, - folder = { - closed = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - diff = { - added = '', - modified = '', - removed = '', - }, - diff_gutter = { - add = '▏', - change = '▏', - delete = '', - untracked = '+' - }, - gitsigns = { - -- Change type - added = "", - modified = "", - deleted = "", - renamed = "➜", - -- Status type - untracked = "★", - ignored = "◌", - unstaged = "", - staged = "✓", - conflict = "", - }, - diagnostics = { - error = '', - warn = '', - info = '', - hint = '' - }, - test = { - ok = '', - failed = '', - running = '', - skipped = '', - watch = '', - unknown = '', - }, - symbols = { - Text = "", - Method = "", - Function = "󰊕", - Constructor = "", - Field = "", - Variable = "", - Class = "", - Interface = "", - Module = "", - Property = "", - Unit = "󰑭", - Value = "", - Enum = "", - Keyword = "", - Snippet = "󰘦", - Color = "", - File = "󰈙", - Reference = "󰈇", - Folder = "󰉋", - EnumMember = "", - Constant = "", - Struct = "󰙅", - Event = "", - Operator = "󰆕", + prompt = '', + current = ' ', + selected = '', + close = '󰅖', + modified = '', + pinned = '', + separator = '│', + tree = { + node = '│', + nodelast = '└', + }, + files = { + text = "", + symlink = "", + }, + folder = { + closed = "", + open = "", + empty = "", + empty_open = "", + symlink = "", + symlink_open = "", + }, + diff = { + added = '', + modified = '', + removed = '', + }, + diff_gutter = { + add = '▍', + change = '▍', + delete = '', + untracked = '+' + }, + gitsigns = { + -- Change type + added = "", + modified = "", + deleted = "", + renamed = "➜", + -- Status type + untracked = "★", + ignored = "◌", + unstaged = "", + staged = "✓", + conflict = "", + }, + diagnostics = { + error = '', + warn = '', + info = '', + hint = '' + }, + test = { + ok = '', + failed = '', + running = '', + skipped = '', + watch = '', + unknown = '', + }, + symbols = { + 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 = "", }, - } diff --git a/nvim/lua/config/init.lua b/nvim/lua/config/init.lua index 6ad3f15..d2a4c24 100644 --- a/nvim/lua/config/init.lua +++ b/nvim/lua/config/init.lua @@ -1,4 +1,5 @@ +-- config +require("config.commands") require("config.settings") require("config.mappings") require("config.filetype") -require("config.commands") diff --git a/nvim/lua/config/mappings.lua b/nvim/lua/config/mappings.lua index 6d5b1a0..9e7b4f2 100644 --- a/nvim/lua/config/mappings.lua +++ b/nvim/lua/config/mappings.lua @@ -16,7 +16,7 @@ map("n", "n", "nzzzv", { silent = true, desc = "jump to next search match" }) map("n", "N", "Nzzzv", { silent = true, desc = "jump to previous search match" }) -- Ctrl+s saves the current buffer in normal/insert mode. -map({"n", "i"}, "", cmd.w, { desc = "save current buffer" }) +map({ "n", "i" }, "", cmd.w, { desc = "save current buffer" }) -- Move text map("n", "", ":m -2v=", { silent = true, desc = "move current line one line up" }) @@ -25,17 +25,21 @@ map("v", "", ":m '<-2gv=gv", { silent = true, desc = "move current sele map("v", "", ":m '>+1gv=gv", { silent = true, desc = "move current selection one line down" }) -- copy/paste -map("x", "p", [["_dP]], { silent = true, desc = "Paste over selected text without losing content in \"-register" }) -map({"n", "v"}, "y", [["+y]], { desc = "Yank to system clipboard register" }) -map("n", "p", [["+p]], { desc = "Paste from system clipboard register" }) +map("x", "p", [["_dP]], + { silent = true, desc = "Paste over selected text without losing content in \"-register" }) +map({ "n", "v" }, "y", [["+y]], { desc = "Yank to system clipboard register" }) +map({ "n", "v" }, "p", [["+p]], { desc = "Paste from system clipboard register" }) -- File operations -map("n", "fx", "!chmod +x %", { silent = true, desc = "Set execute flag on current file" }) +map("n", "Fc", ":CreateFile ", { silent = true, desc = "Create new file" }) +map("n", "Fx", "!chmod +x %", { silent = true, desc = "Set execute flag on current file" }) -- buffers -map("n", "bn", cmd.bn, { silent = true, desc = "Move to next buffer"}) -map("n", "bb", cmd.bp, { silent = true, desc = "Move to previous buffer"}) -map("n", "bd", cmd.bd, { silent = true, desc = "Close current buffer"}) +map("n", "bn", cmd.bn, { silent = true, desc = "Move to next buffer" }) +map("n", "bb", cmd.bp, { silent = true, desc = "Move to previous buffer" }) +map("n", "bd", cmd.bd, { silent = true, desc = "Close current buffer" }) +map("n", "bc", "BufferLineCloseOthers", { silent = true, desc = "Close all other buffers" }) +map("n", "bD", "%bd", { silent = true, desc = "Close all buffers" }) -- Indent map('n', "", "^=$") @@ -43,21 +47,25 @@ map('x', "", "=", { desc = "auto indent selection" }) map("i", "", "", { desc = "delete indent" }) -- fix paste -map('n', "p", "p=$") +-- map('n', "p", "p=$") -- Crazy search+replace map("n", "rw", [[:%s/\<\>//gI]], { - desc = "search+replace word under cursor" + desc = "search+replace word under cursor" }) -map({"x"}, "hx", [[:s/\(\x\{2\}\)/0x\1,/g]], { desc = "Format hex"}) -map({"x"}, "ha", [[:s/0x\(\x\{1\}\X\)/0x0\1/g]], { desc = "Format hex more"}) -map({"x"}, "hn", [[:s/\(\(0x\x\{1,2\}, \)\{8\}\)/\1\r/g]], { desc = "Format hex with 8 bytes per row"}) +map({ "x" }, "fhx", [[:s/\(\x\{2\}\)/0x\1, /g]], { desc = "Format hex" }) +map({ "x" }, "fha", [[:s/0x\(\x\{1\}\X\)/0x0\1/g]], { desc = "Format each hex number to be 2 characters long" }) +map({ "x" }, "fhn", [[:s/\(\(0x\x\{1,2\}, \)\{8\}\)/\1\r/g]], { desc = "Format hex with 8 bytes per row" }) +-- map({"x"}, "hb", [[:'<,'>s/\(\x\{2\}\)/0x\1, /g]], { desc = "Format a hex string to byte array"}) + +-- diagnostics +map("n", "do", vim.diagnostic.open_float, { desc = "Open diagnostics" }) +map("n", "dn", vim.diagnostic.get_next, { desc = "Goto next" }) +map("n", "dp", vim.diagnostic.get_prev, { desc = "Goto previous" }) + +-- TMux +map("n", "m", ":terminal tmuxsi", { desc = "Open tmux manager" }) map("n", "Q", "") - --- diagnostics -map("n", "do", vim.diagnostic.open_float, { desc = "Open diagnostics"}) -map("n", "dn", vim.diagnostic.get_next, { desc = "Goto next"}) -map("n", "dp", vim.diagnostic.get_prev, { desc = "Goto previous"}) diff --git a/nvim/lua/config/plugins/bufferline.lua b/nvim/lua/config/plugins/bufferline.lua index e3edd9d..0439377 100644 --- a/nvim/lua/config/plugins/bufferline.lua +++ b/nvim/lua/config/plugins/bufferline.lua @@ -1,36 +1,46 @@ local icons = require('config.icons') -return function () - local highlightfunc = require("catppuccin.groups.integrations.bufferline") - return { - highlights = highlightfunc.get(), - options = { - mode = "buffers", - themable = true, - buffer_close_icon = icons.close, - close_icon = icons.close, - modified_icon = icons.modified_icon, - diagnostics = false, - enforce_regular_tabs = true, - indicator = { - style = 'underline', - }, - close_command = function (bufnum) - vim.cmd("bprev") - vim.api.nvim_buf_delete(bufnum, {}) - end, - hover = { +return function() + local highlightfunc = require("catppuccin.groups.integrations.bufferline") + return { + highlights = highlightfunc.get(), + options = { + mode = "buffers", + themable = true, + buffer_close_icon = icons.close, + close_icon = icons.close, + modified_icon = icons.modified, + diagnostics = false, + enforce_regular_tabs = true, + indicator = { + icon = "", + }, + close_command = function(bufnum) + vim.cmd("bprev") + vim.api.nvim_buf_delete(bufnum, {}) + end, + hover = { enabled = true, delay = 200, - reveal = {'close'} + reveal = { 'close' } }, - offsets = { - { - filetype = "neo-tree", - text = "File Explorer", - text_align = "left" - } - }, - } - } + offsets = { + { + filetype = "neo-tree", + text = "File Explorer", + text_align = "left" + } + }, + custom_areas = { + left = function() + return { + { + text = "  ", + fg = "#8fff6d", + } + } + end + } + } + } end diff --git a/nvim/lua/config/plugins/catppuccin.lua b/nvim/lua/config/plugins/catppuccin.lua index a3ff444..6846540 100644 --- a/nvim/lua/config/plugins/catppuccin.lua +++ b/nvim/lua/config/plugins/catppuccin.lua @@ -2,7 +2,7 @@ return { flavour = "mocha", color_overrides = { mocha = { - base = '#0e1019', + base = '#0E1019', mantle = '#0D0F17', crust = '#0C0D14', surface0 = '#131521', @@ -19,13 +19,17 @@ return { highlight_overrides = { mocha = function(colors) return { + -- Normal = { fg = colors.text }, + -- NormalNC = { fg = colors.text }, + -- Floating windows - NormalFloat = { fg = colors.text, bg = colors.base }, + NormalFloat = { fg = colors.text, bg = colors.mantle }, FloatTitle = { fg = colors.base, bg = colors.blue }, - FloatBorder = { fg = colors.blue, bg = colors.base }, + FloatBorder = { fg = colors.blue, bg = colors.mantle }, -- Window separator WinSeparator = { fg = colors.surface0 }, + NeoTreeWinSeparator = { link = "WinSeparator" }, -- Menus Pmenu = { fg = colors.text, bg = colors.mantle }, @@ -49,6 +53,16 @@ return { TelescopePromptBorder = { fg = colors.mantle, bg = colors.mantle }, TelescopePromptTitle = { fg = colors.crust, bg = colors.blue }, TelescopePreviewTitle = { fg = colors.crust, bg = colors.mauve }, + TelescopeSelection = { fg = colors.text, bg = colors.surface0 }, + + -- Statusline + StatusLine = { fg = colors.text, bg = colors.mantle }, + StatusLineNormal = { fg = colors.text, bg = colors.mantle }, + StatusLineSeparator = { fg = colors.surface0, bg = colors.mantle }, + StatusLineInsert = { fg = colors.base, bg = colors.blue }, + StatusLineVisual = { fg = colors.base, bg = colors.mauve }, + StatusLineCommand = { fg = colors.base, bg = colors.yellow }, + StatusLineReplace = { fg = colors.base, bg = colors.maroon }, -- Syntax PreProc = { link = "Include" }, diff --git a/nvim/lua/config/plugins/cmp.lua b/nvim/lua/config/plugins/cmp.lua index 2c16695..7888e8a 100644 --- a/nvim/lua/config/plugins/cmp.lua +++ b/nvim/lua/config/plugins/cmp.lua @@ -1,81 +1,59 @@ -local icons = require('config.icons') +return function() + local cmp = require('cmp') + local lspkind = require('utils.lspkind') + local icons = require('config.icons') -return function () - local lspkind_config = { - mode = 'symbol', - preset = 'codicons', - symbol_map = icons.symbols, - maxwidth = 40, - ellipsis_char = "...", - } - local cmp = require('cmp') + local selectPrev = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }) + local selectNext = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }) - local selectPrev = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }) - local selectNext = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }) + local borderstyle = { + border = "none", + winhighlight = 'Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None', + } - local borderstyle = { - border = "none", - winhighlight = 'Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None', - } - - return { - completion = { - completeopt = "menu,menuone,noinsert", - }, - -- enabled = function() - -- if require"cmp.config.context".in_treesitter_capture("comment")==true or require"cmp.config.context".in_syntax_group("Comment") then - -- return false - -- else - -- return true - -- end - -- end, - -- preselect = false, - view = { - entries = { name = 'custom', selection_order = 'near_cursor' }, - }, - window = { - documentation = borderstyle, - completion = borderstyle - }, - mapping = { - [""] = selectPrev, - [""] = selectPrev, - [""] = selectNext, - [""] = selectNext, - [""] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - }, - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - formatting = { - fields = { "abbr", "kind", "menu" }, - format = function(entry, vim_item) - if vim.tbl_contains({ 'path' }, entry.source.name) then - local icon, hl_group = require('nvim-web-devicons').get_icon(entry:get_completion_item().label) - if icon then - vim_item.kind = icon - vim_item.kind_hl_group = hl_group - return vim_item - end - end - - return require('lspkind').cmp_format(lspkind_config)(entry, vim_item) - end - }, - sources = { - { name = "copilot" }, - { name = 'nvim_lsp' }, - { name = 'buffer' }, - { name = 'path' }, - { name = 'luasnip' } - }, - experimental = { - ghost_text = { - hl_group = "NonText", - }, - }, - } + return { + preselect = false, + view = { + entries = { name = 'custom', selection_order = 'near_cursor' }, + }, + window = { + documentation = borderstyle, + completion = borderstyle + }, + mapping = { + [""] = selectPrev, + [""] = selectPrev, + [""] = selectNext, + [""] = selectNext, + [""] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }, + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + formatting = { + fields = { "abbr", "kind", "menu" }, + format = lspkind.format({ + mode = 'symbol', + preset = 'codicons', + symbol_map = icons.symbols, + maxwidth = 40, + ellipsis_char = "...", + }), + }, + sources = { + { name = "copilot" }, + { name = 'nvim_lsp' }, + { name = 'buffer' }, + { name = 'path' }, + { name = 'luasnip' } + }, + experimental = { + ghost_text = { + hl_group = "NonText", + }, + }, + } end diff --git a/nvim/lua/config/plugins/comment.lua b/nvim/lua/config/plugins/comment.lua index e882df2..772b694 100644 --- a/nvim/lua/config/plugins/comment.lua +++ b/nvim/lua/config/plugins/comment.lua @@ -13,8 +13,8 @@ return { -- Toggle comment on visual selection comment_visual = '/', - -- Define 'comment' textobject (like `dgc` - delete whole comment block) + -- Define 'comment' textobject (like `dg/` - delete whole comment block) -- Works also in Visual mode if mapping differs from `comment_visual` - textobject = 'gc', + textobject = 'g/', } } diff --git a/nvim/lua/config/plugins/laravel.lua b/nvim/lua/config/plugins/laravel.lua index 7c1138d..2224177 100644 --- a/nvim/lua/config/plugins/laravel.lua +++ b/nvim/lua/config/plugins/laravel.lua @@ -1,7 +1,9 @@ return { keys = { - ["la"] = { ":Laravel artisan", "Run artisan" }, - ["lr"] = { ":Laravel routes", "Search routes" }, - ["lm"] = { ":Laravel related", "Related" }, + ["la"] = { "Laravel artisan", "Run artisan" }, + ["lm"] = { "Laravel make", "Make" }, + ["lr"] = { "Laravel routes", "Search routes" }, + ["lR"] = { "Laravel related", "Related" }, + ["lv"] = { "Laravel view-finder", "View finder" }, }, } diff --git a/nvim/lua/config/plugins/lsp.lua b/nvim/lua/config/plugins/lsp.lua index 3343c6b..c505916 100644 --- a/nvim/lua/config/plugins/lsp.lua +++ b/nvim/lua/config/plugins/lsp.lua @@ -1,65 +1,74 @@ return { - mappings = { - ["rs"] = { vim.lsp.buf.rename, { desc = "Rename symbol" }}, - ["ca"] = { vim.lsp.buf.code_action, { desc = "Code action" }}, - ["ff"] = { vim.lsp.buf.format, { desc = "Format file" }}, - gd = { vim.lsp.buf.definition, { desc = "Goto definition" }}, - gi = { vim.lsp.buf.implementation, { desc = "Goto implementation"}}, - gr = { vim.lsp.buf.references, { desc = "Goto references"}}, - }, - servers = { - -- PHP - phpactor = { - settings = { - init_options = { - ["language_server_phpstan.enabled"] = true, - ["language_server_psalm.enabled"] = false, - } - } - }, - -- GO - gopls = { - -- format_on_save = true, - on_save = function () - local params = vim.lsp.util.make_range_params() - params.context = {only = {"source.organizeImports"}} - local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 1000) - for cid, res in pairs(result or {}) do - for _, r in pairs(res.result or {}) do - if r.edit then - local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" - vim.lsp.util.apply_workspace_edit(r.edit, enc) - end - end - end - vim.lsp.buf.format({async = false}) - end, - settings = { - gopls = { - analyses = { - unusedvariable = true, - unusedwrite = true, - useany = true - }, - gofumpt = true, - }, - }, - }, - -- Lua - lua_ls = { - settings = { - Lua = { - runtime = { - version = 'LuaJIT' - }, - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME - } - } - }, - }, - }, - }, + mappings = { + ["rs"] = { vim.lsp.buf.rename, { desc = "Rename symbol" } }, + ["ca"] = { vim.lsp.buf.code_action, { desc = "Code action" } }, + ["ff"] = { vim.lsp.buf.format, { desc = "Format file" } }, + K = { vim.lsp.buf.hover, { desc = "Hover" } }, + gd = { vim.lsp.buf.definition, { desc = "Goto definition" } }, + gi = { vim.lsp.buf.implementation, { desc = "Goto implementation" } }, + gr = { vim.lsp.buf.references, { desc = "Goto references" } }, + }, + servers = { + -- PHP + -- phpactor = { + -- settings = { + -- init_options = { + -- ["language_server_phpstan.enabled"] = true, + -- ["language_server_psalm.enabled"] = false, + -- } + -- } + -- }, + -- + -- + -- JS,TS,VUE + volar = { + filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue', 'json' } + }, + -- TailwindCSS + tailwindcss = {}, + -- GO + gopls = { + -- format_on_save = true, + on_save = function() + local params = vim.lsp.util.make_range_params() + params.context = { only = { "source.organizeImports" } } + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 1000) + for cid, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" + vim.lsp.util.apply_workspace_edit(r.edit, enc) + end + end + end + vim.lsp.buf.format({ async = false }) + end, + settings = { + gopls = { + analyses = { + unusedvariable = true, + unusedwrite = true, + useany = true + }, + gofumpt = true, + }, + }, + }, + -- Lua + lua_ls = { + settings = { + Lua = { + runtime = { + version = 'LuaJIT' + }, + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME + } + } + }, + }, + }, + }, } diff --git a/nvim/lua/config/plugins/lualine.lua b/nvim/lua/config/plugins/lualine.lua new file mode 100644 index 0000000..fe71d83 --- /dev/null +++ b/nvim/lua/config/plugins/lualine.lua @@ -0,0 +1,93 @@ +local icons = require('config.icons') +local separator = { "'" .. icons.separator .. "'", color = 'StatusLineSeparator' } + +return { + options = { + globalstatus = true, + component_separators = '', + section_separators = '', + disabled_filetypes = { + statusline = { + 'dashboard', + } + }, + theme = { + normal = { + a = "StatusLineNormal", + b = "StatusLine", + c = "StatusLine", + x = "StatusLine", + y = "StatusLine", + z = "StatusLine", + }, + command = { + a = "StatusLineCommand", + z = "StatusLine", + }, + insert = { + a = "StatusLineInsert", + z = "StatusLine", + }, + visual = { + a = "StatusLineVisual", + z = "StatusLine", + }, + replace = { + a = "StatusLineReplace", + z = "StatusLine", + } + } + }, + sections = { + lualine_a = { + "mode", + }, + lualine_b = { + separator, + "branch", + separator, + '" " .. tostring(#vim.tbl_keys(vim.lsp.buf_get_clients()))', + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + { + "diagnostics", + symbols = { + error = icons.diagnostics.error .. ' ', + warn = icons.diagnostics.warn .. ' ', + info = icons.diagnostics.info .. ' ', + hint = icons.diagnostics.hint .. ' ', + }, + }, + { + "diff", + symbols = { + added = icons.diff.added .. ' ', + modified = icons.diff.modified .. ' ', + removed = icons.diff.removed .. ' ' + } + }, + separator, + }, + lualine_c = { + 'filename' + }, + lualine_x = { + 'filetype', + 'fileformat', + '(vim.bo.expandtab and "SPC" or "TAB") .. " " .. vim.bo.shiftwidth', + }, + lualine_y = { + separator, + 'location', + 'progress' + }, + lualine_z = {} + }, + extensions = { + 'lazy', + 'neo-tree' + } +} diff --git a/nvim/lua/config/plugins/telescope.lua b/nvim/lua/config/plugins/telescope.lua index 50337d2..61003a8 100644 --- a/nvim/lua/config/plugins/telescope.lua +++ b/nvim/lua/config/plugins/telescope.lua @@ -10,10 +10,15 @@ return { { 'sg', 'Telescope git_files', desc = 'Search Git files' }, { 'so', 'Telescope oldfiles', desc = 'Search Old files' }, { 'sw', 'Telescope grep_string', desc = 'Search for word under cursor' }, + { 'sd', 'Telescope diagnostics', desc = 'Search Diagnostics' }, + { 'sq', 'Telescope quickfix', desc = 'Search Quickfix' }, + { 'sh', 'Telescope help', desc = 'Search Neovim help' }, -- LSP { 'sr', 'Telescope lsp_references', desc = 'Search Reference' }, { 'ss', 'Telescope lsp_document_symbols', desc = 'Search document symbols' }, { 'sr', 'Telescope lsp_references', desc = 'Search Reference' }, + { 'si', 'Telescope lsp_implementations', desc = 'Search Inplementations' }, + { 'sp', 'Telescope lsp_workspace_symbols', desc = 'Search Workspace symbols' }, { 'gd', 'Telescope lsp_definitions', desc = 'Goto definition' }, }, opts = function() diff --git a/nvim/lua/config/plugins/trouble.lua b/nvim/lua/config/plugins/trouble.lua new file mode 100644 index 0000000..e82b896 --- /dev/null +++ b/nvim/lua/config/plugins/trouble.lua @@ -0,0 +1,10 @@ +return { + keys = { + { "xx", function() require("trouble").toggle() end }, + { "xw", function() require("trouble").toggle("workspace_diagnostics") end }, + { "xd", function() require("trouble").toggle("document_diagnostics") end }, + { "xq", function() require("trouble").toggle("quickfix") end }, + { "xl", function() require("trouble").toggle("loclist") end }, + { "gR", function() require("trouble").toggle("lsp_references") end }, + }, +} diff --git a/nvim/lua/config/plugins/which-key.lua b/nvim/lua/config/plugins/which-key.lua index b291d53..a92fd30 100644 --- a/nvim/lua/config/plugins/which-key.lua +++ b/nvim/lua/config/plugins/which-key.lua @@ -3,7 +3,8 @@ return { mode = { "n", "v" }, ["r"] = { name = "+rename" }, ["b"] = { name = "+buffers" }, - ["f"] = { name = "+files" }, + ["f"] = { name = "+format" }, + ["F"] = { name = "+files" }, ["d"] = { name = "+diagnostics" } } } diff --git a/nvim/lua/config/settings.lua b/nvim/lua/config/settings.lua index ef2374e..ce1008f 100644 --- a/nvim/lua/config/settings.lua +++ b/nvim/lua/config/settings.lua @@ -1,24 +1,34 @@ local set = vim.opt + +-- -- General Settings -- set.termguicolors = true set.updatetime = 50 set.showmode = false -- disable mode in the command line, because i use lualine -set.mousemoveevent = true + -- -- Editor settings -- + + set.pumheight = 20 -set.hlsearch = false -set.incsearch = true set.laststatus = 3 set.splitkeep = "screen" -set.scrolloff=20 ---vim.opt.sidescrolloff = 8 +set.scrolloff = 20 + +-- mouse and cursor set.cursorline = true +set.mousemoveevent = true + +-- search +set.hlsearch = false +set.incsearch = true +set.ignorecase = true +set.smartcase = true -- line numbers set.number = true @@ -26,28 +36,40 @@ set.relativenumber = true set.numberwidth = 5 -- sign column to the right. ---set.statuscolumn = '%=%{v:relnum?v:relnum:v:lnum} %s ' +--set.statuscolumn = '%=%{v:relnum?v:relnum:v:lnum} %s ' -- sign column to the left set.statuscolumn = '%s %=%{v:relnum?v:relnum:v:lnum} ' -- indent +set.expandtab = true set.tabstop = 4 set.softtabstop = 4 set.shiftwidth = 4 set.autoindent = true set.smartindent = true --- Filetypes -vim.filetype.add({ - pattern = { - ['.*%.blade%.php'] = 'blade', - }, -}) +-- Folding +--set.foldenable = true +--set.foldmethod = "expr" +--set.foldexpr = "nvim_treesitter#foldexpr()" + +--vim.api.nvim_create_autocmd('BufReadPost,FileReadPost', { +-- pattern = '*', +-- cmd = 'normal zR', +--}) +-- + +-- Completion +set.completeopt = "menuone,longest,preview" + + -- -- Diagnostics -- + + local icons = require('config.icons').diagnostics vim.fn.sign_define('DiagnosticSignError', { text = icons.error, texthl = 'DiagnosticSignError' }) vim.fn.sign_define('DiagnosticSignWarn', { text = icons.warn, texthl = 'DiagnosticSignWarn' }) @@ -55,20 +77,20 @@ vim.fn.sign_define('DiagnosticSignInfo', { text = icons.info, texthl = 'Diagnost vim.fn.sign_define('DiagnosticSignHint', { text = icons.hint, texthl = 'DiagnosticSignHint' }) vim.diagnostic.config({ - virtual_text = true, - severity_sort = true, - float = { - border = 'single', - source = 'always', - }, + virtual_text = false, + severity_sort = true, + underline = false, + float = { + -- border = 'single', + }, }) -- Highlight on yank vim.api.nvim_create_autocmd('TextYankPost', { - group = vim.api.nvim_create_augroup('highlight_yank', {}), - desc = 'Hightlight selection on yank', - pattern = '*', - callback = function() - vim.highlight.on_yank { higroup = 'IncSearch', timeout = 200 } - end, + group = vim.api.nvim_create_augroup('highlight_yank', {}), + desc = 'Hightlight selection on yank', + pattern = '*', + callback = function() + vim.highlight.on_yank { higroup = 'IncSearch', timeout = 200 } + end, }) diff --git a/nvim/lua/plugins/core/autotag.lua b/nvim/lua/plugins/core/autotag.lua index 426c352..991c841 100644 --- a/nvim/lua/plugins/core/autotag.lua +++ b/nvim/lua/plugins/core/autotag.lua @@ -1,24 +1,24 @@ return { - "windwp/nvim-ts-autotag", - dependencies = { - 'nvim-treesitter/nvim-treesitter' - }, - opts = { - filetypes = { - 'html', - 'javascript', - 'typescript', - 'javascriptreact', - 'typescriptreact', - 'svelte', - 'vue', - 'tsx', - 'jsx', - 'rescript', - 'xml', - 'php', - 'blade', - 'markdown', - } - } + "windwp/nvim-ts-autotag", + dependencies = { + 'nvim-treesitter/nvim-treesitter' + }, + opts = { + filetypes = { + 'html', + 'javascript', + 'typescript', + 'javascriptreact', + 'typescriptreact', + 'svelte', + 'vue', + 'tsx', + 'jsx', + 'rescript', + 'xml', + 'php', + 'blade', + 'markdown', + } + } } diff --git a/nvim/lua/plugins/core/indent-blankline.lua b/nvim/lua/plugins/core/indent-blankline.lua index c073e73..fcfffb2 100644 --- a/nvim/lua/plugins/core/indent-blankline.lua +++ b/nvim/lua/plugins/core/indent-blankline.lua @@ -1,29 +1,28 @@ return { - "lukas-reineke/indent-blankline.nvim", - main = "ibl", - opts = { - debounce = 10, - indent = { - char = '▏', - }, - scope = { - enabled = true, - show_start = false, - show_end = false - }, - exclude = { - filetypes = { - 'help', - 'dashboard' - } - } - }, - config = function (_, opts) + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + opts = { + debounce = 10, + indent = { + char = '▏', + }, + scope = { + enabled = true, + show_start = false, + show_end = false + }, + exclude = { + filetypes = { + 'help', + 'dashboard' + } + } + }, + config = function(_, opts) + require 'ibl'.setup(opts) - require 'ibl'.setup(opts) - - local hooks = require 'ibl.hooks' - hooks.register(hooks.type.WHITESPACE, hooks.builtin.hide_first_tab_indent_level) - hooks.register(hooks.type.WHITESPACE, hooks.builtin.hide_first_space_indent_level) - end + local hooks = require 'ibl.hooks' + hooks.register(hooks.type.WHITESPACE, hooks.builtin.hide_first_tab_indent_level) + hooks.register(hooks.type.WHITESPACE, hooks.builtin.hide_first_space_indent_level) + end } diff --git a/nvim/lua/plugins/core/treesitter.lua b/nvim/lua/plugins/core/treesitter.lua index 4cba713..f84acf6 100644 --- a/nvim/lua/plugins/core/treesitter.lua +++ b/nvim/lua/plugins/core/treesitter.lua @@ -1,27 +1,27 @@ return { - 'nvim-treesitter/nvim-treesitter', - build = function() - require('nvim-treesitter.install').update({ with_sync = true }) - end, - dependencies = { - 'nvim-treesitter/nvim-treesitter-textobjects', - 'nvim-treesitter/playground' - }, - opts = require('config.plugins.treesitter'), - config = function(_, opts) - local parser_config = require('nvim-treesitter.parsers').get_parser_configs() + 'nvim-treesitter/nvim-treesitter', + build = function() + require('nvim-treesitter.install').update({ with_sync = true }) + end, + dependencies = { + 'nvim-treesitter/nvim-treesitter-textobjects', + 'nvim-treesitter/playground' + }, + opts = require('config.plugins.treesitter'), + config = function(_, opts) + local parser_config = require('nvim-treesitter.parsers').get_parser_configs() - parser_config.blade = { - install_info = { - url = 'https://github.com/EmranMR/tree-sitter-blade', - branch = "main", - files = { 'src/parser.c' }, - generate_requires_npm = true, - requires_generate_from_grammar = true, - }, - filetype = 'blade', - } + parser_config.blade = { + install_info = { + url = 'https://github.com/EmranMR/tree-sitter-blade', + branch = "main", + files = { 'src/parser.c' }, + generate_requires_npm = true, + requires_generate_from_grammar = true, + }, + filetype = 'blade', + } - require("nvim-treesitter.configs").setup(opts) - end, + require("nvim-treesitter.configs").setup(opts) + end, } diff --git a/nvim/lua/plugins/ide/lsp.lua b/nvim/lua/plugins/ide/lsp.lua index a1f62d4..a83f740 100644 --- a/nvim/lua/plugins/ide/lsp.lua +++ b/nvim/lua/plugins/ide/lsp.lua @@ -1,82 +1,92 @@ return { - 'neovim/nvim-lspconfig', - dependencies = { - 'williamboman/mason.nvim', - 'williamboman/mason-lspconfig.nvim', - 'hrsh7th/cmp-nvim-lsp', - }, - opts = require('config.plugins.lsp'), - config = function (_, opts) - -- Setup Mason to automatically install LSP servers - require('mason').setup() - require('mason-lspconfig').setup({ automatic_installation = true }) - local augroup = vim.api.nvim_create_augroup("Lsp", {}) - local lspconfig = require('lspconfig') - local capabilities = require('cmp_nvim_lsp').default_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = false + 'neovim/nvim-lspconfig', + dependencies = { + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + 'hrsh7th/cmp-nvim-lsp', + { 'folke/neodev.nvim', opts = {} }, + }, + opts = require('config.plugins.lsp'), + config = function(_, opts) + -- Setup Mason to automatically install LSP servers + require('mason').setup() + require('mason-lspconfig').setup({ automatic_installation = true }) + local augroup = vim.api.nvim_create_augroup("Lsp", {}) + local lspconfig = require('lspconfig') + local capabilities = require('cmp_nvim_lsp').default_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = false - vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( - vim.lsp.handlers.hover, - {border = 'single'} - ) + vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( + vim.lsp.handlers.hover, + { border = 'single' } + ) - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - focusable = true, - style = "minimal", - border = "single", - }) + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { + focusable = true, + style = "minimal", + border = "single", + }) - for name, server_opt in pairs(opts.servers) do - local on_attach = function(client, bufnr) - for bind, settings in pairs(opts.mappings) do - vim.keymap.set('n', bind, settings[1], vim.tbl_deep_extend("force", settings[2], { buffer = bufnr })) - end + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = false, + } + ) - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + for name, server_opt in pairs(opts.servers) do + local on_attach = function(client, bufnr) + for bind, settings in pairs(opts.mappings) do + vim.keymap.set('n', bind, settings[1], vim.tbl_deep_extend("force", settings[2], { buffer = bufnr })) + end - -- Add format on save if configured and client supports it. - if server_opt.format_on_save and client.supports_method("textDocument/formatting") then - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format() - end, - }) - end + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - if server_opt.on_save then - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = server_opt.on_save, - }) - end + -- Add format on save if configured and client supports it. + if server_opt.format_on_save and client.supports_method("textDocument/formatting") then + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end, + }) + end - vim.api.nvim_create_autocmd("CursorHold", { - group = augroup, - buffer = bufnr, - callback = function() vim.lsp.buf.document_highlight() end - }) + if server_opt.on_save then + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = server_opt.on_save, + }) + end - vim.api.nvim_create_autocmd("CursorHoldI", { - group = augroup, - buffer = bufnr, - callback = function() vim.lsp.buf.document_highlight() end - }) - vim.api.nvim_create_autocmd("CursorMoved", { - group = augroup, - buffer = bufnr, - callback = function() vim.lsp.buf.clear_references() end - }) - end + if client.supports_method("textDocument/documentHighlight") then + vim.api.nvim_create_autocmd("CursorHold", { + group = augroup, + buffer = bufnr, + callback = function() vim.lsp.buf.document_highlight() end + }) - lspconfig[name].setup({ - settings = server_opt.settings or {}, - capabilities = capabilities, - on_attach = on_attach - }) - end - end + vim.api.nvim_create_autocmd("CursorHoldI", { + group = augroup, + buffer = bufnr, + callback = function() vim.lsp.buf.document_highlight() end + }) + + vim.api.nvim_create_autocmd("CursorMoved", { + group = augroup, + buffer = bufnr, + callback = function() vim.lsp.buf.clear_references() end + }) + end + end + + lspconfig[name].setup({ + settings = server_opt.settings or {}, + capabilities = capabilities, + on_attach = on_attach + }) + end + end } diff --git a/nvim/lua/plugins/ide/neodev.lua b/nvim/lua/plugins/ide/neodev.lua new file mode 100644 index 0000000..0db939e --- /dev/null +++ b/nvim/lua/plugins/ide/neodev.lua @@ -0,0 +1,4 @@ +return { + "folke/neodev.nvim", + opts = {} +} diff --git a/nvim/lua/plugins/ide/trouble.lua b/nvim/lua/plugins/ide/trouble.lua new file mode 100644 index 0000000..5348210 --- /dev/null +++ b/nvim/lua/plugins/ide/trouble.lua @@ -0,0 +1,8 @@ +local conf = require("config.plugins.trouble") or {} + +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + keys = conf.keys or {}, + opts = conf.opts or {}, +} diff --git a/nvim/lua/plugins/ide/undotree.lua b/nvim/lua/plugins/ide/undotree.lua new file mode 100644 index 0000000..392c881 --- /dev/null +++ b/nvim/lua/plugins/ide/undotree.lua @@ -0,0 +1,6 @@ +return { + "mbbill/undotree", + keys = { + {"u", ":UndotreeToggle", desc = "Toggle undotree"}, + }, +} diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua index 284aa23..a24d0cd 100644 --- a/nvim/lua/plugins/init.lua +++ b/nvim/lua/plugins/init.lua @@ -1,62 +1,63 @@ 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", -- latest stable release - lazypath, - }) + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) end vim.opt.rtp:prepend(lazypath) local opts = { - dev = { - path = "~/code/nvim_plugins", - } + dev = { + path = "~/code/nvim_plugins", + } } require("lazy").setup({ - -- Core - ----------------------------- - { import = "plugins.core.treesitter" }, - { import = "plugins.core.autopairs" }, - { import = "plugins.core.autotag" }, - { import = "plugins.core.indent-blankline" }, + -- Core + ----------------------------- + { import = "plugins.core.treesitter" }, + { import = "plugins.core.autopairs" }, + { import = "plugins.core.autotag" }, + { import = "plugins.core.indent-blankline" }, - -- Editor - ----------------------------- - { import = "plugins.editor.mini-comment" }, - { import = "plugins.editor.telescope" }, + -- Editor + ----------------------------- + { import = "plugins.editor.mini-comment" }, + { import = "plugins.editor.telescope" }, - -- UI - ----------------------------- - { import = "plugins.ui.dressing" }, - { import = "plugins.ui.edgy" }, - { import = "plugins.ui.noice" }, - { import = "plugins.ui.dashboard" }, - { import = "plugins.ui.catppuccin" }, - { import = "plugins.ui.neo-tree" }, - { import = "plugins.ui.bufferline" }, - { import = "plugins.ui.lualine" }, - { import = "plugins.ui.gitsigns" }, - { import = "plugins.ui.which-key" }, + -- UI + ----------------------------- + { import = "plugins.ui.catppuccin" }, + { import = "plugins.ui.dressing" }, + { import = "plugins.ui.edgy" }, + { import = "plugins.ui.dashboard" }, + { import = "plugins.ui.neo-tree" }, + { import = "plugins.ui.bufferline" }, + { import = "plugins.ui.lualine" }, + { import = "plugins.ui.gitsigns" }, + { import = "plugins.ui.which-key" }, - -- IDE - ----------------------------- - { import = "plugins.ide.conform" }, - { import = "plugins.ide.cmp" }, - { import = "plugins.ide.lsp" }, - { import = "plugins.ide.dap" }, - { import = "plugins.ide.neotest" }, - { import = "plugins.ide.copilot" }, + -- IDE + ----------------------------- + { import = "plugins.ide.trouble" }, + { import = "plugins.ide.undotree" }, + { import = "plugins.ide.conform" }, + { import = "plugins.ide.cmp" }, + { import = "plugins.ide.lsp" }, + { import = "plugins.ide.dap" }, + { import = "plugins.ide.neotest" }, + { import = "plugins.ide.neodev" }, + { import = "plugins.ide.copilot" }, - -- Language specific - ----------------------------- - { import = "plugins.lang.laravel" }, - { import = "plugins.lang.go" }, + -- Language specific + ----------------------------- + { import = "plugins.lang.laravel" }, + { import = "plugins.lang.go" }, }, opts) - diff --git a/nvim/lua/plugins/lang/go.lua b/nvim/lua/plugins/lang/go.lua index d5bbd15..64c940b 100644 --- a/nvim/lua/plugins/lang/go.lua +++ b/nvim/lua/plugins/lang/go.lua @@ -1,15 +1,15 @@ return { - "ray-x/go.nvim", - main = "go", - dependencies = { - "ray-x/guihua.lua", - "neovim/nvim-lspconfig", - "nvim-treesitter/nvim-treesitter", - }, - config = function(opts) - require('go').setup(opts) - end, - event = {"CmdlineEnter"}, - ft = {"go", 'gomod'}, - build = ':lua require("go.install").update_all_sync()' + "ray-x/go.nvim", + main = "go", + dependencies = { + "ray-x/guihua.lua", + "neovim/nvim-lspconfig", + "nvim-treesitter/nvim-treesitter", + }, + config = function(opts) + require('go').setup(opts) + end, + event = { "CmdlineEnter" }, + ft = { "go", 'gomod' }, + build = ':lua require("go.install").update_all_sync()' } diff --git a/nvim/lua/plugins/lang/laravel.lua b/nvim/lua/plugins/lang/laravel.lua index f669d1e..073cf1c 100644 --- a/nvim/lua/plugins/lang/laravel.lua +++ b/nvim/lua/plugins/lang/laravel.lua @@ -1,26 +1,26 @@ return { - "adalessa/laravel.nvim", - dependencies = { - "nvim-telescope/telescope.nvim", - "tpope/vim-dotenv", - "MunifTanjim/nui.nvim", - "nvimtools/none-ls.nvim", - }, - ft = "php", - cmd = { "Sail", "Artisan", "Composer", "Npm", "Yarn", "Laravel" }, - config = function (_, _) - local opts = require('config.plugins.laravel') + "adalessa/laravel.nvim", + dependencies = { + "nvim-telescope/telescope.nvim", + "tpope/vim-dotenv", + "MunifTanjim/nui.nvim", + "nvimtools/none-ls.nvim", + }, + ft = "php", + cmd = { "Sail", "Artisan", "Composer", "Npm", "Yarn", "Laravel" }, + config = function(_, _) + local opts = require('config.plugins.laravel') - local haswk, wk = pcall(require, "which-key") + local haswk, wk = pcall(require, "which-key") - if haswk then - wk.register({l = {name = "laravel" }}, { prefix = "" }) - end + if haswk then + wk.register({ l = { name = "laravel" } }, { prefix = "" }) + end - for key, value in pairs(opts.keys) do - vim.keymap.set("n", key, value[1], { desc = value[2] or ''}) - end + for key, value in pairs(opts.keys) do + vim.keymap.set("n", key, value[1], { desc = value[2] or '' }) + end - require('laravel').setup(opts) - end + require('laravel').setup(opts) + end } diff --git a/nvim/lua/plugins/ui/barbar.lua b/nvim/lua/plugins/ui/barbar.lua index fe8cc75..a631200 100644 --- a/nvim/lua/plugins/ui/barbar.lua +++ b/nvim/lua/plugins/ui/barbar.lua @@ -1,34 +1,34 @@ local icons = require('config.icons') return { - 'romgrk/barbar.nvim', - dependencies = { - 'lewis6991/gitsigns.nvim', - 'nvim-tree/nvim-web-devicons', - }, - init = function() vim.g.barbar_auto_setup = false end, - opts = { - animation = false, - auto_hide = 0, - focus_on_close = 'previous', - button = icons.close, - highlight_inactive_file_icons = true, - icons = { - separator = {left = '', right = ''}, - separator_at_end = false, - inactive = { button = '', separator = { left = '', right = ''} }, - modified = {button = icons.gitsigns.modified }, - pinned = {button = icons.pinned, filename = true}, - gitsigns = { - added = { enabled = false }, - changed = { enabled = false }, - deleted = { enabled = false }, - } - }, - maximum_padding = 2, - minimum_padding = 1, - sidebar_filetypes = { - --['neo-tree'] = {event = 'BufWipeout'}, - } - }, + 'romgrk/barbar.nvim', + dependencies = { + 'lewis6991/gitsigns.nvim', + 'nvim-tree/nvim-web-devicons', + }, + init = function() vim.g.barbar_auto_setup = false end, + opts = { + animation = false, + auto_hide = 0, + focus_on_close = 'previous', + button = icons.close, + highlight_inactive_file_icons = true, + icons = { + separator = { left = '', right = '' }, + separator_at_end = false, + inactive = { button = '', separator = { left = '', right = '' } }, + modified = { button = icons.gitsigns.modified }, + pinned = { button = icons.pinned, filename = true }, + gitsigns = { + added = { enabled = false }, + changed = { enabled = false }, + deleted = { enabled = false }, + } + }, + maximum_padding = 2, + minimum_padding = 1, + sidebar_filetypes = { + --['neo-tree'] = {event = 'BufWipeout'}, + } + }, } diff --git a/nvim/lua/plugins/ui/bufferline.lua b/nvim/lua/plugins/ui/bufferline.lua index b34788f..8b310bf 100644 --- a/nvim/lua/plugins/ui/bufferline.lua +++ b/nvim/lua/plugins/ui/bufferline.lua @@ -1,6 +1,6 @@ return { - 'akinsho/bufferline.nvim', - version = "*", - dependencies = 'nvim-tree/nvim-web-devicons', - opts = require('config.plugins.bufferline') + 'akinsho/bufferline.nvim', + version = "*", + dependencies = 'nvim-tree/nvim-web-devicons', + opts = require('config.plugins.bufferline') } diff --git a/nvim/lua/plugins/ui/catppuccin.lua b/nvim/lua/plugins/ui/catppuccin.lua index c8fcf91..260045b 100644 --- a/nvim/lua/plugins/ui/catppuccin.lua +++ b/nvim/lua/plugins/ui/catppuccin.lua @@ -1,10 +1,10 @@ return { - "catppuccin/nvim", - name = "catppuccin", - priority = 1000, - opts = require('config.plugins.catppuccin'), - config = function (_, opts) - require("catppuccin").setup(opts) - vim.cmd.colorscheme("catppuccin") - end + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + opts = require('config.plugins.catppuccin'), + config = function(_, opts) + require("catppuccin").setup(opts) + vim.cmd.colorscheme("catppuccin") + end } diff --git a/nvim/lua/plugins/ui/colorscheme.lua b/nvim/lua/plugins/ui/colorscheme.lua index 4c75df4..b8c97d9 100644 --- a/nvim/lua/plugins/ui/colorscheme.lua +++ b/nvim/lua/plugins/ui/colorscheme.lua @@ -2,91 +2,91 @@ return { "navarasu/onedark.nvim", lazy = false, priority = 1000, - opts = { - style = 'darker', - code_style = { - comments = 'none', - keywords = 'none', - functions = 'none', - strings = 'none', - variables = 'none' - }, - colors = { - fg = '#b3b1b1', - bg0 = '#171b26', - bg1 = '#30323b', - bg2 = '#24262f', - bg3 = '#383a43', - bg_d = "#1f2129", - bg_blue = "#ff00ff", - bg_yellow = "#f0d197", - red = '#cc4a33', - green = '#51cc7f', - yellow = '#ccaf33', - orange = '#ccab1f', - blue = '#3390cc', - cyan = '#33ccb7', - purple = '#9233cc', - dark_cyan = "#8abeb7", - dark_red = "#cc817f", - dark_yellow = "#ffcc99", - dark_purple = "#9999cc", - }, - highlights = { - LineNr = { fg = "$light_grey" }, - CursorLineNr = { fg = "$blue" }, - - Pmenu = { bg = "$bg2"}, - PmenuSel = { bg = "$bg_d", fg = "$fg" }, - FloatBorder = { fg = "$grey", bg = 'None' }, - -- Syntax - ["@comment"] = { fg = "$red" }, - ["@string"] = { fg = "$purple" }, - ["@function"] = { fg = "$fg" }, - ["@keyword"] = { fg = "$yellow" }, - ["@keyword.import"] = { fg = "$yellow" }, - ["@keyword.function"] = { fg = "$yellow" }, - ["@keyword.conditional"] = { fg = "$yellow" }, - ["@keyword.operator"] = { fg = "$yellow" }, - ["@keyword.repeat"] = { fg = "$yellow" }, - ["@constant"] = { fg = "$green" }, - ["@tag"] = { fg = "$yellow" }, - ["@tag.delimiter"] = { fg = "$yellow" }, - ["@tag.attribute"] = { fg = "$yellow" }, - ["@type"] = { fg = "$blue" }, - ["@type.qualifier"] = { fg = "$yellow" }, - ["@type.definition"] = { fg = "$blue" }, - ["@type.builtin"] = { fg = "$blue" }, - ["@function.method"] = { fg = "$fg" }, - ["@function.call"] = { fg = "$fg" }, - ["@function.builtin"] = { fg = "$fg" }, - - ["@number"] = { fg = "$red" }, - ["@variable"] = { fg = "$green" }, - ["@variable.member"] = { fg = "$green" }, - ["@variable.builtin"] = { fg = "$green" }, - ["@variable.parameter"] = { fg = "$fg" }, - ["@property"] = { fg = "$orange" }, - -- ["@property"] = { fg = "$fg" }, - ["@punctuation.delimiter"] = { fg = "$fg" }, - ["@punctuation.bracket"] = { fg = "$fg" }, - ["@module"] = { fg = "$fg" }, - - -- php overrides - ["@class_name.php"] = { fg = "$fg" }, - ["@extend_name.php"] = { fg = "$fg" }, - ["@implements_name.php"] = { fg = "$fg" }, - ["@namespace_name.php"] = { fg = "$fg" }, - ["@namespace_alias.php"] = { fg = "$fg" }, - } - }, + opts = { + style = 'deep', + code_style = { + comments = 'none', + keywords = 'none', + functions = 'none', + strings = 'none', + variables = 'none' + }, + -- colors = { + -- fg = '#b3b1b1', + -- bg0 = '#171b26', + -- bg1 = '#30323b', + -- bg2 = '#24262f', + -- bg3 = '#383a43', + -- bg_d = "#1f2129", + -- bg_blue = "#ff00ff", + -- bg_yellow = "#f0d197", + -- red = '#cc4a33', + -- green = '#51cc7f', + -- yellow = '#ccaf33', + -- orange = '#ccab1f', + -- -- blue = '#3390cc', + -- cyan = '#33ccb7', + -- purple = '#9233cc', + -- dark_cyan = "#8abeb7", + -- dark_red = "#cc817f", + -- dark_yellow = "#ffcc99", + -- dark_purple = "#9999cc", + -- }, + -- highlights = { + -- LineNr = { fg = "$light_grey" }, + -- CursorLineNr = { fg = "$blue" }, + -- + -- Pmenu = { bg = "$bg2" }, + -- PmenuSel = { bg = "$bg_d", fg = "$fg" }, + -- FloatBorder = { fg = "$grey", bg = 'None' }, + -- -- Syntax + -- ["@comment"] = { fg = "$red" }, + -- ["@string"] = { fg = "$purple" }, + -- ["@function"] = { fg = "$fg" }, + -- ["@keyword"] = { fg = "$yellow" }, + -- ["@keyword.import"] = { fg = "$yellow" }, + -- ["@keyword.function"] = { fg = "$yellow" }, + -- ["@keyword.conditional"] = { fg = "$yellow" }, + -- ["@keyword.operator"] = { fg = "$yellow" }, + -- ["@keyword.repeat"] = { fg = "$yellow" }, + -- ["@constant"] = { fg = "$green" }, + -- ["@tag"] = { fg = "$yellow" }, + -- ["@tag.delimiter"] = { fg = "$yellow" }, + -- ["@tag.attribute"] = { fg = "$yellow" }, + -- ["@type"] = { fg = "$blue" }, + -- ["@type.qualifier"] = { fg = "$yellow" }, + -- ["@type.definition"] = { fg = "$blue" }, + -- ["@type.builtin"] = { fg = "$blue" }, + -- ["@function.method"] = { fg = "$fg" }, + -- ["@function.call"] = { fg = "$fg" }, + -- ["@function.builtin"] = { fg = "$fg" }, + -- + -- ["@number"] = { fg = "$red" }, + -- ["@variable"] = { fg = "$green" }, + -- ["@variable.member"] = { fg = "$green" }, + -- ["@variable.builtin"] = { fg = "$green" }, + -- ["@variable.parameter"] = { fg = "$fg" }, + -- ["@property"] = { fg = "$orange" }, + -- -- ["@property"] = { fg = "$fg" }, + -- ["@punctuation.delimiter"] = { fg = "$fg" }, + -- ["@punctuation.bracket"] = { fg = "$fg" }, + -- ["@module"] = { fg = "$fg" }, + -- + -- -- php overrides + -- ["@class_name.php"] = { fg = "$fg" }, + -- ["@extend_name.php"] = { fg = "$fg" }, + -- ["@implements_name.php"] = { fg = "$fg" }, + -- ["@namespace_name.php"] = { fg = "$fg" }, + -- ["@namespace_alias.php"] = { fg = "$fg" }, + -- } + }, config = function(_, opts) - local c = require('onedark') - c.setup(opts) - c.load() + local c = require('onedark') + c.setup(opts) + c.load() - vim.cmd(string.format("highlight GitSignsAdd guifg='%s'", opts.colors.green)) - vim.cmd(string.format("highlight GitSignsChange guifg='%s'", opts.colors.yellow)) - vim.cmd(string.format("highlight GitSignsDelete guifg='%s'", opts.colors.red)) - end + -- vim.cmd(string.format("highlight GitSignsAdd guifg='%s'", opts.colors.green)) + -- vim.cmd(string.format("highlight GitSignsChange guifg='%s'", opts.colors.yellow)) + -- vim.cmd(string.format("highlight GitSignsDelete guifg='%s'", opts.colors.red)) + end } diff --git a/nvim/lua/plugins/ui/dashboard.lua b/nvim/lua/plugins/ui/dashboard.lua index 4873752..4fd9ae2 100644 --- a/nvim/lua/plugins/ui/dashboard.lua +++ b/nvim/lua/plugins/ui/dashboard.lua @@ -1,10 +1,9 @@ - local logo = [[ ::::::::: :::: ::: ::: ::: :+: :+: :+:+: :+: :+: :+: - +:+ +:+ :+:+:+ +:+ +:+ +:+ - +#++:++#+ +#+ +:+ +#+ +#++:+ - +#+ +#+ +#+#+# +#+ +#+ + +:+ +:+ :+:+:+ +:+ +:+ +:+ + +#++:++#+ +#+ +:+ +#+ +#++:+ + +#+ +#+ +#+#+# +#+ +#+ #+# #+# #+#+# #+# #+# ### ### #### ### ### ]] @@ -12,31 +11,30 @@ local logo = [[ logo = string.rep("\n", 8) .. logo .. "\n\n" return { - 'nvimdev/dashboard-nvim', - name = 'dashboard', - dependencies = { - 'nvim-tree/nvim-web-devicons' - }, - event = 'VimEnter', - opts = { - theme = 'doom', - config = { - header = vim.split(logo, "\n"), + 'nvimdev/dashboard-nvim', + name = 'dashboard', + dependencies = { + 'nvim-tree/nvim-web-devicons' + }, + event = 'VimEnter', + opts = { + theme = 'doom', + config = { + header = vim.split(logo, "\n"), - center = { - { action = function() require('telescope.builtin').find_files() end, desc = " Find file", icon = " ", key = "f" }, - { action = "ene | startinsert", desc = " New file", icon = " ", key = "n" }, - { action = function() require('telescope.builtin').oldfiles() end, desc = " Recent files", icon = " ", key = "r" }, - { action = function() require('telescope.builtin').live_grep() end, desc = " Find text", icon = " ", key = "g" }, - { action = "Lazy", desc = " Lazy", icon = "󰒲 ", key = "l" }, - { action = "qa", desc = " Quit", icon = " ", key = "q" } - }, - footer = function() - local stats = require("lazy").stats() - local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100) - return { "Loaded " .. stats.loaded .. "/" .. stats.count .. " plugins in " .. ms .. "ms" } - end, - } - } + center = { + { action = function() require('telescope.builtin').find_files() end, desc = " Find file", icon = " ", key = "f" }, + { action = "ene | startinsert", desc = " New file", icon = " ", key = "n" }, + { action = function() require('telescope.builtin').oldfiles() end, desc = " Recent files", icon = " ", key = "r" }, + { action = function() require('telescope.builtin').live_grep() end, desc = " Find text", icon = " ", key = "g" }, + { action = "Lazy", desc = " Lazy", icon = "󰒲 ", key = "l" }, + { action = "qa", desc = " Quit", icon = " ", key = "q" } + }, + footer = function() + local stats = require("lazy").stats() + local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100) + return { "Loaded " .. stats.loaded .. "/" .. stats.count .. " plugins in " .. ms .. "ms" } + end, + } + } } - diff --git a/nvim/lua/plugins/ui/dressing.lua b/nvim/lua/plugins/ui/dressing.lua index db9951a..9ee4589 100644 --- a/nvim/lua/plugins/ui/dressing.lua +++ b/nvim/lua/plugins/ui/dressing.lua @@ -1,23 +1,23 @@ return { - 'stevearc/dressing.nvim', - opts = { - input = { - title_pos = "center", - border = "single", - relative = "win", - }, - select = { - backend = { "telescope", "builtin" }, - telescope = require('telescope.themes').get_dropdown({ - borderchars = { - prompt = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, - results = { "─", "│", "─", "│", "├", "┤", "┘", "└" }, - }, - max_height = 5 - }), - builtin = { - border = "single", - } - } - }, + 'stevearc/dressing.nvim', + opts = { + input = { + title_pos = "center", + border = "single", + relative = "win", + }, + select = { + backend = { "telescope", "builtin" }, + telescope = require('telescope.themes').get_dropdown({ + borderchars = { + prompt = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + results = { "─", "│", "─", "│", "├", "┤", "┘", "└" }, + }, + max_height = 5 + }), + builtin = { + border = "single", + } + } + }, } diff --git a/nvim/lua/plugins/ui/edgy.lua b/nvim/lua/plugins/ui/edgy.lua index c51e1e7..9f3701e 100644 --- a/nvim/lua/plugins/ui/edgy.lua +++ b/nvim/lua/plugins/ui/edgy.lua @@ -1,33 +1,33 @@ return { - "folke/edgy.nvim", - event = "VeryLazy", - keys = { - { "ue", function() require("edgy").toggle() end, desc = "Edgy Toggle" }, - -- stylua: ignore - { "uE", function() require("edgy").select() end, desc = "Edgy Select Window" }, - }, - opts = { - left = { - { - title = "Neo-Tree", - ft = "neo-tree", - filter = function(buf) - return vim.b[buf].neo_tree_source == "filesystem" - end, - size = { height = 0.5 }, - }, - { - title = "Test", - ft = "neotest-summary" - }, - "neo-tree", - }, - options = { - left = { size = 40 } - }, - animate = { - enabled = false, - }, - exit_when_last = false - } + "folke/edgy.nvim", + event = "VeryLazy", + keys = { + { "ue", function() require("edgy").toggle() end, desc = "Edgy Toggle" }, + -- stylua: ignore + { "uE", function() require("edgy").select() end, desc = "Edgy Select Window" }, + }, + opts = { + left = { + { + title = "Neo-Tree", + ft = "neo-tree", + filter = function(buf) + return vim.b[buf].neo_tree_source == "filesystem" + end, + size = { height = 0.5 }, + }, + { + title = "Test", + ft = "neotest-summary" + }, + "neo-tree", + }, + options = { + left = { size = 40 } + }, + animate = { + enabled = false, + }, + exit_when_last = false + } } diff --git a/nvim/lua/plugins/ui/gitsigns.lua b/nvim/lua/plugins/ui/gitsigns.lua index 51699cf..77d31e3 100644 --- a/nvim/lua/plugins/ui/gitsigns.lua +++ b/nvim/lua/plugins/ui/gitsigns.lua @@ -1,31 +1,31 @@ local icons = require('config.icons').diff_gutter return { - 'lewis6991/gitsigns.nvim', - dependencies = { - { - "folke/which-key.nvim", - optional = true, - opts = { - defaults = { - ["g"] = { name = "+git" }, - }, - }, - }, - }, - lazy = false, - keys = { - { 'gp', 'Gitsigns preview_hunk', desc = 'Git preview diff' }, - { 'gb', 'Gitsigns blame_line', desc = 'Git blame' } - }, - opts = { - signs = { - add = { text = icons.add }, - delete = { text = icons.delete }, - change = { text = icons.change }, - untracked = { text = icons.untracked }, - topdelete = { text = icons.delete }, - changedelete = { text = icons.change }, - }, - }, + 'lewis6991/gitsigns.nvim', + dependencies = { + { + "folke/which-key.nvim", + optional = true, + opts = { + defaults = { + ["g"] = { name = "+git" }, + }, + }, + }, + }, + lazy = false, + keys = { + { 'gp', 'Gitsigns preview_hunk', desc = 'Git preview diff' }, + { 'gb', 'Gitsigns blame_line', desc = 'Git blame' } + }, + opts = { + signs = { + add = { text = icons.add }, + delete = { text = icons.delete }, + change = { text = icons.change }, + untracked = { text = icons.untracked }, + topdelete = { text = icons.delete }, + changedelete = { text = icons.change }, + }, + }, } diff --git a/nvim/lua/plugins/ui/lualine.lua b/nvim/lua/plugins/ui/lualine.lua index ee07779..5ed9c26 100644 --- a/nvim/lua/plugins/ui/lualine.lua +++ b/nvim/lua/plugins/ui/lualine.lua @@ -1,66 +1,9 @@ -local icons = require('config.icons') - return { - 'nvim-lualine/lualine.nvim', - event = "VeryLazy", - dependencies = { - 'arkav/lualine-lsp-progress', - 'nvim-tree/nvim-web-devicons', - }, - opts = { - options = { - theme = "catppuccin-mocha", - component_separators = '', - globalstatus = true, - section_separators = { left = '', right = '' }, - disabled_filetypes = { - statusline = { - 'dashboard', - 'TelescopePrompt' - } - } - }, - sections = { - lualine_a = { "mode" }, - lualine_b = { "branch" }, - lualine_c = { - { - "diagnostics", - symbols = { - error = icons.diagnostics.error .. ' ', - warn = icons.diagnostics.warn .. ' ', - info = icons.diagnostics.info .. ' ', - hint = icons.diagnostics.hint .. ' ', - }, - } - }, - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - -- { - -- "diff", - -- symbols = { - -- added = icons.diff.added .. ' ', - -- modified = icons.diff.modified .. ' ', - -- removed = icons.diff.removed .. ' ' - -- } - -- }, - 'filename' - }, - lualine_y = { - 'encoding', - 'fileformat', - 'filetype', - 'location' - }, - lualine_z = {} - }, - extensions = { - 'lazy', - 'neo-tree' - } - } + 'nvim-lualine/lualine.nvim', + event = "VeryLazy", + dependencies = { + 'arkav/lualine-lsp-progress', + 'nvim-tree/nvim-web-devicons', + }, + opts = require("config.plugins.lualine") } diff --git a/nvim/lua/plugins/ui/neo-tree.lua b/nvim/lua/plugins/ui/neo-tree.lua index bbfa169..e014a32 100644 --- a/nvim/lua/plugins/ui/neo-tree.lua +++ b/nvim/lua/plugins/ui/neo-tree.lua @@ -2,7 +2,7 @@ return { 'nvim-neo-tree/neo-tree.nvim', cmd = 'Neotree', keys = { - { 'fe', ':Neotree reveal toggle', desc = 'Toggle File Explorer'}, + { 'Fe', ':Neotree reveal toggle', desc = 'Toggle File Explorer'}, }, dependencies = { "MunifTanjim/nui.nvim", diff --git a/nvim/lua/plugins/ui/noice.lua b/nvim/lua/plugins/ui/noice.lua deleted file mode 100644 index 7ce4a39..0000000 --- a/nvim/lua/plugins/ui/noice.lua +++ /dev/null @@ -1,33 +0,0 @@ -return { - "folke/noice.nvim", - event = "VeryLazy", - dependencies = { - "MunifTanjim/nui.nvim", - }, - opts = { - cmdline = { - enabled = true, - view = "cmdline" - }, - presets = { - bottom_search = true, - command_palette = false - }, - commands = { - history = { - view = "cmdline_output", - } - }, - views = { - mini = { - position = { - row = -2, - }, - border = { - style = 'solid', - padding = { 0, 1 }, - } - } - } - }, -} diff --git a/nvim/lua/plugins/ui/which-key.lua b/nvim/lua/plugins/ui/which-key.lua index a20e348..3c3cf7b 100644 --- a/nvim/lua/plugins/ui/which-key.lua +++ b/nvim/lua/plugins/ui/which-key.lua @@ -1,15 +1,14 @@ return { - "folke/which-key.nvim", - event = "VeryLazy", - init = function() - vim.o.timeout = true - vim.o.timeoutlen = 300 - end, - opts = require('config.plugins.which-key'), - config = function(_, opts) - local wk = require("which-key") - wk.setup(opts) - wk.register(opts.defaults or {}) - end + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end, + opts = require('config.plugins.which-key'), + config = function(_, opts) + local wk = require("which-key") + wk.setup(opts) + wk.register(opts.defaults or {}) + end } - diff --git a/nvim/lua/utils/lspkind.lua b/nvim/lua/utils/lspkind.lua new file mode 100644 index 0000000..aee80bb --- /dev/null +++ b/nvim/lua/utils/lspkind.lua @@ -0,0 +1,21 @@ + +local M = {} + +-- Create format function. +function M.format(config) + return function(entry, vim_item) + -- Devicons for files + if vim.tbl_contains({ 'path' }, entry.source.name) then + local icon, hl_group = require('nvim-web-devicons').get_icon(entry:get_completion_item().label) + if icon then + vim_item.kind = icon + vim_item.kind_hl_group = hl_group + return vim_item + end + end + + return require('lspkind').cmp_format(config)(entry, vim_item) + end +end + +return M