245 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
return {
 | 
						|
  {
 | 
						|
    "rcarriga/nvim-notify",
 | 
						|
    keys = {
 | 
						|
      {
 | 
						|
        "<leader>un",
 | 
						|
        function()
 | 
						|
          require("notify").dismiss({ silent = true, pending = true })
 | 
						|
        end,
 | 
						|
        desc = "Dismiss all Notifications",
 | 
						|
      },
 | 
						|
    },
 | 
						|
    opts = {
 | 
						|
      background_colour = "#000000",
 | 
						|
      timeout = 3000,
 | 
						|
      max_height = function()
 | 
						|
        return math.floor(vim.o.lines * 0.75)
 | 
						|
      end,
 | 
						|
      max_width = function()
 | 
						|
        return math.floor(vim.o.columns * 0.75)
 | 
						|
      end,
 | 
						|
    },
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "xiyaowong/transparent.nvim",
 | 
						|
    event = "VeryLazy",
 | 
						|
    -- opts = { extra_groups = { "NotifyBackground" } },
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "nvim-lualine/lualine.nvim",
 | 
						|
    event = "VeryLazy",
 | 
						|
    opts = function()
 | 
						|
      return {
 | 
						|
        options = {
 | 
						|
          theme = "auto",
 | 
						|
          globalstatus = true,
 | 
						|
          disabled_filetypes = { statusline = { "dashboard", "alpha" } },
 | 
						|
        },
 | 
						|
        sections = {
 | 
						|
          lualine_a = { "mode" },
 | 
						|
          lualine_b = { "branch" },
 | 
						|
          lualine_c = {
 | 
						|
            {
 | 
						|
              "diagnostics",
 | 
						|
              symbols = {
 | 
						|
                error = " ",
 | 
						|
                warn = " ",
 | 
						|
                info = " ",
 | 
						|
                hint = "",
 | 
						|
              },
 | 
						|
            },
 | 
						|
            { "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
 | 
						|
            { "filename", path = 1, symbols = { modified = "  ", readonly = "", unnamed = "" } },
 | 
						|
            {
 | 
						|
              function() return require("nvim-navic").get_location() end,
 | 
						|
              cond = function() return package.loaded["nvim-navic"] and require("nvim-navic").is_available() end,
 | 
						|
            },
 | 
						|
          },
 | 
						|
          lualine_x = {
 | 
						|
            {
 | 
						|
              function() return "  " .. require("dap").status() end,
 | 
						|
              cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end,
 | 
						|
            },
 | 
						|
            { require("lazy.status").updates, cond = require("lazy.status").has_updates },
 | 
						|
            {
 | 
						|
              "diff",
 | 
						|
              symbols = {
 | 
						|
                added = "",
 | 
						|
                modified = "",
 | 
						|
                removed = "✖",
 | 
						|
              },
 | 
						|
            },
 | 
						|
          },
 | 
						|
          lualine_y = {
 | 
						|
            { "progress", separator = " ",                  padding = { left = 1, right = 0 } },
 | 
						|
            { "location", padding = { left = 0, right = 1 } },
 | 
						|
          },
 | 
						|
          lualine_z = {
 | 
						|
            function()
 | 
						|
              return " " .. os.date("%R")
 | 
						|
            end,
 | 
						|
          },
 | 
						|
        },
 | 
						|
        extensions = { "neo-tree", "lazy" },
 | 
						|
      }
 | 
						|
    end,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "lukas-reineke/indent-blankline.nvim",
 | 
						|
    lazy = false,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "echasnovski/mini.indentscope",
 | 
						|
    version = false, -- wait till new 0.7.0 release to put it back on semver
 | 
						|
    event = { "BufReadPre", "BufNewFile" },
 | 
						|
    opts = {
 | 
						|
      -- symbol = "▏",
 | 
						|
      symbol = "│",
 | 
						|
      options = { try_as_border = true },
 | 
						|
    },
 | 
						|
    init = function()
 | 
						|
      vim.api.nvim_create_autocmd("FileType", {
 | 
						|
        pattern = {
 | 
						|
          "help",
 | 
						|
          "alpha",
 | 
						|
          "dashboard",
 | 
						|
          "neo-tree",
 | 
						|
          "Trouble",
 | 
						|
          "lazy",
 | 
						|
          "mason",
 | 
						|
          "notify",
 | 
						|
          "toggleterm",
 | 
						|
          "lazyterm",
 | 
						|
        },
 | 
						|
        callback = function()
 | 
						|
          vim.b.miniindentscope_disable = true
 | 
						|
        end,
 | 
						|
      })
 | 
						|
    end,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "akinsho/bufferline.nvim",
 | 
						|
    event = "VeryLazy",
 | 
						|
    keys = {
 | 
						|
      { "<leader>bp", "<Cmd>BufferLineTogglePin<CR>",            desc = "Toggle pin" },
 | 
						|
      { "<leader>bP", "<Cmd>BufferLineGroupClose ungrouped<CR>", desc = "Delete non-pinned buffers" },
 | 
						|
    },
 | 
						|
    opts = {
 | 
						|
      options = {
 | 
						|
        -- stylua: ignore
 | 
						|
        close_command = function(n) require("mini.bufremove").delete(n, false) end,
 | 
						|
        -- stylua: ignore
 | 
						|
        right_mouse_command = function(n) require("mini.bufremove").delete(n, false) end,
 | 
						|
        diagnostics = "nvim_lsp",
 | 
						|
        always_show_bufferline = false,
 | 
						|
        diagnostics_indicator = function(_, _, diag)
 | 
						|
          local ret = (diag.error and " " .. diag.error or "")
 | 
						|
              .. (diag.warning and " " .. diag.warning or "")
 | 
						|
          return vim.trim(ret)
 | 
						|
        end,
 | 
						|
        offsets = {
 | 
						|
          {
 | 
						|
            filetype = "neo-tree",
 | 
						|
            text = "Neo-tree",
 | 
						|
            highlight = "Directory",
 | 
						|
            text_align = "left",
 | 
						|
          },
 | 
						|
        },
 | 
						|
      },
 | 
						|
    },
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "folke/which-key.nvim",
 | 
						|
    event = "VeryLazy",
 | 
						|
    opts = {
 | 
						|
      plugins = { spelling = true },
 | 
						|
    },
 | 
						|
    config = function(_, opts)
 | 
						|
      local wk = require("which-key")
 | 
						|
      wk.add(
 | 
						|
        {
 | 
						|
          mode = { "n", "v" },
 | 
						|
          { "<leader>b", group = "buffer" },
 | 
						|
          { "<leader>c", group = "colors" },
 | 
						|
          { "<leader>f", group = "file/find" },
 | 
						|
          { "<leader>g", group = "git" },
 | 
						|
          { "<leader>h", group = "harpoon" },
 | 
						|
          { "<leader>l", group = "lsp" },
 | 
						|
          { "<leader>u", group = "ui" },
 | 
						|
          { "<leader>w", group = "windows" },
 | 
						|
          { "<leader>x", group = "diagnostics/quickfix" },
 | 
						|
          { "[",         group = "prev" },
 | 
						|
          { "]",         group = "next" },
 | 
						|
          { "g",         group = "goto" },
 | 
						|
          { "gz",        group = "surround" },
 | 
						|
        }
 | 
						|
 | 
						|
      )
 | 
						|
    end,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "folke/noice.nvim",
 | 
						|
    event = "VeryLazy",
 | 
						|
    opts = {
 | 
						|
      lsp = {
 | 
						|
        override = {
 | 
						|
          ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
 | 
						|
          ["vim.lsp.util.stylize_markdown"] = true,
 | 
						|
          ["cmp.entry.get_documentation"] = true,
 | 
						|
        },
 | 
						|
        hover = { enabled = false },
 | 
						|
        signature = { enabled = false },
 | 
						|
      },
 | 
						|
    },
 | 
						|
    dependencies = {
 | 
						|
      "MunifTanjim/nui.nvim",
 | 
						|
      "rcarriga/nvim-notify",
 | 
						|
    }
 | 
						|
  },
 | 
						|
  -- icons
 | 
						|
  { "nvim-tree/nvim-web-devicons", lazy = true },
 | 
						|
  -- ui components
 | 
						|
  { "MunifTanjim/nui.nvim",        lazy = true },
 | 
						|
  {
 | 
						|
    "RRethy/vim-illuminate",
 | 
						|
    event = { "BufReadPost", "BufNewFile" },
 | 
						|
    opts = {
 | 
						|
      delay = 200,
 | 
						|
      large_file_cutoff = 2000,
 | 
						|
      providers = {
 | 
						|
        'lsp',
 | 
						|
        'treesitter',
 | 
						|
        'regex',
 | 
						|
      },
 | 
						|
      large_file_overrides = {
 | 
						|
        providers = { "lsp" },
 | 
						|
      },
 | 
						|
    },
 | 
						|
    config = function(_, opts)
 | 
						|
      require("illuminate").configure(opts)
 | 
						|
 | 
						|
      local function map(key, dir, buffer)
 | 
						|
        vim.keymap.set("n", key, function()
 | 
						|
          require("illuminate")["goto_" .. dir .. "_reference"](false)
 | 
						|
        end, { desc = dir:sub(1, 1):upper() .. dir:sub(2) .. " Reference", buffer = buffer })
 | 
						|
      end
 | 
						|
 | 
						|
      map("]]", "next")
 | 
						|
      map("[[", "prev")
 | 
						|
 | 
						|
      -- also set it after loading ftplugins, since a lot overwrite [[ and ]]
 | 
						|
      vim.api.nvim_create_autocmd("FileType", {
 | 
						|
        callback = function()
 | 
						|
          local buffer = vim.api.nvim_get_current_buf()
 | 
						|
          map("]]", "next", buffer)
 | 
						|
          map("[[", "prev", buffer)
 | 
						|
        end,
 | 
						|
      })
 | 
						|
    end,
 | 
						|
    keys = {
 | 
						|
      { "]]", desc = "Next Reference" },
 | 
						|
      { "[[", desc = "Prev Reference" },
 | 
						|
    },
 | 
						|
  },
 | 
						|
}
 |