nvim-treesitter-context
                                
                                 nvim-treesitter-context copied to clipboard
                                
                                    nvim-treesitter-context copied to clipboard
                            
                            
                            
                        Show code context
nvim-treesitter-context
Lightweight alternative to context.vim implemented with nvim-treesitter.
Requirements
Neovim >= v0.7.x
Note: if you need support for Neovim 0.6.x please use the tag compat/0.6.
Install
via vim-plug
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'nvim-treesitter/nvim-treesitter-context'
via packer
use 'nvim-treesitter/nvim-treesitter'
use 'nvim-treesitter/nvim-treesitter-context'
Screenshot

Notes
This plugins uses the new neovim WinScrolled event when available to update its
context window. Make sure to have a recent neovim build to get this behavior. The fallback
behavior is to update its content on CursorMoved.
Configuration
(Default values are shown below)
require'treesitter-context'.setup{
    enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
    max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
    trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
    patterns = { -- Match patterns for TS nodes. These get wrapped to match at word boundaries.
        -- For all filetypes
        -- Note that setting an entry here replaces all other patterns for this entry.
        -- By setting the 'default' entry below, you can control which nodes you want to
        -- appear in the context window.
        default = {
            'class',
            'function',
            'method',
            -- 'for', -- These won't appear in the context
            -- 'while',
            -- 'if',
            -- 'switch',
            -- 'case',
        },
        -- Example for a specific filetype.
        -- If a pattern is missing, *open a PR* so everyone can benefit.
        --   rust = {
        --       'impl_item',
        --   },
    },
    exact_patterns = {
        -- Example for a specific filetype with Lua patterns
        -- Treat patterns.rust as a Lua pattern (i.e "^impl_item$" will
        -- exactly match "impl_item" only)
        -- rust = true,
    },
    -- [!] The options below are exposed but shouldn't require your attention,
    --     you can safely ignore them.
    zindex = 20, -- The Z-index of the context window
    mode = 'cursor',  -- Line used to calculate context. Choices: 'cursor', 'topline'
    separator = nil, -- Separator between context and content. Should be a single character string, like '-'.
}
Commands
TSContextEnable, TSContextDisable and TSContextToggle.
Appearance
Use the highlight group TreesitterContext to change the colors of the
context. Per default it links to NormalFloat.
Use the highlight group TreesitterContextLineNumber to change the colors of the
context line numbers if line_numbers is set. Per default it links to LineNr.