# nvim-treesitter-context Lightweight alternative to [context.vim](https://github.com/wellle/context.vim) ## Requirements Neovim >= v0.9.0 Note: if you need support for Neovim 0.6.x please use the tag `compat/0.6`. ## Screenshot ![theme](./static/demo.gif) ## Supported Languages Note: support for specific languages is strictly community maintained and can break from time to time as parsers are updated.
click to expand ## Configuration (Default values are shown below) Note: calling `setup()` is optional. ```lua 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. min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. line_numbers = true, multiline_threshold = 20, -- Maximum number of lines to show for a single context trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' -- Separator between context and content. Should be a single character string, like '-'. -- When separator is set, the context will only show up when there are at least 2 lines above cursorline. separator = nil, zindex = 20, -- The Z-index of the context window on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching } ``` ## 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`. Use the highlight group `TreesitterContextSeparator` to change the colors of the separator if `separator` is set. By default it links to `FloatBorder`. Use the highlight groups `TreesitterContextBottom` and/or `TreesitterContextLineNumberBottom` to change the highlight of the last line of the context window. By default it links to `NONE`. However, you can use this to create a border by applying an underline highlight, e.g, for an underline across the screen: ```vim hi TreesitterContextBottom gui=underline guisp=Grey hi TreesitterContextLineNumberBottom gui=underline guisp=Grey ``` Or an underline below the line numbers only: ```vim hi TreesitterContextLineNumberBottom gui=underline guisp=Grey ``` ## Jumping to context (upwards) ```lua vim.keymap.set("n", "[c", function() require("treesitter-context").go_to_context(vim.v.count1) end, { silent = true }) ``` ## Adding support for other languages See [CONTRIBUTING.md](CONTRIBUTING.md)