diff --git a/lua/config/statusline.lua b/lua/config/statusline.lua index aad6564..9b4c6fa 100644 --- a/lua/config/statusline.lua +++ b/lua/config/statusline.lua @@ -7,6 +7,7 @@ local function spell() end local function trailing_space() + -- Get the positions of trailing whitespaces from plugin 'jdhao/whitespace.nvim'. local trailing_space_pos = vim.b.trailing_whitespace_pos local msg = "" @@ -19,6 +20,30 @@ local function trailing_space() return msg end +local function mixed_indent() + local space_pat = [[\v^ +]] + local tab_pat = [[\v^\t+]] + local space_indent = vim.fn.search(space_pat, 'nwc') + local tab_indent = vim.fn.search(tab_pat, 'nwc') + local mixed = (space_indent > 0 and tab_indent > 0) + local mixed_same_line + if not mixed then + mixed_same_line = vim.fn.search([[\v^(\t+ | +\t)]], 'nwc') + mixed = mixed_same_line > 0 + end + if not mixed then return '' end + if mixed_same_line ~= nil and mixed_same_line > 0 then + return 'MI:'..mixed_same_line + end + local space_indent_cnt = vim.fn.searchcount({pattern=space_pat, max_count=1e3}).total + local tab_indent_cnt = vim.fn.searchcount({pattern=tab_pat, max_count=1e3}).total + if space_indent_cnt > tab_indent_cnt then + return 'MI:'..tab_indent + else + return 'MI:'..space_indent + end +end + require("lualine").setup({ options = { icons_enabled = true, @@ -60,7 +85,11 @@ require("lualine").setup({ { trailing_space, color = "WarningMsg" - } + }, + { + mixed_indent, + color = "WarningMsg" + }, }, }, inactive_sections = {