From 377aaf83cff1bb8ad5549089e2483ed7130efa27 Mon Sep 17 00:00:00 2001 From: FaultyBranches Date: Sun, 7 Jun 2026 14:21:19 -0500 Subject: [PATCH] feat: Starting the cleanup on DAP plugins and adding a basic statusline to futz around with potential replacement of more external plugins. --- nvim/lua/plugins.lua | 5 +- nvim/lua/plugins/dap.lua | 152 ++++++++++++++++++++------------------- nvim/lua/statusline.lua | 26 +++++++ 3 files changed, 106 insertions(+), 77 deletions(-) create mode 100644 nvim/lua/statusline.lua diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index d3cfc45..aef104a 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -1,6 +1,7 @@ -- Load the following plugins eagerly to prevent visual oddities require('plugins.gruvbox') -- Colorscheme setup require('plugins.lualine') -- Status line plugin +-- require('statusline') -- vim.schedule defers plugin loading for after the main loop starts -- Startup is cleaner and faster than ever @@ -24,8 +25,8 @@ vim.schedule(function() }) require('nvim-autopairs').setup() -- Automatic pair completion of paranteticals, braces, quotes, etc. - require('plugins.dap') -- DAP debugging plugin - require('plugins.dap-python') -- Debug plugin settings specifically for python + require('plugins.dap') -- DAP debugging plugin TODO: cleanup + require('plugins.dap-python') -- Debug plugin settings specifically for python TODO: cleanup -- Experimental -- require('plugins.note_taking') -- In house note taking plugin (TODO: rename once the plugin name is solidified) diff --git a/nvim/lua/plugins/dap.lua b/nvim/lua/plugins/dap.lua index 35cdc48..8539985 100644 --- a/nvim/lua/plugins/dap.lua +++ b/nvim/lua/plugins/dap.lua @@ -5,6 +5,8 @@ vim.pack.add({ 'https://github.com/theHamsta/nvim-dap-virtual-text', }) +-- TODO: Needs a pass to remove hardcoding, potentially cut out mason completely and general cleanup + require('dapui').setup({ mappings = { open = 'o', @@ -49,90 +51,90 @@ require('dapui').setup({ }) require('nvim-dap-virtual-text').setup() - -- local mason_dap = require('mason-nvim-dap') - local dap, dapui = require('dap'), require('dapui') +-- local mason_dap = require('mason-nvim-dap') +local dap, dapui = require('dap'), require('dapui') - -- mason_dap.setup({ - -- ensure_installed = { - -- 'codelldb', - -- 'debugpy', - -- }, - -- automatic_installation = true, - -- handlers = { - -- function(config) - -- require('mason-nvim-dap').default_setup(config) - -- end, - -- } - -- }) +-- mason_dap.setup({ +-- ensure_installed = { +-- 'codelldb', +-- 'debugpy', +-- }, +-- automatic_installation = true, +-- handlers = { +-- function(config) +-- require('mason-nvim-dap').default_setup(config) +-- end, +-- } +-- }) - dap.listeners.before.attach.dapui_config = function() - dapui.open() - end - dap.listeners.before.launch.dapui_config = function() - dapui.open() - end - dap.listeners.before.event_terminated.dapui_config = function() - dapui.close() - end - dap.listeners.before.event_exited.dapui_config = function() - dapui.close() - end +dap.listeners.before.attach.dapui_config = function() + dapui.open() +end +dap.listeners.before.launch.dapui_config = function() + dapui.open() +end +dap.listeners.before.event_terminated.dapui_config = function() + dapui.close() +end +dap.listeners.before.event_exited.dapui_config = function() + dapui.close() +end - -- vim.fn.sign_define('DapBreakpoint', { text = 'ᛒ', texthl = '', lineh = '', numhl = '' }) - vim.fn.sign_define('DapBreakpoint', { text = '🟥', texthl = '', lineh = '', numhl = '' }) - vim.fn.sign_define('DapBreakpointCondition', { text = '🝌', texthl = '', lineh = '', numhl = '' }) - vim.fn.sign_define('DapStopped', { text = '▶️' }) +-- vim.fn.sign_define('DapBreakpoint', { text = 'ᛒ', texthl = '', lineh = '', numhl = '' }) +vim.fn.sign_define('DapBreakpoint', { text = '🟥', texthl = '', lineh = '', numhl = '' }) +vim.fn.sign_define('DapBreakpointCondition', { text = '🝌', texthl = '', lineh = '', numhl = '' }) +vim.fn.sign_define('DapStopped', { text = '▶️' }) - dap.adapters.gdb = { - type = 'executable', - command = 'gdb', - args = { '-i', 'dap' }, +dap.adapters.gdb = { + type = 'executable', + command = 'gdb', + args = { '-i', 'dap' }, +} + +dap.adapters.lldb = { + command = 'lldb', + type = 'executable', +} + +dap.adapters.debugpy = { + command = 'debugpy', + type = 'executable', +} + +dap.configurations = { + rust = { + { + type = 'lldb', + name = 'Debug', + request = 'launch', + program = function() + return vim.fn.getcwd() .. '/target/debug/faultybranches' -- TODO: remove the testing hardcoded path + end, + stopAtBeginningOfMainSubprogram = true, + }, + }, + python = { + { + type = 'python', + name = 'Launch current file', + request = 'launch', + program = '${file}', + pythonPath = function() + if vim.env.VIRTUAL_ENV then + return vim.env.VIRTUAL_ENV .. '/bin/python' + end + + return vim.fn.exepath('python3') or vim.fn.exepath('python') or 'python' + end } + } +} - dap.adapters.lldb = { - command = 'lldb', - type = 'executable', - } - - dap.adapters.debugpy = { - command = 'debugpy', - type = 'executable', - } - - dap.configurations = { - rust = { - { - type = 'lldb', - name = 'Debug', - request = 'launch', - program = function() - return vim.fn.getcwd() .. '/target/debug/faultybranches' - end, - stopAtBeginningOfMainSubprogram = true, - }, - }, - python = { - { - type = 'python', - name = 'Launch current file', - request = 'launch', - program = '${file}', - pythonPath = function() - if vim.env.VIRTUAL_ENV then - return vim.env.VIRTUAL_ENV .. '/bin/python' - end - - return vim.fn.exepath('python3') or vim.fn.exepath('python') or 'python' - end - } - } - } - -vim.keymap.set('n', 'b', function () +vim.keymap.set('n', 'b', function() require('dap').toggle_breakpoint() end) vim.keymap.set('n', 'B', function() require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: ')) end) -vim.keymap.set({'n', 'v'}, 'dh', function() require('dap.ui.widgets').hover() end) +vim.keymap.set({ 'n', 'v' }, 'dh', function() require('dap.ui.widgets').hover() end) vim.keymap.set('n', '', function() require('dap').continue() end) vim.keymap.set('n', '', function() require('dap').run_to_cursor() end) vim.keymap.set('n', '', function() require('dap').terminate() end) diff --git a/nvim/lua/statusline.lua b/nvim/lua/statusline.lua new file mode 100644 index 0000000..d2b3333 --- /dev/null +++ b/nvim/lua/statusline.lua @@ -0,0 +1,26 @@ +local function lsp_status() + local attached_clients = vim.lsp.get_clients({ bufnr = 0 }) + if #attached_clients == 0 then + return '' + end + local names = vim.iter(attached_clients) + :map(function (client) + local name = client.name:gsub('language.server', 'ls') + return name + end) + :totable() + return '[' .. table.concat(names, ', ') .. ']' +end + +function _G.statusline() + return table.concat({ + '%f', + '%h%w%m%r', + '%=', + lsp_status(), + ' %-14(%l,%c%V%)', + '%P', + }, ' ') +end + +vim.o.statusline = '%{%v:lua._G.statusline()%}'