summary refs log tree commit diff
path: root/.vim/lua/statusline.lua
diff options
context:
space:
mode:
Diffstat (limited to '.vim/lua/statusline.lua')
-rw-r--r--.vim/lua/statusline.lua253
1 files changed, 0 insertions, 253 deletions
diff --git a/.vim/lua/statusline.lua b/.vim/lua/statusline.lua
deleted file mode 100644
index c0c185d..0000000
--- a/.vim/lua/statusline.lua
+++ /dev/null
@@ -1,253 +0,0 @@
-
-local spinner_ok, spinner = pcall(require, 'spinner')
-if spinner_ok then
-  spinner.setup {
-    spinner = {'⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'},
-    interval = 120, -- spinner frame rate in ms
-  }
-end
-
-function _G.statusline()
-  local bufnr = vim.fn.bufnr() or 0
-  local hi = statusline_color(vim.fn.mode())
-
-  local sl = hi
-  -- sl = sl .. statusline_append([[ ⢷]], 'StatusLineIcon', hi)
-
-  sl = sl .. statusline_append(statusline_ts(),
-    'StatusLineTreesitter', hi)
-
-  sl = sl .. statusline_append(statusline_lsp_diagnostics(bufnr, hi),
-    'StatusLineDiagnostics', hi)
-
-  sl = sl .. statusline_append(vim.trim(require('lsp-status').status()),
-    'StatusLineLsp', hi)
-
-  sl = sl .. statusline_append(statusline_dap(),
-    'StatusLineDap', hi)
-
-  sl = sl .. [[ %= ]] -- spacer
-
-  sl = sl .. statusline_append(statusline_notify(hi),
-    'StatusLineNotify', hi)
-
-  if spinner_ok then
-    sl = sl .. statusline_append(spinner.status(bufnr),
-      'StatusLineJobs', hi)
-  end
-
-  sl = sl .. statusline_append(require('nvim-lightbulb').get_status_text(),
-    'StatusLineLightbulb', hi)
-
-  sl = sl .. statusline_append([[ %l:%v --%p%%-- %y]], hi, hi)
-
-  return sl
-end
-
-function _G.statusline_color(mode)
-  local hi = '%*'
-  if mode == 'i' then
-    -- hi = '%#StatusLineInsert#'
-  elseif mode == 'c' then
-    -- hi = '%#StatusLineCommand#'
-  elseif mode == 'v' or mode == 'V' or mode == '' then
-    hi = '%#StatusLineVisual#'
-  elseif mode == 'R' or mode == 'Rv' then
-    hi = '%#StatusLineReplace#'
-  end
-  -- return '%{g:actual_curwin==win_getid()?'.. hi ..':%#StatusLineNC#}'
-  return hi
-end
-
--- statusline_append
--- does item highlighting and conditionnal spacing
-function _G.statusline_append(element, hi, default_hi, opts)
-  if not element or element == '' then return '' end
-  opts = opts or { append_space = true }
-
-  if hi ~= nil then hi = '%#' .. hi .. '#' end
-  if not (default_hi == '%*') then hi = default_hi end
-  local el = hi .. element .. default_hi
-  if opts.append_space then el = el .. ' ' end
-  return el
-end
-
-function _G.statusline_lsp_diagnostics(bufnr, default_hi)
-  local error_num = vim.diagnostic.get(bufnr, {severity=vim.diagnostic.severity.ERROR})
-  local warn_num = vim.diagnostic.get(bufnr, {severity=vim.diagnostic.severity.WARN})
-
-  local s = ''
-  if #error_num > 0 then
-    local errs = vim.fn.sign_getdefined('DiagnosticSignError')[1].text .. #error_num
-    s = s .. statusline_append(errs, statusline_combine_hi('StatusLineDiagnostics', 'DiagnosticError'), default_hi)
-  end
-  if #warn_num > 0 then
-    local warns = vim.fn.sign_getdefined('DiagnosticSignWarn')[1].text .. #warn_num
-    s = s .. statusline_append(warns, statusline_combine_hi('StatusLineDiagnostics', 'DiagnosticWarn'), default_hi)
-  end
-  return vim.trim(s)
-end
-
-function _G.statusline_combine_hi(outer_name, inner_name)
-  local outer = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(outer_name), true)
-  local inner = vim.api.nvim_get_hl_by_id(vim.api.nvim_get_hl_id_by_name(inner_name), true)
-  local hi = 'auto' .. outer_name .. inner_name
-  if pcall(vim.api.nvim_get_hl_by_name, hi, true)  then return hi end
-  local gui
-  gui = inner.bold and 'bold'
-  gui = inner.italic and 'italic'
-  gui = inner.underline and 'underline'
-  vim.api.nvim_set_hl(0, hi, {bg = outer.background, fg = inner.foreground, gui = gui})
-  return hi
-end
-function _G.statusline_ts()
-  local data = require('nvim-navic').get_data()
-  if not data then return '' end
-  local s = {}
-  for i = 1, #data do
-    table.insert(s, string.format('%%#CmpItemKind%s#%s%%* %%#StatusLine#%s%%*', data[i].type, data[i].icon, data[i].name))
-  end
-  return table.concat(s, ' > ')
-end
-function _G.statusline_dap()
-  local dap_ok, dap = pcall(require, 'dap')
-  if not dap_ok then return '' end
-
-  local s = dap.status()
-  if s == '' then return s end
-  return '[DAP: ' .. s .. ']'
-end
-
--- notifications cache
-_G.statusline_notifications = {}
-_G.statusline_notifications_archive = {}
-
-function _G.statusline_notify(default_hi)
-  if #_G.statusline_notifications == 0 then return '' end
-  local n = _G.statusline_notifications[1]
-  local timeout = (n.options and n.options.timeout) or 2000
-  -- pop message after <timeout> and move to archive
-  vim.defer_fn(function()
-    local n = table.remove(_G.statusline_notifications, 1)
-    table.insert(_G.statusline_notifications_archive, n)
-    -- make sure archive is never longer than 20 notifications
-    if #_G.statusline_notifications_archive > 20 then
-      table.remove(_G.statusline_notifications_archive, 1)
-    end
-  end, timeout)
-
-  local s = ''
-  if n.hi then
-    s = s .. statusline_append(n.lvl_string .. ' ', statusline_combine_hi('StatusLineNotify', n.hi), default_hi, { append_space = false })
-  end
-  s = s .. statusline_append(n.message, 'StatusLineNotify', default_hi)
-  return vim.trim(s)
-end
-
--- out vim.notify implementation
-local notify = function(m, l, o)
-  local lvl_string = l
-  local hi = nil
-  if l and type(l) == 'number' then
-    if l == vim.log.levels.TRACE then
-      hi = 'deEmph'
-    elseif l == vim.log.levels.DEBUG then
-      hi = 'DiagnosticHint'
-    elseif l == vim.log.levels.INFO then
-      hi = 'DiagnosticInfo'
-    elseif l == vim.log.levels.WARN then
-      hi = 'DiagnosticWarn'
-    elseif l == vim.log.levels.ERROR then
-      hi = 'DiagnosticError'
-    end
-    -- get level string
-    lvl_string = vim.lsp.log_levels[l]
-  end
-  local display = m
-  if lvl_string then display = lvl_string .. ' ' .. display end
-  table.insert(_G.statusline_notifications, {
-    message = m,
-    level = l,
-    options = o,
-    lvl_string = lvl_string,
-    hi = hi,
-    display = display,
-  })
-
-  if _G.statusline_enable_notifysend then
-    local args = {}
-    if lvl_string then
-      if lvl_string == 'ERROR' then
-        table.insert(args, '--category=error')
-      end
-      if lvl_string == 'WARN' then
-        table.insert(args, '--category=warning')
-      end
-    end
-    table.insert(args, 'nvim')
-    table.insert(args, display)
-    require('job').jobstart { command = 'notify-send', args = args }
-  end
-end
-
--- overwrite vim.notify
-vim.notify = function( m, l, o)
-  if vim.in_fast_event() then
-    vim.schedule(function()
-      notify(m, l, o)
-    end)
-  else
-    return notify(m, l, o)
-  end
-end
-
-vim.keymap.set('n', '<leader>n', function()
-  local pickers = require('telescope.pickers')
-  local finders = require('telescope.finders')
-  local conf = require('telescope.config').values
-  local actions = require('telescope.actions')
-  -- local action_state = require('telescope.actions.state')
-  -- local previewers = require('telescope.previewers')
-
-  local opts = {}
-  pickers.new(opts, {
-    prompt_title = "Notifications",
-    finder = finders.new_dynamic {
-      fn = function()
-        return _G.statusline_notifications_archive
-      end,
-      entry_maker = function(n)
-        return {
-          value = n,
-          display = n.display,
-          ordinal = n.message,
-        }
-      end,
-    },
-    sorter = conf.generic_sorter(opts),
-    attach_mappings = function(prompt_bufnr, _)
-      actions.select_default:replace(function()
-        actions.close(prompt_bufnr)
-        -- noop
-        -- local sel = action_state.get_selected_entry()
-        -- vim.notify(sel.value.message, sel.value.level, sel.value.options)
-      end)
-      return true
-    end,
-    -- previewer = previewers.new_buffer_previewer {
-    --   define_preview = function(self, entry)
-    --     vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, {entry.value.display})
-    --   end,
-    -- },
-  }):find()
-end, {desc='notifications'})
-
--- vim.opt.statusline = '%!luaeval("statusline()")'
-vim.opt.statusline = '%{%v:lua.statusline()%}'
-
--- WINBAR --
-vim.opt.winbar = [[%h%w%q%f %-m %-r %= %#WinBarCwd#%{%getcwd()%}%*]] -- keep it simple
--- function _G.winbar()
---   return [[%<%F %-m %-r]]
--- end
--- vim.opt.winbar = '%{%v:lua.winbar()%}'