diff --git a/lazy-lock.json b/lazy-lock.json index 822f6e8..43f01be 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -4,6 +4,7 @@ "Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" }, "better-escape.nvim": { "branch": "master", "commit": "19a38aab94961016430905ebec30d272a01e9742" }, "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "conform.nvim": { "branch": "master", "commit": "c64cc754ace603e185ab30113aaef174187eacf8" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "gitsigns.nvim": { "branch": "main", "commit": "0c6826374f47fcbb2b53053986ccc59c115044ff" }, @@ -12,7 +13,6 @@ "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazygit.nvim": { "branch": "main", "commit": "2305deed25bc61b866d5d39189e9105a45cf1cfb" }, "lspsaga.nvim": { "branch": "main", "commit": "8efe00d6aed9db6449969f889170f1a7e43101a1" }, - "lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "markview.nvim": { "branch": "main", "commit": "5d07ff2d3ac7a5f90e675692178c23ebbb104d12" }, "mason-conform.nvim": { "branch": "main", "commit": "48da2ebd5efbaf8a99566eadc3ece82d523f03c5" }, @@ -23,6 +23,7 @@ "mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" }, "mini.bracketed": { "branch": "main", "commit": "87cf031b49e3753227f73f433851a6a75cf31445" }, "mini.files": { "branch": "main", "commit": "49c855977e9f4821d1ed8179ed44fe098b93ea2a" }, + "mini.icons": { "branch": "main", "commit": "e8fae66cb400744daeedf6e387347df50271c252" }, "mini.indentscope": { "branch": "main", "commit": "fc1bb1e4573f7174cb6e2bbabc3453340a9eec16" }, "mini.surround": { "branch": "main", "commit": "5aab42fcdcf31fa010f012771eda5631c077840a" }, "neogen": { "branch": "main", "commit": "d7f9461727751fb07f82011051338a9aba07581d" }, @@ -31,13 +32,13 @@ "nvim-genghis": { "branch": "main", "commit": "cdf584d05ffc9d5c1f247079991552249e4f7487" }, "nvim-lint": { "branch": "master", "commit": "335a6044be16d7701001059cba9baa36fbeef422" }, "nvim-lspconfig": { "branch": "master", "commit": "db8fef885009fdec0daeff3e5dda92e1f539611e" }, - "nvim-tree.lua": { "branch": "master", "commit": "87d096a39cb2d5d43e6771563575ff042a79f48b" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "nvim-ufo": { "branch": "main", "commit": "d31e2a9fd572a25a4d5011776677223a8ccb7e35" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" }, + "slimline.nvim": { "branch": "main", "commit": "37d197329b0a65af820e794a007553aa7ef387b5" }, "snacks.nvim": { "branch": "main", "commit": "bfe8c26dbd83f7c4fbc222787552e29b4eccfcc0" }, "tiny-code-action.nvim": { "branch": "main", "commit": "0ba6e10ddb11812ea35aa91c9e6739c16659bd9e" }, "tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "29315861711f11daf75e1cf0953ab92ec1a3e69f" }, diff --git a/lua/core/lsp.lua b/lua/core/lsp.lua index 229304b..78d53d1 100644 --- a/lua/core/lsp.lua +++ b/lua/core/lsp.lua @@ -75,23 +75,23 @@ vim.lsp.config('basedpyright', { }) vim.lsp.enable('basedpyright') -vim.lsp.config('pylsp', { - settings = { - pylsp = { - plugins = { - -- use black as default formatter - yapf = { enabled = false }, - autopep8 = { enabled = false }, - black = { enabled = true }, - pycodestyle = { - enabled = true, - ignore = { 'E203', 'E701', 'W503' }, - maxLineLength = 88, - }, - }, - }, - }, -}) +-- vim.lsp.config('pylsp', { +-- settings = { +-- pylsp = { +-- plugins = { +-- -- use black as default formatter +-- yapf = { enabled = false }, +-- autopep8 = { enabled = false }, +-- black = { enabled = true }, +-- pycodestyle = { +-- enabled = true, +-- ignore = { 'E203', 'E701', 'W503' }, +-- maxLineLength = 88, +-- }, +-- }, +-- }, +-- }, +-- }) -- latex vim.lsp.config('texlab', { diff --git a/lua/plugins/completion.lua b/lua/plugins/completion.lua index d1c69fc..88a17a2 100644 --- a/lua/plugins/completion.lua +++ b/lua/plugins/completion.lua @@ -21,35 +21,6 @@ return { version = '*', config = function() require('blink.cmp').setup({ - appearance = { - kind_icons = { - Text = '', - Method = '', - Function = 'ƒ', - Constructor = '', - Field = '', - Variable = '', - Property = '󰓹', - Class = '', - Interface = '', - Struct = '', - Module = '󰩦', - Unit = '', - Value = '', - Enum = '', - EnumMember = '', - Keyword = '', - Constant = 'П', - Snippet = '', - Color = '', - File = '', - Reference = '', - Folder = '', - Event = '', - Operator = '', - TypeParameter = '', - }, - }, completion = { list = { selection = { @@ -64,6 +35,26 @@ return { }, menu = { border = 'rounded', + draw = { + components = { + kind_icon = { + text = function(ctx) + local kind_icon, _, _ = require('mini.icons').get('lsp', ctx.kind) + return kind_icon + end, + highlight = function(ctx) + local _, hl, _ = require('mini.icons').get('lsp', ctx.kind) + return hl + end, + }, + kind = { + highlight = function(ctx) + local _, hl, _ = require('mini.icons').get('lsp', ctx.kind) + return hl + end, + }, + }, + }, }, }, signature = { diff --git a/lua/plugins/files.lua b/lua/plugins/files.lua index 7cdea82..32375bd 100644 --- a/lua/plugins/files.lua +++ b/lua/plugins/files.lua @@ -39,45 +39,4 @@ return { }) end, }, - { - 'nvim-tree/nvim-tree.lua', - config = function() - require('nvim-tree').setup({ - filters = { dotfiles = false }, - disable_netrw = true, - hijack_cursor = true, - sync_root_with_cwd = true, - update_focused_file = { - enable = true, - update_root = false, - }, - view = { - width = 30, - side = 'right', - preserve_window_proportions = true, - }, - git = { - enable = false, - ignore = true, - }, - renderer = { - root_folder_label = false, - indent_markers = { enable = true }, - icons = { - glyphs = { - default = '󰈚', - folder = { - default = '', - empty = '', - empty_open = '', - open = '', - symlink = '', - }, - }, - }, - }, - }) - end, - vim.keymap.set('n', 'eo', 'NvimTreeToggle', { desc = 'Toggle file explorer' }), - }, } diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index fdd8319..ddb7c9b 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -1,69 +1,69 @@ return { - -- default lsp configs - { - "neovim/nvim-lspconfig", - config = function() end, - }, + -- default lsp configs + { + 'neovim/nvim-lspconfig', + config = function() end, + }, - -- lsp installer - { - "williamboman/mason.nvim", - dependencies = { - "williamboman/mason-lspconfig.nvim", - }, - cmd = "Mason", - config = function() - -- mason - require("mason").setup({ - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗", - }, - border = "rounded", - backdrop = 100, - }, - }) - require("mason-lspconfig").setup({ - -- list of servers for mason to install - ensure_installed = { - "ts_ls", - "html", - "cssls", - "tailwindcss", - "lua_ls", - "basedpyright", - "bashls", - "clangd", - "pylsp", - "rust_analyzer", - }, - automatic_installation = false, -- Don't auto-install or auto-configure - }) - end, - }, - { - "nvimdev/lspsaga.nvim", - event = "LspAttach", - config = function() - require("lspsaga").setup({ - ui = { - theme = "round", - border = "rounded", - devicon = true, - title = true, - winblend = 1, - expand = " ", - collapse = " ", - preview = "", - code_action = "󰠠 ", - diagnostic = " ", - incoming = " ", - outgoing = " ", - hover = " ", - }, - }) - end, - }, + -- lsp installer + { + 'williamboman/mason.nvim', + dependencies = { + 'williamboman/mason-lspconfig.nvim', + }, + cmd = 'Mason', + config = function() + -- mason + require('mason').setup({ + ui = { + icons = { + package_installed = '✓', + package_pending = '➜', + package_uninstalled = '✗', + }, + border = 'rounded', + backdrop = 100, + }, + }) + require('mason-lspconfig').setup({ + -- list of servers for mason to install + ensure_installed = { + 'ts_ls', + 'html', + 'cssls', + 'tailwindcss', + 'lua_ls', + 'basedpyright', + 'bashls', + 'clangd', + -- "pylsp", + 'rust_analyzer', + }, + automatic_installation = false, -- Don't auto-install or auto-configure + }) + end, + }, + { + 'nvimdev/lspsaga.nvim', + event = 'LspAttach', + config = function() + require('lspsaga').setup({ + ui = { + theme = 'round', + border = 'rounded', + devicon = true, + title = true, + winblend = 1, + expand = ' ', + collapse = ' ', + preview = '', + code_action = '󰠠 ', + diagnostic = ' ', + incoming = ' ', + outgoing = ' ', + hover = ' ', + }, + }) + end, + }, } diff --git a/lua/plugins/statusline.lua b/lua/plugins/statusline.lua index 7d80f54..0a29e5a 100644 --- a/lua/plugins/statusline.lua +++ b/lua/plugins/statusline.lua @@ -1,239 +1,32 @@ return { - 'nvim-lualine/lualine.nvim', - dependencies = { - 'ellisonleao/gruvbox.nvim', + { + 'sschleemilch/slimline.nvim', + opts = { + style = 'bg', + bold = true, + spaces = { + components = '', + left = '', + right = '', + }, + sep = { + hide = { + first = true, + last = true, + }, + left = '', + right = '', + }, + }, }, - config = function() - local lualine = require('lualine') - - -- Get gruvbox colors - local palette = require('gruvbox').palette - - local colors = { - bg = palette.dark0, - fg = palette.light1, - yellow = palette.bright_yellow, - cyan = palette.bright_aqua, - darkblue = palette.dark0_hard, - green = palette.bright_green, - orange = palette.bright_orange, - violet = palette.bright_purple, - magenta = palette.bright_purple, - blue = palette.bright_blue, - red = palette.bright_red, - } - - local mode_color = { - n = colors.green, - i = colors.blue, - v = colors.magenta, - [''] = colors.magenta, - V = colors.magenta, - c = colors.yellow, - t = colors.red, - R = colors.orange, - Rv = colors.orange, - no = colors.fg, - s = colors.violet, - S = colors.violet, - [''] = colors.violet, - ic = colors.yellow, - cv = colors.red, - ce = colors.red, - r = colors.cyan, - rm = colors.cyan, - ['r?'] = colors.cyan, - ['!'] = colors.red, - } - - local conditions = { - buffer_not_empty = function() - return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 - end, - buffer_is_file = function() - return vim.bo.buftype == '' - end, - buffer_not_scratch = function() - return string.find(vim.fn.bufname(), 'SCRATCH') == nil - end, - hide_in_width = function() - return vim.fn.winwidth(0) > 80 - end, - check_git_workspace = function() - local filepath = vim.fn.expand('%:p:h') - local gitdir = vim.fn.finddir('.git', filepath .. ';') - return gitdir and #gitdir > 0 and #gitdir < #filepath - end, - is_note = function() - local notes_dir = vim.env.NOTES_DIR - if not notes_dir then - return false - end - local current_file = vim.fn.expand('%:p') - return current_file:find(vim.fn.expand(notes_dir), 1, true) == 1 - end, - } - - local searchcount = { 'searchcount', color = { fg = colors.fg, gui = 'bold' } } - local selectioncount = { 'selectioncount', color = { fg = colors.fg, gui = 'bold' } } - local progress = { 'progress', color = { fg = colors.fg, gui = 'bold' } } - local filetype = { 'filetype', color = { fg = colors.blue, gui = 'bold' } } - local filesize = { 'filesize', color = { fg = colors.fg, gui = 'bold' }, cond = conditions.buffer_not_empty } - local fileformat = { 'fileformat', icons_enabled = true, color = { fg = colors.fg, gui = 'bold' } } - - local filename = { - 'filename', - cond = conditions.buffer_not_empty and conditions.buffer_is_file and conditions.buffer_not_scratch, - color = { fg = colors.magenta, gui = 'bold' }, - } - - local buffers = { - 'buffers', - mode = 2, - cond = conditions.buffer_not_scratch, - filetype_names = { - NvimTree = ' ' .. 'Files', - TelescopePrompt = ' ' .. 'Telescope', - Avante = ' ' .. 'Avante', - AvanteInput = ' ' .. 'Avante', - AvanteSelectedFiles = ' ' .. 'Avante', - dashboard = ' ' .. 'Dashboard', - lazy = '󰒲 ' .. 'Lazy', - mason = ' ' .. 'Mason', - minifiles = ' ' .. 'Files', - snacks_picker_input = ' ' .. 'Picker', - spectre_panel = ' ' .. 'Spectre', - }, - use_mode_colors = true, - } - - local branch = { - 'branch', - icon = ' ', - fmt = function(str) - return str:sub(1, 32) - end, - color = { fg = colors.green, gui = 'bold' }, - } - - local diff_icons = { - 'diff', - symbols = { added = ' ', modified = ' ', removed = ' ' }, - diff_color = { - added = { fg = colors.green }, - modified = { fg = colors.orange }, - removed = { fg = colors.red }, - }, - cond = conditions.hide_in_width, - } - - local diagnostics = { - 'diagnostics', - sources = { 'nvim_lsp', 'nvim_diagnostic', 'nvim_workspace_diagnostic' }, - symbols = { - error = ' ', - warn = ' ', - info = ' ', - hint = '󰠠 ', - }, - diagnostics_color = { - color_error = { fg = colors.red }, - color_warn = { fg = colors.yellow }, - color_info = { fg = colors.blue }, - color_hint = { fg = colors.yellow }, - }, - } - - local lsp = { - function() - local msg = 'No LSP' - local buf_ft = vim.api.nvim_get_option_value('filetype', { buf = 0 }) - local clients = vim.lsp.get_clients() - if next(clients) == nil then - return msg - end - for _, client in ipairs(clients) do - local filetypes = client.config and client.config.filetypes or nil - if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then - return client.name - end - end - return msg - end, - icon = ' ', - color = { fg = colors.fg, gui = 'bold' }, - } - - local encoding = { - 'o:encoding', - fmt = string.upper, - cond = conditions.hide_in_width, - color = { fg = colors.green, gui = 'bold' }, - } - - local function mode(icon) - icon = icon or ' ' - return { - function() - return icon - end, - color = function() - return { fg = mode_color[vim.fn.mode()] } - end, - padding = { left = 1, right = 0 }, - } - end - - -- Create custom gruvbox theme - local function gruvbox_custom() - local function accent_status(accent) - return { - a = { bg = accent, fg = palette.dark0_hard }, - b = { bg = palette.dark1, fg = accent }, - c = { bg = palette.dark0, fg = palette.light1 }, - } - end - - return { - normal = accent_status(palette.bright_aqua), - insert = accent_status(palette.bright_green), - visual = accent_status(palette.bright_purple), - replace = accent_status(palette.bright_yellow), - command = accent_status(palette.bright_orange), - inactive = { - a = { bg = palette.dark1, fg = palette.light4 }, - b = { bg = palette.dark1, fg = palette.light4 }, - c = { bg = palette.dark1, fg = palette.light4 }, - }, - } - end - - lualine.setup({ + { + 'akinsho/bufferline.nvim', + opts = { options = { - component_separators = '', - -- section_separators = '', - theme = gruvbox_custom(), - disabled_filetypes = { - 'dashboard', - }, + show_close_icon = false, + show_buffer_close_icons = false, }, - -- extensions = { 'quickfix', 'man', 'mason', 'lazy', 'toggleterm', 'nvim-tree' }, - tabline = { - lualine_a = {}, - lualine_b = { mode(), buffers }, - lualine_c = {}, - lualine_x = { diff_icons, branch }, - lualine_y = { searchcount, selectioncount }, - lualine_z = {}, - }, - sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = { mode(' '), 'location', progress, filename }, - lualine_x = { diagnostics, lsp, filetype, filesize, fileformat, encoding }, - lualine_y = {}, - lualine_z = {}, - }, - }) - end, + }, + vim.api.nvim_set_hl(0, 'BufferLineFill', { bg = 'None' }), + }, } diff --git a/lua/plugins/utility.lua b/lua/plugins/utility.lua index 8b619c2..d5bac0a 100644 --- a/lua/plugins/utility.lua +++ b/lua/plugins/utility.lua @@ -1,5 +1,11 @@ return { + { + 'nvim-mini/mini.icons', + lazy = true, + opts = {}, + }, + --harpoon { 'ThePrimeagen/harpoon', @@ -86,7 +92,7 @@ return { shell = vim.o.shell, float_opts = { border = 'curved', -- 'single', 'double', 'shadow', etc. - winblend = 0, -- Set to 0 for full transparency + winblend = 0, -- Set to 0 for full transparency highlights = { border = 'Normal', background = 'Normal', @@ -117,16 +123,16 @@ return { picker_integration = true, keymaps = { prefix = 'u', -- Main prefix for uv commands - commands = true, -- Show uv commands menu (x) - run_file = true, -- Run current file (xr) + commands = true, -- Show uv commands menu (x) + run_file = true, -- Run current file (xr) run_selection = true, -- Run selected code (xs) - run_function = true, -- Run function (xf) - venv = true, -- Environment management (xe) - init = true, -- Initialize uv project (xi) - add = true, -- Add a package (xa) - remove = true, -- Remove a package (xd) - sync = true, -- Sync packages (xc) - sync_all = true, -- Sync all packages, extras and groups (xC) + run_function = true, -- Run function (xf) + venv = true, -- Environment management (xe) + init = true, -- Initialize uv project (xi) + add = true, -- Add a package (xa) + remove = true, -- Remove a package (xd) + sync = true, -- Sync packages (xc) + sync_all = true, -- Sync all packages, extras and groups (xC) }, }, }, diff --git a/lua/plugins/whichkey.lua b/lua/plugins/whichkey.lua index 426838a..14dce90 100644 --- a/lua/plugins/whichkey.lua +++ b/lua/plugins/whichkey.lua @@ -45,6 +45,8 @@ return { -- { "a", group = " AI" }, + { 'b', group = ' Buffer' }, + { 'c', group = ' Code' }, { 'cF', ':retab', desc = 'Fix Tabs' }, { 'cd', ':RootDir', desc = 'Root Directory' }, @@ -57,7 +59,15 @@ return { { 'e', group = ' Edit' }, { 'ea', ':b#', desc = 'Alternate File' }, { 'eC', group = 'Edit Configs' }, - { 'ee', ':lua MiniFiles.open()', desc = 'Explore Tree' }, + { + 'ee', + function() + local minifiles = require('mini.files') + minifiles.open(vim.api.nvim_buf_get_name(0), true) + minifiles.reveal_cwd() + end, + desc = 'Explore Tree', + }, { 'eE', ':lua Snacks.explorer()', desc = 'File Explorer' }, { 'ef', 'gf', desc = 'File Under Cursor' }, { 'em', ':e README.md', desc = 'Readme' },