Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nvim-treesitter/nvim-treesitter-context
Show code context
https://github.com/nvim-treesitter/nvim-treesitter-context
neovim neovim-plugin vim vim-plugin
Last synced: 3 days ago
JSON representation
Show code context
- Host: GitHub
- URL: https://github.com/nvim-treesitter/nvim-treesitter-context
- Owner: nvim-treesitter
- License: mit
- Created: 2020-10-19T09:32:33.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-12-08T07:45:05.000Z (5 days ago)
- Last Synced: 2024-12-10T05:28:34.772Z (3 days ago)
- Topics: neovim, neovim-plugin, vim, vim-plugin
- Language: Janet
- Homepage:
- Size: 6.99 MB
- Stars: 2,559
- Watchers: 18
- Forks: 207
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-neovim - nvim-treesitter/nvim-treesitter-context - Shows floating hover with the current function/block context. (Editing Support / Scrollbar)
README
# nvim-treesitter-context
Lightweight alternative to [context.vim](https://github.com/wellle/context.vim)
Note: This plugin requires necessary language parsers in order to work. Non default
language parsers can be installed with [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter).## 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)
multiwindow = false, -- Enable multiwindow support.
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)
## Overriding the builtin for a given language
Read [CONTRIBUTING.md](CONTRIBUTING.md) first.
You can provide you own language files by adding them to the
`runtimepath` (`:help runtimepath`).For example, creating `~/.config/nvim/queries/java/context.scm` will take
precedence over the `queries/java/context.scm` included in `nvim-treesitter-context`
as long as `~/.config/nvim` appears earlier in `runtimepath`.You can check the value of `runtimepath` with `:set rtp`.