69 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Lua
		
	
	
	
return {
 | 
						|
    'nvim-treesitter/nvim-treesitter',
 | 
						|
    dependencies = {
 | 
						|
        "luckasRanarison/tree-sitter-hyprlang",
 | 
						|
        "nvim-treesitter/nvim-treesitter-textobjects",
 | 
						|
    },
 | 
						|
    build = ":TSUpdate",
 | 
						|
    config = function ()
 | 
						|
        require("nvim-treesitter.configs").setup({
 | 
						|
            ensure_installed = { "typst", "cpp", "c", "lua", "vim", "dockerfile", "python", "java", "cmake", "diff", "gitcommit", "html", "css", "javascript", "json", "rust", "sql", "yaml", "markdown", "markdown_inline", "nix", "bibtex" },
 | 
						|
            auto_install = true,
 | 
						|
            highlight = {
 | 
						|
                enable = true,
 | 
						|
                sync_install = true,
 | 
						|
                additional_vim_regex_highlighting = false,
 | 
						|
                disable = function(lang, buf) -- Disable if file size is too big
 | 
						|
                    if lang == "ini" or lang == "markdown" then
 | 
						|
                        return true
 | 
						|
                    end
 | 
						|
                    local max_filesize = 2000 * 1024 -- 2MB
 | 
						|
                    local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
 | 
						|
                    if ok and stats and stats.size > max_filesize then
 | 
						|
                        return true
 | 
						|
                    end
 | 
						|
                end,
 | 
						|
            },
 | 
						|
            indent = {
 | 
						|
                enable = true
 | 
						|
            },
 | 
						|
            textobjects = {
 | 
						|
                select = {
 | 
						|
                    enable = true,
 | 
						|
                    lookahead = true,
 | 
						|
                    keymaps = {
 | 
						|
                        -- You can use the capture groups defined in textobjects.scm
 | 
						|
                        ["af"] = "@function.outer",
 | 
						|
                        ["if"] = "@function.inner",
 | 
						|
                        ["ac"] = "@class.outer",
 | 
						|
                        ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
 | 
						|
                        ["as"] = { query = "@local.scope", query_group = "locals", desc = "Select language scope" },
 | 
						|
                    },
 | 
						|
                    -- You can choose the select mode (default is charwise 'v')
 | 
						|
                    --
 | 
						|
                    -- Can also be a function which gets passed a table with the keys
 | 
						|
                    -- * query_string: eg '@function.inner'
 | 
						|
                    -- * method: eg 'v' or 'o'
 | 
						|
                    -- and should return the mode ('v', 'V', or '<c-v>') or a table
 | 
						|
                    -- mapping query_strings to modes.
 | 
						|
                    selection_modes = {
 | 
						|
                        ['@parameter.outer'] = 'v', -- charwise
 | 
						|
                        ['@function.outer'] = 'V', -- linewise
 | 
						|
                        ['@class.outer'] = '<c-v>', -- blockwise
 | 
						|
                    },
 | 
						|
                    -- If you set this to `true` (default is `false`) then any textobject is
 | 
						|
                    -- extended to include preceding or succeeding whitespace. Succeeding
 | 
						|
                    -- whitespace has priority in order to act similarly to eg the built-in
 | 
						|
                    -- `ap`.
 | 
						|
                    --
 | 
						|
                    -- Can also be a function which gets passed a table with the keys
 | 
						|
                    -- * query_string: eg '@function.inner'
 | 
						|
                    -- * selection_mode: eg 'v'
 | 
						|
                    -- and should return true or false
 | 
						|
                    include_surrounding_whitespace = false,
 | 
						|
                },
 | 
						|
            },
 | 
						|
        })
 | 
						|
    end,
 | 
						|
}
 |