mirror of
https://github.com/neovim/neovim.git
synced 2026-01-04 18:37:02 +10:00
Problem: It's difficult to navigate large structured text files (vim help, checkhealth, Markdown). Solution: Support `gO` for table of contents and `]]`/`[[` for moving between headings for all these filetypes using treesitter queries. Refactor: colorization of highlight groups is moved to the `help` ftplugin while headings-related functionality is implemented in a private `vim.treesitter` module for possible future use for other filetypes.
15 lines
654 B
Lua
15 lines
654 B
Lua
vim.keymap.set('n', 'gO', function()
|
|
require('vim.treesitter._headings').show_toc()
|
|
end, { buffer = 0, silent = true, desc = 'Show table of contents for current buffer' })
|
|
|
|
vim.keymap.set('n', ']]', function()
|
|
require('vim.treesitter._headings').jump({ count = 1 })
|
|
end, { buffer = 0, silent = false, desc = 'Jump to next section' })
|
|
vim.keymap.set('n', '[[', function()
|
|
require('vim.treesitter._headings').jump({ count = -1 })
|
|
end, { buffer = 0, silent = false, desc = 'Jump to previous section' })
|
|
|
|
vim.b.undo_ftplugin = (vim.b.undo_ftplugin or '')
|
|
.. '\n exe "nunmap <buffer> gO"'
|
|
.. '\n exe "nunmap <buffer> ]]" | exe "nunmap <buffer> [["'
|