neovim/runtime/doc
bfredl b04286a187 feat(extmark): support proper multiline ranges
The removes the previous restriction that nvim_buf_set_extmark()
could not be used to highlight arbitrary multi-line regions

The problem can be summarized as follows: let's assume an extmark with a
hl_group is placed covering the region (5,0) to (50,0) Now, consider
what happens if nvim needs to redraw a window covering the lines 20-30.
It needs to be able to ask the marktree what extmarks cover this region,
even if they don't begin or end here.

Therefore the marktree needs to be augmented with the information covers
a point, not just what marks begin or end there. To do this, we augment
each node with a field "intersect" which is a set the ids of the
marks which overlap this node, but only if it is not part of the set of
any parent. This ensures the number of nodes that need to be explicitly
marked grows only logarithmically with the total number of explicitly
nodes (and thus the number of of overlapping marks).

Thus we can quickly iterate all marks which overlaps any query position
by looking up what leaf node contains that position. Then we only need
to consider all "start" marks within that leaf node, and the "intersect"
set of that node and all its parents.

Now, and the major source of complexity is that the tree restructuring
operations (to ensure that each node has T-1 <= size <= 2*T-1) also need
to update these sets. If a full inner node is split in two, one of the
new parents might start to completely overlap some ranges and its ids
will need to be moved from its children's sets to its own set.
Similarly, if two undersized nodes gets joined into one, it might no
longer completely overlap some ranges, and now the children which do
needs to have the have the ids in its set instead. And then there are
the pivots! Yes the pivot operations when a child gets moved from one
parent to another.
2023-09-12 10:38:23 +02:00
..
api.txt feat(extmark): support proper multiline ranges 2023-09-12 10:38:23 +02:00
arabic.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
autocmd.txt vim-patch:8.1.2044: no easy way to process postponed work 2023-08-21 14:16:15 +08:00
builtin.txt vim-patch:9.0.1856: issues with formatting positional arguments (#25013) 2023-09-04 08:49:50 +08:00
change.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
channel.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
cmdline.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
debug.txt
deprecated.txt feat(lsp)!: rename vim.lsp.get_active_clients to get_clients (#24113) 2023-07-17 18:27:16 +02:00
dev_style.txt
develop.txt docs: remove "#" comment char in @return 2023-08-03 14:01:53 +02:00
diagnostic.txt fix(diagnostic): always return copies of diagnostic items (#25010) 2023-09-06 12:54:18 -05:00
diff.txt vim-patch:partial:6f4754b9f725 2023-04-17 15:46:24 +08:00
digraph.txt vim-patch:9.0.1335: no test for bad use of spaces in help files (#24483) 2023-07-25 20:58:09 +08:00
editing.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
editorconfig.txt docs: fix typos 2023-04-04 19:07:33 +02:00
eval.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
filetype.txt vim-patch:f787ee8451a1 (#25103) 2023-09-12 07:48:40 +08:00
fold.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
ft_ada.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
ft_ps1.txt
ft_raku.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
ft_rust.txt
ft_sql.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
gui.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
hebrew.txt feat(edit)!: remove old c implementation of hebrew keymap 2023-02-28 15:14:03 +01:00
help.txt test: spellcheck :help (vimdoc) files #24109 2023-06-22 03:44:51 -07:00
helphelp.txt docs: fix misparsed headings (#24162) 2023-06-26 11:16:55 +02:00
if_perl.txt test: spellcheck :help (vimdoc) files #24109 2023-06-22 03:44:51 -07:00
if_pyth.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
if_ruby.txt vim-patch:8.2.0578: heredoc for interfaces does not support "trim" 2023-04-29 09:20:52 +08:00
indent.txt fix(docs): vimdoc syntax errors 2023-06-26 11:29:12 +02:00
index.txt fix(docs): ignore_invalid #24174 2023-06-27 10:21:27 -07:00
insert.txt vim-patch:partial:9.0.1886: Various Typos 2023-09-09 17:58:32 +08:00
intro.txt vim-patch:596ad66d1ddb (#25102) 2023-09-12 07:37:05 +08:00
job_control.txt docs: small fixes 2023-05-13 21:33:22 +02:00
lsp.txt feat(lsp): improve control over placement of floating windows (#24494) 2023-09-10 10:02:23 +02:00
lua-guide.txt docs: luaref cleanup #24541 2023-08-03 08:35:10 -07:00
lua.txt refactor(vim.system): factor out on_exit handling 2023-09-05 17:10:04 +01:00
luaref.txt docs: luaref cleanup #24541 2023-08-03 08:35:10 -07:00
luvref.txt docs(luv): correct uv.spawn options.args docs about the first argument 2023-09-02 16:58:19 +02:00
map.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
mbyte.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
message.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
mlang.txt
motion.txt vim-patch:9.0.1761: g<kEnd> behaves different from g<end> 2023-08-21 06:12:03 +08:00
news-0.9.txt fix: doc errors 2023-07-17 17:09:16 +01:00
news.txt feat(extmark): support proper multiline ranges 2023-09-12 10:38:23 +02:00
nvim_terminal_emulator.txt vim-patch:3d3a9152fa6d 2023-08-25 11:05:18 +01:00
nvim.txt
options.txt vim-patch:596ad66d1ddb (#25102) 2023-09-12 07:37:05 +08:00
pattern.txt fix(docs): match DocSearch style with site theme 2023-07-08 16:06:46 +02:00
pi_gzip.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
pi_health.txt fix(health): replace healthFoo with DiagnosticFoo (#23475) 2023-05-05 18:15:44 +02:00
pi_msgpack.txt vim-patch:9.0.1335: no test for bad use of spaces in help files (#24483) 2023-07-25 20:58:09 +08:00
pi_netrw.txt feat(defaults): set g:netrw_use_errorwindow = 0 #24179 2023-06-29 14:14:14 -07:00
pi_paren.txt
pi_spec.txt docs: fix treesitter parsing errors 2023-01-01 15:05:13 +01:00
pi_tar.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
pi_tutor.txt
pi_zip.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
provider.txt test: spellcheck :help (vimdoc) files #24109 2023-06-22 03:44:51 -07:00
quickfix.txt fix(runtime): respect 'rtp' order for all runtime files (#24335) 2023-07-14 06:46:16 +08:00
quickref.txt fix(docs): vimdoc syntax errors 2023-06-26 11:29:12 +02:00
recover.txt vim-patch:71badf9547e8 (#23285) 2023-04-23 15:22:55 +02:00
remote_plugin.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
remote.txt vim-patch:partial:938ae280c79b (#22356) 2023-02-21 23:50:29 +08:00
repeat.txt fix(runtime): respect 'rtp' order for all runtime files (#24335) 2023-07-14 06:46:16 +08:00
rileft.txt docs: fix treesitter parsing errors 2023-01-01 15:05:13 +01:00
russian.txt docs #24061 2023-06-19 08:40:33 -07:00
scroll.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
sign.txt feat(docs): generate builtin.txt (#24493) 2023-07-28 14:48:41 +01:00
spell.txt vim-patch:10e8ff9b2607 (#23977) 2023-06-11 12:40:22 +01:00
starting.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
support.txt docs: fix typos 2023-04-04 19:07:33 +02:00
syntax.txt vim-patch:596ad66d1ddb (#25102) 2023-09-12 07:37:05 +08:00
tabpage.txt
tagsrch.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
term.txt docs(term.txt): reorder paragraphs about TUI input (#24367) 2023-07-16 18:39:45 +08:00
testing.txt fix(lua): improve annotations for stricter luals diagnostics (#24609) 2023-08-09 11:06:13 +02:00
tips.txt vim-patch:6a500661a9cb 2023-08-10 17:28:02 +08:00
treesitter.txt feat(treesitter): add a query editor (#24703) 2023-08-25 13:17:36 -05:00
uganda.txt vim-patch:e978b4534a5e (#24697) 2023-08-13 13:25:10 +01:00
ui.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
undo.txt vim-patch:9.0.1683: Updated runtime files (#24638) 2023-08-10 17:45:36 +08:00
userfunc.txt vim-patch:10e8ff9b2607 (#23977) 2023-06-11 12:40:22 +01:00
usr_01.txt vim-patch:b7398fe41c9e (#23627) 2023-05-15 09:38:32 +02:00
usr_02.txt vim-patch:partial:938ae280c79b (#22356) 2023-02-21 23:50:29 +08:00
usr_03.txt vim-patch:71badf9547e8 (#23285) 2023-04-23 15:22:55 +02:00
usr_04.txt
usr_05.txt vim-patch:81b8bf5b4a33 2023-08-10 17:28:04 +08:00
usr_06.txt feat!: remove hardcopy 2023-01-03 10:07:43 +00:00
usr_07.txt
usr_08.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_09.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_10.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_11.txt docs #24061 2023-06-19 08:40:33 -07:00
usr_12.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_20.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_21.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
usr_22.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_23.txt
usr_24.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_25.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_26.txt
usr_27.txt
usr_28.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_29.txt fix(docs): vimdoc syntax errors 2023-06-26 11:29:12 +02:00
usr_30.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
usr_31.txt
usr_32.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_40.txt fix(docs): vimdoc syntax errors 2023-06-26 11:29:12 +02:00
usr_41.txt vim-patch:9.0.1515: reverse() does not work for a String 2023-08-19 18:05:46 +08:00
usr_42.txt docs(manual): fix treesitter parsing errors 2023-01-01 15:05:21 +01:00
usr_43.txt docs: remove trailing spaces #24455 2023-07-25 05:07:13 -07:00
usr_44.txt
usr_45.txt docs #24061 2023-06-19 08:40:33 -07:00
usr_toc.txt feat!: remove hardcopy 2023-01-03 10:07:43 +00:00
various.txt Use Lua autocommand and make TermClose autocommand global 2023-08-10 09:53:56 -05:00
vi_diff.txt fix(docs): vimdoc syntax errors 2023-06-25 17:14:28 +02:00
vim_diff.txt feat(highlight): add FloatFooter highlight group 2023-08-26 19:37:43 +03:00
visual.txt docs: small fixes 2023-05-13 21:33:22 +02:00
windows.txt vim-patch:partial:9.0.1886: Various Typos 2023-09-09 17:58:32 +08:00