66 lines
1.8 KiB
Lua
66 lines
1.8 KiB
Lua
|
local M = {}
|
||
|
|
||
|
M.filetypes = {
|
||
|
'dap-repl',
|
||
|
'dapui_console',
|
||
|
'dapui_console',
|
||
|
'dapui_watches',
|
||
|
'dapui_stacks',
|
||
|
'dapui_breakpoints',
|
||
|
'dapui_scopes',
|
||
|
}
|
||
|
|
||
|
local function merge_colors(foreground, background)
|
||
|
local new_name = foreground .. background
|
||
|
|
||
|
local hl_fg = vim.api.nvim_get_hl(0, { name = foreground })
|
||
|
local hl_bg = vim.api.nvim_get_hl(0, { name = background })
|
||
|
|
||
|
local fg = string.format('#%06x', hl_fg.fg and hl_fg.fg or 0)
|
||
|
local bg = string.format('#%06x', hl_bg.bg and hl_bg.bg or 0)
|
||
|
|
||
|
vim.api.nvim_set_hl(0, new_name, { fg = fg, bg = bg })
|
||
|
return new_name
|
||
|
end
|
||
|
|
||
|
local function get_dap_repl_winbar(active)
|
||
|
local get_mode = require('lualine.highlight').get_mode_suffix
|
||
|
|
||
|
return function()
|
||
|
local filetype = vim.bo.filetype
|
||
|
local disabled_filetypes = { 'dap-repl' }
|
||
|
|
||
|
if not vim.tbl_contains(disabled_filetypes, filetype) then
|
||
|
return ''
|
||
|
end
|
||
|
|
||
|
local background_color = string.format(
|
||
|
'lualine_b' .. '%s',
|
||
|
active and get_mode() or '_inactive'
|
||
|
)
|
||
|
|
||
|
local controls_string = '%#' .. background_color .. '#'
|
||
|
for element in require('dapui.controls').controls():gmatch('%S+') do
|
||
|
local color, action = string.match(element, '%%#(.*)#(%%.*)%%#0#')
|
||
|
controls_string = controls_string
|
||
|
.. ' %#'
|
||
|
.. merge_colors(color, background_color)
|
||
|
.. '#'
|
||
|
.. action
|
||
|
end
|
||
|
return controls_string
|
||
|
end
|
||
|
end
|
||
|
|
||
|
M.winbar = {
|
||
|
lualine_a = { { 'filename', file_status = false } },
|
||
|
lualine_b = { get_dap_repl_winbar(true) },
|
||
|
}
|
||
|
|
||
|
M.inactive_winbar = {
|
||
|
lualine_a = { { 'filename', file_status = false } },
|
||
|
lualine_b = { get_dap_repl_winbar(false) },
|
||
|
}
|
||
|
|
||
|
return M
|