return{{"\108\117\097\108\105\110\101\046\110\118\105\109",after=function()local s=require("\108\117\097\108\105\110\101\095\114\101\113\117\105\114\101")s.require=require local u={lualine_c={{function()return"\226\150\140"end;color="\077\105\110\105\073\099\111\110\115\065\122\117\114\101"};{"\102\105\108\101\110\097\109\101";path=1};"\115\101\097\114\099\104\099\111\117\110\116"}};(require("\108\117\097\108\105\110\101")).setup({options={icons_enabled=true,theme="\097\117\116\111",disabled_filetypes={statusline={"\100\097\115\104\098\111\097\114\100","\097\108\112\104\097","\109\105\110\105\115\116\097\114\116\101\114"},winbar={"\078\118\105\109\084\114\101\101"}};component_separators={left="";right=""};section_separators={left="\238\130\180";right="\238\130\182"},always_divide_middle=true,globalstatus=true,refresh={statusline=300,tabline=500;winbar=500}};sections={lualine_a={"\109\111\100\101"},lualine_b={"\098\114\097\110\099\104"},lualine_c={{"\102\105\108\101\110\097\109\101";path=1},"\100\105\102\102";"\115\101\097\114\099\104\099\111\117\110\116"},lualine_x={{function()local s=vim.api.nvim_get_option_value("\102\105\108\101\116\121\112\101",{buf=0})local u=(vim.iter(vim.lsp.get_clients({bufnr=0}))):find(function(u)return u.config.name~="\110\117\108\108-\108\115"and(vim.iter(ipairs(u.config.filetypes))):any(function(u,c)return c==s end)end)if u then return u.config.name end end;draw_empty=false,icon="\108\115\112 \058\058"};"\100\105\097\103\110\111\115\116\105\099\115";"\102\105\108\101\116\121\112\101"};lualine_y={"\112\114\111\103\114\101\115\115"},lualine_z={"\108\111\099\097\116\105\111\110"}};tabline={},winbar=u,inactive_winbar=u,extensions={}})end},{"\116\097\098\098\121\046\110\118\105\109";event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114";after=function()local s="\238\130\186"local u="\238\130\188"local c=(require("\101\118\101\114\103\097\114\100\101\110\046\099\111\108\111\114\115")).get()local E={fg=c.subtext0,bg=c.surface1}local k={fg=c.crust,bg=c.green}local h={theme={fill={fg=c.overlay0};head=E,current_tab=k;tab=E;current_win=k,win=E,tail=E}}local function p(c,E,k)local h=E.is_current()and k.theme.current_tab or k.theme.tab return{c.sep(s,h,k.theme.fill);E.in_jump_mode()and E.jump_key()or{E.number();margin=" "};c.sep(u,h,k.theme.fill);hl=h,margin=" "}end local function I(c,E,k,h)local p=(E.is_current()and k.is_current())and h.theme.current_win or h.theme.win return{c.sep(s,p,h.theme.fill),k.buf_name(),c.sep(u,p,h.theme.fill),hl=p;margin=" "}end;(require("\116\097\098\098\121")).setup({line=function(s)return{(s.tabs()).foreach(function(u)return{p(s,u,h);(u.wins()).foreach(function(c)return I(s,u,c,h)end)}end),hl=h.theme.fill}end})end};{"\102\105\100\103\101\116\046\110\118\105\109";after=function()(require("\102\105\100\103\101\116")).setup({notification={override_vim_notify=true,view={group_separator_hl="\077\115\103\083\101\112\097\114\097\116\111\114"},window={normal_hl="\078\111\110\084\101\120\116",winblend=0}},progress={display={done_icon="\239\146\164",progress_icon={pattern="\100\111\116\115";period=1}};ignore={"\099\111\112\105\108\111\116","\110\117\108\108-\108\115"}}})end},{"\105\110\100\101\110\116-\098\108\097\110\107\108\105\110\101\046\110\118\105\109";event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114";after=function()(require("\105\098\108")).setup({scope={enabled=false},indent={highlight={"\073\098\108\073\110\100\101\110\116";"\082\097\105\110\098\111\119\082\101\100","\073\098\108\073\110\100\101\110\116","\082\097\105\110\098\111\119\079\114\097\110\103\101","\073\098\108\073\110\100\101\110\116";"\082\097\105\110\098\111\119\089\101\108\108\111\119";"\073\098\108\073\110\100\101\110\116","\082\097\105\110\098\111\119\071\114\101\101\110";"\073\098\108\073\110\100\101\110\116";"\082\097\105\110\098\111\119\065\113\117\097","\073\098\108\073\110\100\101\110\116","\082\097\105\110\098\111\119\066\108\117\101";"\073\098\108\073\110\100\101\110\116";"\082\097\105\110\098\111\119\080\117\114\112\108\101"}},exclude={filetypes={"\097\108\112\104\097";"\102\117\103\105\116\105\118\101";"\104\101\108\112","\108\097\122\121","\078\118\105\109\084\114\101\101","\084\111\103\103\108\101\084\101\114\109","\076\097\122\121\071\105\116";"\112\114\111\109\112\116","\099\111\100\101-\097\099\116\105\111\110-\109\101\110\117-\109\101\110\117","\099\111\100\101-\097\099\116\105\111\110-\109\101\110\117-\119\097\114\110\105\110\103-\109\101\115\115\097\103\101","\084\114\111\117\098\108\101"}}})end},{"\110\118\105\109-\099\111\108\111\114\105\122\101\114\046\108\117\097",event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114",after=function()(require("\099\111\108\111\114\105\122\101\114")).setup({user_default_options={RGB=true;RRGGBB=true,names=false;RRGGBBAA=true,AARRGGBB=false,rgb_fn=false,hsl_fn=false,css=false,css_fn=false;mode="\098\097\099\107\103\114\111\117\110\100";tailwind="\098\111\116\104";sass={enable=true,parsers={css=true}};virtualtext="\238\136\171 "};buftypes={"\042";"\033\100\097\115\104\098\111\097\114\100","\033\108\097\122\121";"\033\112\111\112\117\112","\033\112\114\111\109\112\116"}})end};{"\116\111\100\111-\099\111\109\109\101\110\116\115\046\110\118\105\109",event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114",after=function()(require("\116\111\100\111-\099\111\109\109\101\110\116\115")).setup()end},{"\119\104\105\099\104-\107\101\121\046\110\118\105\109";priority=1000;after=function()local s=require("\119\104\105\099\104-\107\101\121")s.add({{"\060\108\101\097\100\101\114\062\102",group="\102\105\110\100"},{"\060\108\101\097\100\101\114\062\100",group="\100\105\097\103\110\111\115\116\105\099"}})end}}
return {
  {
    "lualine.nvim",
    after = function()
      local lualine_require = require("lualine_require")
      lualine_require.require = require

      local winbar = {
        lualine_c = {
          { function()
            return "▌"
          end, color = "MiniIconsAzure" },
          { "filename", path = 1 },
          "searchcount",
        },
      }

      require("lualine").setup({
        options = {
          icons_enabled = true,
          theme = "auto",
          disabled_filetypes = {
            statusline = { "dashboard", "alpha", "ministarter" },
            winbar = { "NvimTree" },
          },
          component_separators = { left = "", right = "" },
          section_separators = { left = "", right = "" },
          always_divide_middle = true,
          globalstatus = true,
          refresh = {
            statusline = 300,
            tabline = 500,
            winbar = 500,
          },
        },
        sections = {
          lualine_a = { "mode" },
          lualine_b = { "branch" },
          lualine_c = {
            { "filename", path = 1 },
            "diff",
            "searchcount",
          },
          lualine_x = {
            {
              function()
                local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
                local result = vim.iter(vim.lsp.get_clients({ bufnr = 0 })):find(function(
                  client --[[@as vim.lsp.Client]]
                )
                  return client.config.name ~= "null-ls"
                    and vim.iter(ipairs(client.config.filetypes)):any(function(_, ft)
                      return ft == buf_ft
                    end)
                end)
                if result then
                  return result.config.name
                end
              end,
              draw_empty = false,
              icon = "lsp ::",
            },
            "diagnostics",
            "filetype",
          },
          lualine_y = { "progress" },
          lualine_z = { "location" },
        },
        tabline = {},
        winbar = winbar,
        inactive_winbar = winbar,
        extensions = {},
      })
    end,
  },

  {
    "tabby.nvim",
    event = "DeferredUIEnter",
    after = function()
      local left_sep = ''
      local right_sep = ''

      local C = require('evergarden.colors').get()
      local tab_hl = { fg = C.subtext0, bg = C.surface1 }
      local cur_hl = { fg = C.crust, bg = C.green }
      local o = {
        theme = {
          fill = { fg = C.overlay0 },
          head = tab_hl,
          current_tab = cur_hl,
          tab = tab_hl,
          current_win = cur_hl,
          win = tab_hl,
          tail = tab_hl,
        },
      }

      local function preset_tab(line, tab, opt)
        local hl = tab.is_current() and opt.theme.current_tab or opt.theme.tab
        return {
          line.sep(left_sep, hl, opt.theme.fill),
          tab.in_jump_mode() and tab.jump_key() or {
            tab.number(),
            margin = ' ',
          },
          line.sep(right_sep, hl, opt.theme.fill),
          hl = hl,
          margin = ' ',
        }
      end

      local function preset_win(line, tab, win, opt)
        local hl = (tab.is_current() and win.is_current()) and opt.theme.current_win or opt.theme.win
        return {
          line.sep(left_sep, hl, opt.theme.fill),
          win.buf_name(),
          line.sep(right_sep, hl, opt.theme.fill),
          hl = hl,
          margin = ' ',
        }
      end
      require("tabby").setup({
        line = function(line)
          return {
            line.tabs().foreach(function(tab)
              return {
                preset_tab(line, tab, o),
                tab.wins().foreach(function(win)
                  return preset_win(line, tab, win, o)
                end),
              }
            end),
            hl = o.theme.fill,
          }
        end,
      })
    end
  },

  {
    "fidget.nvim",
    after = function()
      require("fidget").setup({
        notification = {
          override_vim_notify = true,
          view = { group_separator_hl = "MsgSeparator" },
          window = { normal_hl = "NonText", winblend = 0 },
        },
        progress = {
          display = {
            done_icon = "",
            progress_icon = { pattern = "dots", period = 1 },
          },
          ignore = {
            "copilot",
            "null-ls",
          },
        },
      })
    end,
  },

  {
    "indent-blankline.nvim",
    event = "DeferredUIEnter",
    after = function()
      require("ibl").setup({
        scope = { enabled = false },
        indent = {
          highlight = {
            "IblIndent",
            "RainbowRed",
            "IblIndent",
            "RainbowOrange",
            "IblIndent",
            "RainbowYellow",
            "IblIndent",
            "RainbowGreen",
            "IblIndent",
            "RainbowAqua",
            "IblIndent",
            "RainbowBlue",
            "IblIndent",
            "RainbowPurple",
          },
        },
        exclude = {
          filetypes = {
            "alpha",
            "fugitive",
            "help",
            "lazy",
            "NvimTree",
            "ToggleTerm",
            "LazyGit",
            "prompt",
            "code-action-menu-menu",
            "code-action-menu-warning-message",
            "Trouble",
          },
        },
      })
    end,
  },

  {
    "nvim-colorizer.lua",
    event = "DeferredUIEnter",
    after = function()
      require("colorizer").setup({
        user_default_options = {
          RGB = true,
          RRGGBB = true,
          names = false,
          RRGGBBAA = true,
          AARRGGBB = false,
          rgb_fn = false,
          hsl_fn = false,
          css = false,
          css_fn = false,
          mode = "background",
          tailwind = "both",
          sass = {
            enable = true,
            parsers = { css = true },
          },
          virtualtext = " ",
        },

        buftypes = {
          "*",
          "!dashboard",
          "!lazy",
          "!popup",
          "!prompt",
        },
      })
    end,
  },

  -- highlight TODO, FIXME, etc.
  {
    "todo-comments.nvim",
    event = "DeferredUIEnter",
    after = function()
      require("todo-comments").setup()
    end,
  },

  {
    "which-key.nvim",
    priority = 1000,
    after = function()
      local wk = require("which-key")
      wk.add({
        { "<leader>f", group = "find" },
        { "<leader>d", group = "diagnostic" },
      })
    end,
  },
}
