-- Install Lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
    vim.fn.system({
        "git",
        "clone",
        "--filter=blob:none",
        "https://github.com/folke/lazy.nvim.git",
        "--branch=stable", -- latest stable release
        lazypath,
    })
end
vim.opt.rtp:prepend(lazypath)

require('lazy').setup({
    'ConradIrwin/vim-bracketed-paste',
    'airblade/vim-rooter',
    'nuchs/vim-hypr-nav',
    'luckasRanarison/tree-sitter-hypr',
    'debugloop/telescope-undo.nvim',
    'mhartington/formatter.nvim',
    {'vimwiki/vimwiki', init = function ()
        vim.g.vimwiki_list = {{path = '~/Workspace/DnD/Lumentis Campaign Setting/', syntax = 'markdown', ext = '.md'}}
        vim.g.vimwiki_key_mappings = { table_mappings = 0 }
        vim.g.vimwiki_markdown_link_ext = 1
        vim.g.vimwiki_global_ext = 0
    end},
    {'stevearc/oil.nvim', opts = {
        keymaps = {
            ["g?"] = "actions.show_help",
            ["<CR>"] = "actions.select",
            ["<leader>v"] = "actions.select_vsplit",
            ["<leader>s"] = "actions.select_split",
            ["<leader>p"] = "actions.preview",
            ["<escape>"] = "actions.close",
            ["<leader>r"] = "actions.refresh",
            ["-"] = "actions.parent",
            ["_"] = "actions.open_cwd",
            ["`"] = "actions.cd",
            ["~"] = "actions.tcd",
            ["g."] = "actions.toggle_hidden",
        },
        -- Set to false to disable all of the above keymaps
        use_default_keymaps = false,
    }, dependencies = { "nvim-tree/nvim-web-devicons" }, lazy = true},
    {'windwp/nvim-autopairs', event = "InsertEnter", opts = {}},
    {"folke/flash.nvim", event = "VeryLazy", opts = {highlight = {backdrop=false}, modes = {char = {highlight = {backdrop = false}}, search = {enabled = false}}, prompt = {enabled = false}}, keys = {{"s", mode = {"n","x","o"}, function() require("flash").jump() end}}},
    {'NeogitOrg/neogit', dependencies = {"nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim", "sindrets/diffview.nvim"}, config = true, lazy = true},
    {'akinsho/bufferline.nvim', version = "*", dependencies = 'nvim-tree/nvim-web-devicons'},
    {'cappyzawa/trim.nvim', config = function () require("trim").setup({ ft_blocklist= {"markdown", "vimwiki"}, patterns = { [[%s/\s\+$//e]], [[%s/\($\n\s*\)\+\%$//]], [[%s/\%^\n\+//]], }, }) end},
    {'folke/trouble.nvim', dependencies = {"nvim-tree/nvim-web-devicons"}, config = function () require('trouble').setup() end, lazy = true},
    {'hrsh7th/nvim-cmp', dependencies = {'hrsh7th/cmp-buffer', 'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-path', 'dcampos/nvim-snippy', 'honza/vim-snippets','dcampos/cmp-snippy' }},
    {'lervag/vimtex', ft='latex'},
    {'numToStr/Comment.nvim', config = function () require('Comment').setup() end},
    {'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons', opt = true }},
    {'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' },
    {'nvim-telescope/telescope.nvim', dependencies = {'nvim-lua/plenary.nvim'}},
    {'nvim-tree/nvim-tree.lua', dependencies = {'nvim-tree/nvim-web-devicons'}, tag = 'nightly'},
    {'nvim-treesitter/nvim-treesitter', build = ":TSUpdate"},
    {'williamboman/mason-lspconfig.nvim', dependencies = {'williamboman/mason.nvim', 'neovim/nvim-lspconfig'}},
    {dir = '~/.config/nvim/colorschemes/material', dependencies= {"rktjmp/lush.nvim"}, config = function () vim.cmd("colorscheme material") end},
})
