Files
neovim/runtime/ftplugin/markdown.lua
Christian Clason 2e5b560482 feat(treesitter): table of contents for checkhealth, markdown (#32282)
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.
2025-02-22 13:07:21 +01:00

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> [["'