For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- -649dd00fe2
remove deprecated functions -0370e4def0
remove neovim qt -880f7d12fe
remove vimballs (#22402) -c48b1421af
rename "playground" => "dev" #23919 -2f85bbe615
rewrite TOhtml in lua -abe39f2b24
api: change return type of nvim_win_text_height to Dict (#24365) -7180ef6901
api: nvim_open_win: noautocmd blocks all autocmds #28192 -700cab0068
events: trigger CursorMoved later on switching window (#23711) -e4a136f713
ex_cmds: remove :behave -e5e0bda41b
lsp: add vim.lsp.status, client.progress and promote LspProgressUpdate (#23958) -5a363ccac8
lsp: deprecate trim_empty_lines -5a2536de0c
lsp: move changetracking to separate file (#26577) -58618d208a
lsp: promote LspRequest to a full autocmd and enrich with additional data (#23694) -1b9ccd38a1
lsp: rename vim.lsp.get_active_clients to get_clients (#24113) -eb1f0e8fcc
lsp: replace snippet parser by lpeg grammar -448907f65d
lsp: vim.lsp.inlay_hint.get(), enable(), is_enabled() #25512 -7caf0eafd8
lua: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440) -747264320c
mappings: remove #n as a notation for a function key (#17318) -f7da472257
options: graduate shortmess+=f flag -c3d1d9445c
options: graduate some more shortmess flags -5df4fdf253
options: make OptionSet `v:` values use typval -881d17a113
options: remove compatible behaviours for vim 5.0 and earlier -e19cc9c9b7
options: unify `set_option` and `set_string_option` -db590e96d5
startup: "nvim -l" message does not end with newline #24215 -2ca076e45f
treesitter: incremental injection parsing -f5dc453109
treesitter: new standard capture names -fc0ee871de
treesitter: remove deprecated legacy injection format -6debb18523
treesitter: remove duplicated diagnostic code (#24976) -18da6964cc
vim.iter: remove vim.iter.map/filter/totable #26138 -9b028bd64f
vim.iter: rename xxback() => rxx() #28503 -8d4a53fe6e
vim.json: remove global options, "null", "array_mt" #24070 -40ce857797
vim.ui: change open() to return `result|nil, errmsg|nil` #28612 -e0d92b9cc2
vim.ui: change open() to return pcall-like values #28502 FEATURES -------------------------------------------------------------------------------- -a66b0fdfaa
NVIM_APPNAME supports relative paths #25233 -c0beb8173f
add .luarc.json (#24592) -14b7ffcf89
add __call typing for vim.inspect() -ca7e488cfe
add link in issue template to minimal config template -4bf47222c9
add vim.text module (#26069) -0ebc4de0ff
allow opting in to builtin clipboard providers (#28083) -e8d3c4cccb
generate types and docs for v variables -29fe883aa9
ignore swapfile for running Nvim processes #25336 -28d1640dd6
improve return type annotations for vim.api.* -199a990c9e
report "build" in vim.version() #23925 -e688793253
tostring(vim.version()) -c559ab0ae6
update unicode tables (#27317) -ecdb6465e2
vim.version() returns a Version object -4b60267f82
:source: source current ft=lua buffer as Lua code (#23802) -428edcde70
api: add forward and back mouse buttons -037ea6e786
api: add nvim__redraw for more granular redrawing -ca9f6f5694
api: add nvim_tabpage_set_win (#27222) -db8fe63a93
api: add nvim_win_text_height (#24236) -16513b3033
api: allow floats to be opened in non-current tabpage (#28480) -6b4970f6e0
api: allow open_win/win_set_buf in the cmdwin in some cases -5d921e28c1
api: allow win_close in cmdwin to close wins except previous -472271199e
api: allow win_hide to close cmdwin or non-previous windows -6bba4beced
api: make nvim_open_win support non-floating windows (#25550) -b162adbb7c
api: pass 0 to nvim_get_chan_info for current channel (#27321) -42bbc4fabc
api: support abbreviations in nvim_set_keymap -98a4ed0a11
api: support getting abbreviations (#26868) -d3d7d763f3
builtin: improve types -748bc4d22d
clipboard: add OSC 52 clipboard support -db57df04b6
clipboard: enable OSC 52 clipboard provider by default (#26064) -734848dc1a
colorscheme: add semantic tokens modifiers to builtin color scheme -1e0996b572
colorscheme: update treesitter groups -73de98256c
comment: add built-in commenting -ae4ca4edf8
complete: support f flag for complete buffer part -01c51a4913
completion: support completing more string options -ae3685798d
decoration: allow conceal_char to be a composing char -30a5c28c87
decoration_provider: log errors as error messages -9711370c26
defaults: add :Inspect to right-click menu (#28181) -2613ba5000
defaults: enable 'termguicolors' by default when supported by terminal -513fc46195
defaults: improve :grep defaults #28545 -c26dc1f77c
defaults: map Q and @x to repeat in Visual mode (#26495) -8758c6fb87
defaults: set g:netrw_use_errorwindow = 0 #24179 -1d81d7a268
defaults: treat "•" as a list item prefix #24623 -20b38677c2
defaults: use ripgrep (rg) for 'grepprg' if available -61063653b0
defaults: visual CTRL-R for LSP mappings #28537 -4ee656e4f3
diagnostic: add `vim.diagnostic.count()` (#26807) -73034611c2
diagnostic: add default mappings for diagnostics (#16230) -fc6d713dd8
diagnostic: add support for many namespaces filtering in GetOpts (#28045) -5ed9916a28
diagnostic: enable(…, opts) -e780177506
diagnostic: filter diagnostics by specific severities (#24736) -b13e63db1d
diagnostic: goto functions jump to highest severity (#28490) -26765e8461
diagnostic: is_enabled, enable(…, enable:boolean) -9cb7e00b97
diagnostic: provide more control over virtual text display (#24724) -ee41153a94
diagnostic: revert default behaviour of goto_next/prev() -07b60efd80
diagnostic: specify diagnostic virtual text prefix as a function -a3b3978474
diagnostics: support numhl and linehl for diagnostic signs -0381f5af5b
diff: grouping optimization for linematch algorithm -42333ea98d
docs: generate builtin.txt (#24493) -9beb40a4db
docs: replace lua2dox.lua -1d4a5cd185
eval: exists() function supports checking v:lua functions (#26485) -4a1ad676ce
ex_cmds: no error on :lua with {range} and {code} (#27290) -c2433589dc
ex_cmds: ranged :lua #27167 -b04286a187
extmark: support proper multiline ranges -1c032ad703
extmark: window scoped extmark -68cb4a7405
extmarks: add "undo_restore" flag to opt out of undo-restoring -4e6f559b8c
extmarks: add 'invalidate' property to extmarks -c249058758
extmarks: add sign name to extmark "details" array -bbd5c6363c
extmarks: add virt_text_repeat_linebreak flag (#26625) -15e77a56b7
extmarks: subpriorities (relative to declaration order) (#27131) -f0884f21fa
extmarks: support hl_mode "combine" for inline virt_text (#24099) -372aa2eb3d
float: add fclose command -35570e4a11
float: implement footer -4200a0f167
float: support toggle show float window -1233ac467d
fold: transparent foldtext -71530cc972
folds: support virtual text format for 'foldtext' (#25209) -38b9c322c9
fs: add vim.fs.root (#28477) -e3e6fadfd8
fs: expose join_paths as `vim.fs.joinpath` (#23685) -bc67cf3ccd
gen_help_html: add anchors to help tags #25112 -b0cf9c5fee
gen_help_html: ignore pi_netrw.txt errors -81d8fce8f9
gen_help_html: non-default vimdoc.so parser -da09f9b551
gen_lsp.lua: protocol.Methods #24504 -f41496ce74
gen_lsp.lua: sort by name, handle failure #24504 -3692fd4c87
gen_lsp.lua: validate CLI args #26514 -2ff2785c39
health: checkhealth buffer can show in a split window (#26714) -4382d2ed56
health: fold successful healthchecks #22866 -d1bc6fca71
health: list attached buffers in LSP report #23561 -2877672d70
health: make :checkhealth support more split modifiers (#26731) -ddda5e0a48
help: hide filename of "gO" outline using conceal #27547 -e72c0cd920
highlight: Allow hyphens (-) in highlight group names (#24714) -986bf7e78d
highlight: add `FloatFooter` highlight group -574519d9d6
highlight: tweak default color scheme -64a14026d7
highlight: update default color scheme -a79694a08e
issue_template: instruct not to include a package manager -69ffbb76c2
iter: add `Iter.take` (#26525) -cebc00603e
l10n: update Turkish translations #24246 -fec51229c4
l10n: update Ukrainian translations (#24882) -996dd36c77
lsp: add actionable advice to lsp client quit error msg (#24510) -4ff3217bbd
lsp: add fswatch watchfunc backend -643546b82b
lsp: add handlers for inlay hints (#23736) -317c80f460
lsp: add method filter to get_active_clients (#24319) -6888607415
lsp: add more LSP defaults (#28500) -0fe86f7e24
lsp: add opts paramater to vim.lsp.codelens.refresh -131a1ee82d
lsp: add original LSP Location as item's user_data in locations_to_items (#23743) -f1775da07f
lsp: add snippet API (#25301) -db0ec84fb4
lsp: add type annotations for lsp.util.locations_to_items (#26694) -f190f758ac
lsp: add vim.lsp.buf.subtypes(), vim.lsp.buf.supertypes() (#28388) -451bc50d40
lsp: deprecate severity_limit -e9b85acfbb
lsp: enable workspace/didChangeWatchedFiles by default (#23190) -4a09c178a1
lsp: fallback to code-action command on resolve failure (#25464) -2f22ed6a00
lsp: handle multiple clients in omnifunc (#24381) -63b3408551
lsp: implement textDocument/diagnostic (#24128) -5e3cf9fb4b
lsp: improve control over placement of floating windows (#24494) -15641f38cf
lsp: include positionEncodings in default client capabilities -ddd92a70d2
lsp: initial support for dynamic capabilities (#23681) -ca5de9306c
lsp: inlay hints #23984 -350d818564
lsp: inlay_hint.is_enabled({filter}) #28523 -33e1a8cd70
lsp: map K to hover by default #24331 -97bea3163a
lsp: more annotations -37079fca58
lsp: move inlay_hint() to vim.lsp (#24130) -12c2c16acf
lsp: opt-in to dynamicRegistration for inlay hints (#24102) -a49924a318
lsp: remove notify from vim.lsp.buf_detach_client (#25140) -8149bd089e
lsp: report fswatch errors -fb54e6980e
lsp: set client offset_encoding if server supports positionEncoding -96e19533f6
lsp: set kind in select call for codelens #23889 -9af3559643
lsp: set workDoneToken in initialize request (#28182) -f736b075d3
lsp: snippet parsing using lpeg -134b9ec483
lsp: soft deprecate vim.lsp.for_each_buffer_client (#24104) -63f9c2da9a
lsp: support completion itemDefaults -3f788e73b3
lsp: support connect via named pipes/unix domain sockets (#26032) -7e36c8e972
lsp: support for choice snippet nodes -5c40f3e86a
lsp: support vim.lsp.ListOpts.loclist in location_handler() -abd2352bd8
lsp: update LSP protocol 3.18 typings to date (#28730) -cfd4a9dfaf
lsp: use treesitter for stylize markdown -d5063f4b29
lsp: vim.lsp.inlay_hint.enable(nil) applies to all buffers #28543 -c0952e62fd
lua: add `vim.system()` -9248dd77ac
lua: add hl priority opts on yank (#23509) -6425869771
lua: add meta file for vim submodules (#24525) -3734519e3b
lua: add noref to deepcopy -7c661207cc
lua: add ringbuffer (#22894) -877d04d0fb
lua: add vim.func._memoize -ab1edecfb7
lua: add vim.iter (#23029) -d675bd01b1
lua: allow vim.F.if_nil to take multiple arguments (#22903) -c379d72c49
lua: allow vim.wo to be double indexed (#20288) -e52c25b761
lua: deprecate vim.tbl_add_reverse_lookup -f1dfe32bf5
lua: enable(enable:boolean, filter:table) #28374 -5b40a1c09d
lua: implement Iter:join() (#26416) -c01e624b07
lua: more specific error messages for vim.api type checking -e1ff2c51ca
lua: pass keys before mapping to vim.on_key() callback (#28098) -2db719f6c2
lua: rename vim.loop -> vim.uv (#22846) -6c0812d92e
lua: specific error messages for type checking `opts` params -fd089c8e50
lua: typing for vim.fn.* (#24473) -302d3cfb96
lua: use callable table as iterator in vim.iter (#23957) -51c754b62e
lua: use keyset type information -8e5c48b08d
lua: vim.fs.normalize() resolves ".", ".." #28203 -7e70ca0b48
lua: vim.keycode (#22960) -9e86f473e0
lua: vim.region accepts getpos() arg (#22635) -4d04feb662
lua: vim.tbl_contains supports general tables and predicates (#23040) -48d533272e
lua-types: types for vim.api.* (#24523) -25e7299707
man: allow opening pages in current window (#27861) -08db61b19b
man: respect 'wrapmargin' when wrapping man pages (#24091) -f9944a78bc
meta: add types for vim.lpeg -deb6fd6704
msgpack-rpc: show actual request id in error message -01fe6b9e6a
msgpack_rpc: support out-of-order responses on `msgpack-rpc` -619407eb54
nvim_open_term: convert LF => CRLF (#26384) -e98decf9a6
quickfix: support -q - to read 'errorfile' from stdin (#27303) -7b0123dd6a
remote: avoid --remote-ui infinite loop (#24465) -cca6c4c698
rpc: allow empty string key in msgpack => Vim conversion -d0d4160dd1
runtime: highlight hl groups in syntax.txt (#25050) -5f4895200a
scripts: add lsp_types.lua (#23750) -4e6096a67f
server: allow embed with listen (#25709) -170c890dca
shortmess: "q" flag fully hides recording message (#27415) -d3582e102b
statuscolumn: re-evaluate for every screen line (#25885) -224f303ee5
stdlib: add vim.base64 module (#25843) -fa131de9ad
tabline: middle mouse button now closes tab (#27522) -c855eee919
term: enable reflow by default (#21124) -cd1b14f027
termdebug: improve `:Evaluate` floating window (#26621) -cffdf102d4
terminal: allow :terminal to take modifiers (#15427) -0c89854da1
terminal: close shell terminals automatically -7589336120
terminal: respond to OSC background and foreground request (#17197) -beca827212
terminal: trigger TermRequest autocommand events (#22159) -c6ec7fa8d7
treesitter: add 'injection.self' and 'injection.parent' -6cfca21bac
treesitter: add `@injection.filename` -5d8ab32f38
treesitter: add a query editor (#24703) -cb0a1a10b2
treesitter: add bash parser and queries -bb15fa0356
treesitter: add folding for `InspectTree` (#27518) -9ce1623837
treesitter: add foldtext with treesitter highlighting (#25391) -31c4ed26bc
treesitter: add injection language fallback (#24659) -28f54a7878
treesitter: add lang parameter to the query editor (#25181) -88c8803aa1
treesitter: add python parser and queries -c194acbfc4
treesitter: add query_linter from nvim-treesitter/playground (#22784) -af040c3a07
treesitter: add support for setting query depths -11844dde81
treesitter: bundle markdown parser and queries (#22481) -5e6240ffc2
treesitter: handle quantified fold captures -f69658bc35
treesitter: highlight Lua files by default (#26824) -988b472d90
treesitter: highlight help files by default (#26347) -845d5b8b64
treesitter: improve query error message -189fb62032
treesitter: improved logging (#23638) -c0b99bb1de
treesitter: show root nodes in :InspectTree (#26944) -cb46f6e467
treesitter: support URLs (#27132) -ff6092b4ee
treesitter: update Bash parser and queries to v0.21.0 -8dda630ae9
treesitter: update C parser and queries to v0.21.0 -3836eeb901
treesitter: update C queries from upstream -aca4ad430b
treesitter: update Lua parser and queries to v0.1.0 -5e875ae8d0
treesitter: update Markdown parsers and queries to v0.2.1 -8a3385dde7
treesitter: update Python parser and queries to v0.21.0 -20dcbaaaf8
treesitter: update Vim parser and queries to v0.4.0 -987dff6713
treesitter: update Vimdoc parser and queries to v2.4.0 -1384bebd5a
treesitter: update query parser to v0.2.0 -668f16bac7
treesitter: upstream query omnifunc from playground (#23394) -a478bf936b
treesitter: use 0-based indexing to show ranges in `:InspectTree` -ac8ed77afb
tui: add 'termsync' option (#25871) -4ee9e58056
tui: query extended underline support using DECRQSS (#28052) -b4b7ca2d54
tui: support DCS responses in TermResponse event (#26061) -622ae2f53e
tui: support Super and Meta modifiers (#24357) -a142670360
tui: support undercurl in WezTerm (#28037) -56627ca242
tui: use TermResponse event for OSC responses (#25868) -32b49448b2
tutor: add Japanese tutor #27268 -9c2270b834
types: add `test/.luarc.json` -d3a8e9217f
ui: add chdir UI event (#27093) -6ea6b3fee2
ui: add support for OSC 8 hyperlinks (#27109) -b72931e704
ui: allow non-zero 'cmdheight' with ext_messages -2615ed879e
ui: allow to get the highlight namespace -e38027ef69
ui: completeopt support popup like vim -2e4e12756a
ui: indicate margins for the area used by win_viewport -efa9b299a7
ui: inline virtual text -dacd34364f
ui-ext: make 'mousehide' into proper ui_option (#25532) -43ded8d358
version: unverbose ":version", ":verbose version" #24195 -0a598c13b1
vim.deprecate: only issue warning if neovim version is high enough -a767c046f4
vim.iter: add Iter:flatten (#26786) -af6e6ccf3d
vim.ui: vim.ui.open, "gx" without netrw -fa4b02fa67
vim.version: add `vim.version.le` and `vim.version.ge` -27a566f3f8
vimdoc: support Markdown code blocks (#25127) FIXES -------------------------------------------------------------------------------- -f5573fba3d
Remove nested for_each_tree in TSTreeView (#26328) -ae28ef327e
adjust error message for error in UI event callback (#28200) -ebe489d8f0
allow multiline message for echoerr (#25380) -592bc831ce
avoid ui_grid_cursor_goto when drawing window separators -d6483793e1
buffer overrun in lmpack_session_receive -3bbb0aa399
checkhealth warning even if init.lua exists #25306 -5cb906e91c
correct versions in deprecation warnings -118fd8367c
deduplicate gen_cflags -eb4676c67f
disallow removing extmarks in on_lines callbacks (#23219) -6e9b204afb
doc errors -77d3526a3d
explain that user should run nvim with -V1 to see more information -fd791db0ec
fix ASAN errors on clang 17 (#25469) -bb38c066a9
fix compiler warning from clang -478273a423
fix iter_matches call in query linter (#27496) -bb7324292c
flush UI state before blocking in vim.wait (#25938) -44d4ae448d
function was renamed (#23772) -1dd700a8d9
gf fails on "foo/bar.txt:1:2" on Windows -6e703f778f
handle argv not present in nvim_get_chan_info -56dc8b9212
heap-buffer-overflow in file_name_in_line -74b2f6c3d9
ignore non-existent properties during header generation -f5a09f1b03
invoke changed_bytes when rewriting <Tab> char #25125 -b8273c9a33
lua annotations -69d49727d7
luacheck -4ce3159e24
missing case in setxattr error handling (#26176) -41fb98d6fa
move fswatch linux check inside of vim.schedule (#27824) -ba58c6f8a4
only attempt to close timer if not already closing (#26047) -b400b947f3
prevent child processes from inheriting ui channel file descriptors -99b8a343e1
quick update, squash later -83b51b36aa
raise TS min version -a090d43d61
splitting of big UI messages -2424c3e696
support UNC paths in vim.fs.normalize -43e76cc346
tostring(vim.version()) fails if build is NIL #24097 -8c7a8be274
transposed xcalloc arguments (#28695) -35f453f65d
type warnings in shared.lua -f112ac73bd
unreliable "checkhealth completions" test -b32b5b2711
use BEL to terminate OSC 11 request (#26335) -d95e3a4c9c
use no_ff instead of ffdos as condition -a1bec02c1e
use snprintf instead of sprintf -ca887b80a9
version-range < and <= #23539 -c1ee187f82
vim.loop in luv threads (#23924) -fe4583127f
vim.validate() order is not deterministic #28377 -be8b15200d
windows timeouts have exit code 1 -1f8fb7c000
:let: fix error when applying operator to boolean option (#24030) -5a3752889c
NVIM_APPNAME: show error message if $NVIM_APPNAME is invalid -c4ad15ae32
PVS/V009: add top-level message -128e194f64
PVS/V1001: variable is assigned but is not used -1bbbca267d
PVS/V547: expression is always true/false -592e4472da
PVS/V564: the '|' operator is applied to bool type value -30d311ebcf
PVS/V592: expression is enclosed by parentheses twice -3ecd45ded0
api: allow negative column arguments for nvim_buf_set_text (#23501) -3ac952d4e2
api: avoid assertion when autocmd group id is 0 (#23210) -b2a8a93147
api: avoid immediate TextChanged with nvim_create_buf (#25492) -ef7ae66eef
api: avoid integer truncation -b1e24f240b
api: avoid open_win UAF if target buf deleted by autocmds -0a81ec14a4
api: better topline adjustments in nvim_buf_set_lines -c18f3cfcdb
api: crash after nvim_win_set_config title/footer validation error (#26606) -aa4e47f704
api: disallow some more functions during textlock -22d9338afc
api: disallow win_set_buf from changing cmdwin's old curbuf (#24745) -da979ae04b
api: do not re-apply win_config.style when missing -344906a08f
api: do not update grid position in nvim_win_set_cursor (#28235) -22205f36a6
api: don't change title when setting buffer in a window (#23492) -711a2f5ff6
api: don't leak memory with nvim_win_get_ns (#27570) -1cf51a07a6
api: don't set coladd of mark (#26648) -5fd1bac65e
api: don't use stl 'fillchar' for "use_statuscol_lnum" (#27501) -a3751f5de2
api: dont change curwin for nvim_win_set_height -1ff4562502
api: dont change curwin for nvim_win_set_width -59fed8bb64
api: extmark highlight groups not always included in details (#23179) -9b9030ff2c
api: fix inconsistent behavior of topline touched in recent refactor -fc2a56fe61
api: fix set_lines viewport adjustment, but this time good -b7763d7f6b
api: get virtual text with multiple hl properly (#25307) -b3be7b7413
api: handle NUL in nvim_err_write() and nvim_out_write() (#25354) -132bbd1cbd
api: handle clearing out last line of non-current buffer -d942c2b943
api: handle win_split_ins failure properly -5cfdaaaeac
api: ignore 'autochdir' when renaming other buf (#28376) -2fc2343728
api: ignore 'autochdir' when setting buf in other win (#28371) -7367838359
api: limit depth of nvim_cmd (#27225) -0da27e9bde
api: load buffer first on nvim_buf_set_lines (#25823) -4e5c633ed4
api: make getting explicit empty hl in virtual text work (#28697) -d05d63a18f
api: make nvim_get_hl not return non-existing groups -a70eae57bd
api: make open_win block only enter/leave events if !enter && !noautocmd -5d58136ccc
api: make open_win/win_set_config check if splitting allowed -4ec8fd43bf
api: make width/height for split by nvim_open_win work (#28341) -b1577d371a
api: make win_set_config with "win" for splits need "split/vertical" -0330dd9e69
api: mark nvim__complete_set as experimental #28579 -d22172f36b
api: more intuitive cursor updates in nvim_buf_set_text -b051b131f5
api: nvim_buf_get_offset in a new buffer with zero or one lines -e0453d7f57
api: nvim_cmd{cmd="win_getid"} parsed as :winsize #24181 -6091df6b7a
api: nvim_create_buf assert fails if autocmds set &swapfile -d5c23d72a5
api: nvim_create_buf leaks memory if buffer is loaded early -b7708eac24
api: nvim_get_hl should return default flag -a741c7fd04
api: nvim_parse_cmd error message in pcall() #23297 -e55a502ed4
api: open_win fire Buf* events when !enter && !noautocmd if entered early -a873f33993
api: open_win fire BufWinEnter for other buffer when !enter && !noautocmd -e7c262f555
api: patch some cmdwin/textlock holes -a9968912b7
api: redundant error when using `nvim_cmd` (#24010) -dbcba26bf1
api: revert unintended change of optional bool params -b25753381c
api: set script context when using nvim_set_hl (#28123) -d3ea9a04bc
api: update "w_scwidth" in nvim_eval_statusline() -c971f538ab
api: update grid cursor in nvim_win_set_cursor() -130cb4815a
api: use a conditional stack for nvim_cmd (#26341) -cf9f002f31
api: use correct buffer for "range" in nvim__redraw (#28614) -77118d0da8
api: use text_locked() to check textlock -bcb70eeac4
api: win_set_config autocmds crash when moving win to other tabpage -233649bc75
api: win_set_config fires unnecessary autocmds -b52d15853e
api: win_set_config set tp_curwin of win moved from other tabpage -54022a2946
api: win_set_config update statuslines after removing splits -a9cd8467cb
api: wrong nvim_buf_set_extmark error for invalid hl_mode -4d3a38ac07
api, lua: handle setting v: variables properly (#25325) -92760a7f42
api, lua: make blank lines in a message work properly (#24244) -08fc1ebbaa
api/buffer: fix handling of viewport of non-current buffer -24e3ee9d07
api/options: validate buf and win -139e6f68f9
autocmd: API functions accept garbage after event name #25523 -02d00cf3ee
backup: E1509 when writing extended attr to symlink (#28014) -746a153bc1
base64: only check padding if leftover index is set (#25854) -533e01a75b
base64: properly handle embedded NULLs when decoding (#28349) -095bd8d0f8
buffer: do not filter help buffer -e5d9b15044
buffer_updates: correct buffer updates when splitting empty line -11865dbe39
build: better deps for doc -ffaf74f147
build: distinguish vim.mpack from global require'mpack' -f9416470b1
build: include FindPackageHandleStandardArgs -ade42d531b
build: teach cmake about vvars -da7178cbbf
builtin: fix incorrect optional fields for fn.sign_define -6fa0f303d7
builtin: parameter mismatch between winsaveview and winrestview -3159a2c28f
change: update fold after on_bytes (#26364) -342c7da4bd
channel: use os_write() instead of fwrite() for stderr (#26689) -cd6458123f
charset: fix wrong display of 0xffff (#24158) -603f3b36a4
checkhealth: error in node.js check #28348 -b0978fca6b
checkhealth: fix crash due to incorrect argument type -7f94a032e1
checkhealth: shell_error and cpanm module -bfdec5b0e7
clang: null pointer dereference in parse_msgpack #25389 -1027ccac6d
clangd: check size of array before applying qsort on it -cdd8017469
clangd: set block pointer to null in case map is empty -6851b265ba
clipboard: don't pass --foreground to wl-copy (#25481) -c3de6524a5
clipboard: ignore exit caused by signal #23378 -3128cff6b1
clipboard: increase OSC 52 wait timeout (#25936) -46ceefb52b
clipboard: make getreg() accurate for clipboard registers (#26740) -d2983dcdb1
clipboard: make osc52 work with PUC Lua (#26014) -e51e524175
cmake: restore previously undocumented workround, now documented -3688735c2b
cmdline: don't redraw 'tabline' in Ex mode (#24123) -c72d877c33
cmdline: wrong 'incsearch' highlighting after :redraw (#27947) -bc67bbe446
codelens: add buffer and line checks before displaying codelens (#23887) -2b1a6e7597
colorscheme: add missing LSP groups -0c850add3e
colorscheme: default statusline groups usability #26921 -8b23653695
colorscheme: link LSP semantic tokens to treesitter groups -62e0e0349c
colorscheme: try .lua files in 'rtp' before .vim files in 'pp' (#23727) -eca72def1f
colorscheme: typo -d4bd6b1eaa
colorscheme: use explicit normal foreground in syntax groups -3c724fe1f3
column: 'statuscolumn' not drawn after virt_lines with "n" in 'cpo' (#22967) -cdc028e97d
column: add truncated width during estimation for 'statuscolumn' -e89071522c
column: always set b_signcols.max -c126a3756a
column: apply numhl signs when 'signcolumn' is "no" (#26167) -2ded2e75f4
column: avoid exceeding configured 'signcolumn' width -b50fdcba4a
column: clear "b_signcols" before moving saved marks -13d50c3b13
column: clear "b_signcols" when marktree is cleared -ec74538044
column: correct width after truncated 'statuscolumn' error (#26737) -2bdef6dd2a
column: don't overflow sign column with extmark signs (#23854) -bab4bcdefb
column: don't reset 'statuscolumn' width after it has been drawn -c509f4907b
column: fill 'statuscolumn' clickdefs with evaluated width (#26891) -25e62697c3
column: fix wrong cursor with 'statuscolumn' and cpo+=n (#24268) -dbf6be296d
column: full redraw with 'stc, 'rnu' and inserted lines (#27712) -7d0a23973b
column: handle unprintable chars in 'statuscolumn' (#24198) -0db6946b39
column: handle w_redr_statuscol at end filler lines (#27365) -97122eaa1c
column: ignore empty signcols range (#28177) -967c7abde3
column: keep track of number of lines with number of signs -f871fee8b6
column: pass kFalse when initializing "b_signcols.count" -44d4f03573
column: rebuild status column when sign column is invalid -c6864b0d14
column: redraw 'statuscolumn' on wrapped lines with 'relativenumber' -35cec0de4a
column: redraw and update signcols for paired extmark -d88814ef68
column: remove sign from line it was previously on with undo -df399ea0d2
column: reset decor state before starting from top -5a4e0b837f
column: use a single path for sign sorting (#27431) -a878e02d5d
column: use maxwidth to allocate/fill 'statuscolumn' click defs #24190 -783b0aba41
completion: check that healthcheck name is string (#28458) -fbeef0d4ef
completion: don't add backslashes to runtime pattern (#24296) -cdc8bacc79
completion: filter results with complete+=f (#26029) -af8500af64
completion: improve popup window position (#26739) -d1b2a5cf5f
completion: make sure the buffer name is valid (#25975) -e9b9a86cd5
context: don't crash on invalid arg to nvim_get_context (#25977) -fdaf6bc557
context: don't leak memory on multiple invalid objects (#25979) -55be4a4e26
coverity: dead code #25562 -6d698c86d0
coverity: unhandled retval for marktree_itr_get_overlap() #26518 -6f49ed58c3
coverity/348240: memory leak in put_view() -9d48266bed
coverity/471380: null dereference in get_local_additions() -ae48d965d7
coverity/477623,477624: guard null pointer dereference in kv_concat_len (#27022) -2b0acacb3c
decor: allow adding providers during redraw -5ca330859c
decor: check decor kind before accessing union field (#27205) -60d320dea3
decoration_provider: don't leak memory on error (#24410) -65738202f8
decorations: better approximation of botline #24794 -2accf24805
decorations: crash with revised mark with changed decoration flags -a0e9ef09d7
decorations: do not apply sign highlight id as range attr id -fba17d5b88
decorations: fix imbalanced sign count -444f37fe51
decorations: incompletely displayed line should also get decorations -dc48a98f9a
decorations: validate botline for on_win -328a237351
defaults: auto-close terminal for &shell with args (#28276) -5aa1ba3efe
defaults: background detection in tmux (#26557) -5e98439f6d
defaults: diagnostic mappings descriptions #28646 -ccb5a76e5a
defaults: don't use nvim_feedkeys in default mappings (#24520) -85cb0b0ddc
defaults: make terminal autoclose not block other events (#27581) -aa1d0ac095
defaults: only repeat macro for each selected line if linewise (#28289) -eef2aedff6
defaults: remove tmux background detection passthrough (#27571) -5b45efbee6
defaults: set 'fsync' #26034 -8df3742378
defaults: use augroup for default autocommands (#26933) -a8e4ee2f2b
defaults: validate 'channel' before responding to OSC request (#27594) -6318edadc3
defaults: visual hash (#) on text with "?" -abd380e28d
defaults: visual mode star (*,#) is fragile -b9a0e762f1
defaults: visual star (*) on text with "?" -9b4b23493d
defaults: wait until VimEnter to set background (#26284) -72e3d8c3f9
deps: bump luv to 1.48.0-2 -87db6d894a
deps: make sure --force-config takes effect -7aad4643f9
deps: remove stray conflict marker -8a6716682e
deps: restore functionality of USE_EXISTING_SRC_DIR -d4dc884012
deps: restore functionality of USE_EXISTING_SRC_DIR -d272143318
diagnostic: always return copies of diagnostic items (#25010) -29d5ff6ac4
diagnostic: check for sign namespace instead of sign group -3d8f0cb695
diagnostic: check if delete failed in `qf_fill_buffer()` (#25932) -89ffdebd20
diagnostic: fix typing on field |diagnostic-severity| -83635e4e3d
diagnostic: get border from config (#28531) -96f59e1b99
diagnostic: invalid col number compare in next_diagnostic (#28397) -ad76b050eb
diagnostic: open_float on multi-line diagnostics #28301 -37011bc45e
diagnostic: rename buffer → bufnr in type annotation (#23042) -50284d07b6
diagnostic: typing -a4fc3bb0e6
diagnostic: vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273 -add1b10b79
diagnostic: virtual_text prefix function should have index and total (#25801) -35f475d0a5
diagnostics: if buffer not loaded, skip handlers that set extmark (#25628) -5a25dcc5a4
diff: filler lines for hunks bigger than linematch limit (#24676) -2f9ee9b6cf
doc: improve doc generation of types using lpeg -c4417ae70c
doc: prevent doxygen confusion -67f5332344
docs: clean up non-docstring comments for vimdoc gen -ae7020c667
docs: fix TSNode incorrect signatures -ab65a98adb
docs: ignore_invalid #24174 -f40df63bdc
docs: make lines not overflow in vim docs -0a90e4b05a
docs: match DocSearch style with site theme -0d149bb186
docs: the runtimepath is not the runtime path -957d05d16b
docs: too much whitespace around <pre> blocks #24151 -d931b829e9
docs: vimdoc syntax errors -036da0d079
docs: vimdoc syntax errors -17c59e417f
docs: vimdoc syntax errors -34b57508a7
drawline: check filler_todo in place of removed draw_state (#27889) -455bca1ba8
drawline: combine extmark highligh with area hl correctly -3299797150
drawline: consider position in linebuf for foldcolumn (#26803) -889f81c65f
drawline: don't invoke on_line for filler line (#28219) -2b9d3869f8
drawline: don't use temporary "v" variable when not needed (#26777) -06694203e5
drawline: fix missing Visual hl on double-width fold char (#24308) -d5488633f6
drawline: initialize linebuf_attr to 0 instead of -1 (#27840) -e9280a68f7
drawline: initialize variable -2819718873
drawline: initialize variable -36941942d6
drawline: inline virt_text hl_mode inside syntax/extmark hl (#24273) -37b73cf14b
drawline: make cursorlineopt=screenline work with resized grid -be1d09c427
drawline: missing NUL termination when drawing TAB (#27307) -5b31447811
drawline: update prev_ptr after getting syntax attrs (#27072) -14839c5d18
edit: backspace adds extra spaces for inline virtual text (#28005) -267e90f31d
edit: don't go to Terminal mode when stopping Insert mode (#27033) -b2e8c0df20
edit: fix K_EVENT interfering with 'digraph' (#24258) -143a178332
editorconfig: add missing root validation (#23462) -cbbda3bcd7
editorconfig: check that buffer is valid (#23922) -abb8c2c453
editorconfig: do not set 'endofline' -df2f5e3912
editorconfig: highlight properties with dashes (#24407) -dc45fb4655
editorconfig: only warn once on errors -cdbc3e3f3e
editorconfig: syntax error regression -bf0c69e504
eval: correct failure return value for readfile/blob (#27722) -5b312cd5f6
eval: make has('pythonx') work properly (#27739) -0e4086b741
eval: prevent double-free in garbage collection (#22990) -12d123959f
eval: properly support checking v:lua function in exists() (#27124) -b8c34efe33
eval: skip over v:lua properly (#27517) -ad2fad9a3b
event-loop: flush UI when no input is available (#25728) -6725565258
event-loop: process input before events (#27358) -58a1ef8e6a
events: avoid unnecessary CursorMoved (#24675) -bf9e92c81c
events: check for WinResized/WinScrolled in terminal mode (#27226) -dd24ea8195
events: don't expand non-file as file name -774a32e5fe
events: null dereference in autocmd functions -a8cfdf43bc
events: trigger VimResume on next UI request (#24426) -a114a21eff
ex_getln: initialize pointer with NULL -9e7c4fe579
exception: remember whether message is multiline (#25351) -4a098b97e5
excmd: append original command to error message -75d9c413d4
excmd: make :def unknown rather than unimplemented (#23150) -f1dd75c2af
exitfree: don't use ex commands to close windows in free_all_mem() -79a558277b
extmark: fix crash when stepping out from internal node -a78fd18ed9
extmark: fix cursor position with both left and right gravity inline text -320e9c1c21
extmark: only invalidate unpaired marks on deleted rows -8e97edb93f
extmark: restore extmarks when completing original text -2d33a766a1
extmarks: `U` changed_bytes after extmark_splice (#26501) -23c21e7630
extmarks: account for rightleft when drawing virt text (#25262) -d54156ed08
extmarks: blending space shouldn't overwrite wide char (#26960) -54225bdb02
extmarks: crash with sign after many marks -65b1fd00a7
extmarks: do not remove decor from invalid old marks -437d35dbf7
extmarks: do not remove invalid marks from decor upon deletion -a05bbc60ea
extmarks: don't position overlay virt_text halfway a char (#24027) -4dd43e31db
extmarks: don't show virt lines for end mark (#23792) -dfa8b582a6
extmarks: draw TAB in virt_text properly with 'rl' (#25381) -a6e4793baf
extmarks: draw virt_text below diff filler lines properly (#25170) -958cc22836
extmarks: empty inline virt_text interfering with DiffText (#24101) -0534ad8ca5
extmarks: empty inline virt_text interfering with Visual highlight -31a51acdc3
extmarks: fix heap buffer overflow caused by inline virtual text (#23851) -9c41a81dec
extmarks: fix virt_text_hide off-by-one hiding (#23795) -a6dd67f5b6
extmarks: fix virt_text_hide with 'nowrap' and multibyte (#23757) -818d7f6daf
extmarks: fix win_col virt_text drawn on wrong screen line (#25264) -c4df2f08b6
extmarks: fix wrong highlight after "combine" virt_text (#24281) -b65cd7ff1a
extmarks: fix wrong virt_text position after wrapped TAB (#25168) -4c7cec4e29
extmarks: handle inline virt_text with empty chunk (#24005) -ee3d4f6b90
extmarks: handle overwriting right half of wide char (#26951) -f4f1ce1d16
extmarks: hide inline virt_text properly with 'smoothscroll' (#24106) -34a786bc49
extmarks: inline virt_text support multiple hl groups (#25303) -5a6c7c805b
extmarks: make empty "conceal" respect &conceallevel = 1 (#24785) -510e1f131b
extmarks: make right_align and win_col work on wrapped line (#23759) -215244f749
extmarks: missing "spell" and "conceal" in details (#27116) -35e50d79c6
extmarks: overlay virt_text position after 'showbreak' (#25175) -a0790558c3
extmarks: priority order of inline and non-inline virt_text (#27532) -b52bd8a2de
extmarks: properly handle virt_text on next screen line (#25166) -a376d979bd
extmarks: redraw line on adding/removing conceal (#27463) -2d9e063a63
extmarks: redraw pre-undo position (#27437) -2137edbd4f
extmarks: redraw properly with scoped inline virt_text (#27569) -1cc358aed6
extmarks: restore old position before revalidating -0818d65528
extmarks: skip virt_text if it is out of window (#25658) -19d63563e1
extmarks: splice earlier when opening new line (#28108) -362df0f793
extmarks: wrong display when changing text with virt_lines (#24879) -d5a85d737a
f_wait: flush UI before blocking (#25962) -81f67b79e8
file_search: path with spaces in finddir() and findfile() (#25493) -a69c720639
fileio: fix off-by-one in rename_with_tmp (#27780) -c6c21db82b
filetype: add typing and dry (#24573) -020d1f626a
filetype: call on_detect before setting buffer filetype -fdf5013e21
filetype: correctly detect bash-fc-{id} files as "sh" -d6f406db45
filetype: don't use fnamemodify() with :e for extension (#27976) -670c7609c8
filetype: make sure buffer is valid before call nvim_buf_call (#24922) -af38b46a25
filetype: return on_detect function when matching by file contents -2955c921ce
filetype: use unexpanded file name (#27931) -e32af31ee8
flake: clang-tools moved to nativeBuildInputs (#26955) -fd08fd3de3
float: add fixd option -884470124d
float: allow floating window in cmdline area -9ecb43b637
float: apply 'winblend' to title/footer highlight (#25999) -898371fc9f
float: don't relative flaot win itself -fcdfbb4303
float: fix some other crashes with :unhide or :all (#25328) -3ea124a8d9
float: improve error message when reconfig failed (#25076) -c5abf487f1
float: make "fixed" work with relative=win (#25243) -03e8b5fc91
float: make bufpos work properly with resized parent grid -437ed3cee2
float: trigger winnew event when float window create -f5953edbac
float: update position of anchored windows first (#25133) -9de157bce4
float: win_get_bordertext_col returning negative column number (#25752) -5f18dd3013
float: wrong position when bufpos is set -0e01e81552
folds: allow overlay virtual text on folded line (#23892) -ee986ee044
folds: combined Folded and Visual highlights (#23752) -ded01a819a
folds: don't show search or match highlighting on fold (#24084) -811140e276
folds: fix missing virt_lines above when fold is hidden (#24274) -678548a2b4
folds: show Folded highlight in Visual selection (#23741) -58f9486144
folds: update folds in Insert mode with fdm=indent (#24402) -38e38d1b40
fs: allow backslash characters in unix paths -8a7e3353eb
fs: make `normalize()` work with '/' path (#24047) -ae5095cac9
fs: use generics for better typing -e4da418ba8
fs.lua: normalize slash truncation (#23753) -06fcf71bd0
fswatch: --latency is locale dependent -502a7a0558
ftplugin: respect runtimepath ordering -03a2c5b772
ftplugin: source Lua files after Vimscript files per directory (#23801) -be5cf33836
gen_help_html: type warnings, spell_ignore_files #27254 -6c35fb421e
gen_lsp.lua: improve type name, and fix wrong type inheritance -214b125132
gen_lsp.lua: no notifications in lsp.Methods #24530 -765729a145
gen_vimdoc: INCLUDE_DEPRECATED not generating docs for deprecateds -ccf328172b
gen_vimfn_types: don't include tag before signature's line (#24492) -86c9d8b53c
gen_vimvim: correctly add aliases to vimAutoEvent (#23429) -240c41e1af
genvimvim: add special abbreviations of :delete (#23172) -51ea753747
genvimvim: generate prefixed boolean options properly (#27487) -9f32deba56
grid: add start column when getting char on line (#25627) -4ed1c2a8af
grid: don't draw beyond max column (#26172) -9c202b9392
grid: handle clearing half a double-width char (#27023) -6a486c44e6
gx: move to to _init_default_mappings #24420 -67b2ed1004
gx: visual selection, expand env vars -e39b6d0c52
health: "attempt to concatenate nil" -7ffe450173
health: check for _host_prog variables properly (#23014) -50cd5ed360
health: check more "old" files -f6dcc464f2
health: check unmatching python_glob as empty table (#28215) -6818ba271c
health: clients may not support watchfiles #28710 -03a021f378
health: combine python and virtualenv healthchecks (#23004) -c67efe3a9c
health: correctly expand and resolve PYENV_ROOT (#26953) -88eb0ad149
health: fix tmux RGB capability detection (#26886) -cde4892b49
health: fix typo in function name -63a17322dd
health: improve python executable check error handling (#26954) -ba88fd886a
health: malformed call to warn() #26217 -8c6f97bef8
health: properly use the value of $PYENV_VERSION (#23109) -c8ebb04e92
health: replace healthFoo with DiagnosticFoo (#23475) -843c1bed95
health: stop job properly on timeout (#23877) -96d0c709b6
healthcheck: expand vimrc variable (#28379) -4229bbe514
helptags: make multibyte help tags work properly (#23975) -7b6d041bae
heredoc: allow missing end marker for scripts -a2f17e97ec
highlight: add `FloatFooter` to 'highlight_defs.h' (#25577) -837f268093
highlight: add `Nvim{Light,Dark}Gray{1,2,3,4}` colors -8afb3a49c0
highlight: add create param in nvim_get_hl -f8ea49cfe1
highlight: add force in nvim_set_hl -4ce0ada0d4
highlight: add missing g: prefix for colors_name (#22952) -03ca36d1f8
highlight: apply 'winblend' to NormalNC (#23555) -6c3e170e56
highlight: apply 'winblend' to float border (#25981) -d4872377fe
highlight: attr set all when normal attr changed -dcaf207336
highlight: combine ColorColumn with low-priority CursorLine (#23017) -66925f14de
highlight: consistently spell "Goldenrod" -5183651773
highlight: correct hi command output -ca7dd33fa7
highlight: don't show CursorColumn on current line (#27848) -59289fb987
highlight: make CurSearch work properly with 'winhl' (#24448) -b11a8c1b5d
highlight: remove unnecessary assignment to char_attr for 'spell' (#23713) -9a2c98087b
highlight: update `IncSearch` to link to `CurSearch` -ab92575753
highlight: winhl receive wrong argument -b60a2ab4cb
inccommand: block errors when parsing command line again (#24374) -bc5b0da84e
inccommand: don't crash with "split" and 'n' flag -382ea4d402
inccommand: don't preview in Ex mode (#26587) -c1c2a1b5dd
inccommand: don't save information of a buffer twice (#24501) -ef44e59729
inccommand: don't set an invalid 'undolevels' value (#24575) -ba9f86a9ce
inccommand: improve preview buffer number handling (#27087) -643bea31b8
inccommand: restrict cmdpreview undo calls (#24289) -1dba570e63
inccommand: save and restore '[ and '] marks (#26442) -35ffe58ea4
inccommand: update topline after moving cursor (#27341) -a14c780918
input: set termkey buffer size to read stream capacity -b61575ba70
intro: clear intro if new buffer is shown in focused float -9530a23016
intro: link showing intro to state at start -0570a19c8a
intro: make intro explicitly stateful -d1a30221fc
intro: redrawing intro exposing pseudo-randomness -21360523cd
intro: still show intro message with floating window -6b96122453
iter: add tag to packed table -2ee8ace217
iter: make pipeline termination conditions consistent (#24614) -9489406879
iter: remove special case totable for map-like tables -57ccd82417
job-control: fix use after free (#25223) -1c71c32b29
job-control: make jobwait() flush UI after hiding cursor (#25927) -e057b38e70
json: allow objects with empty keys #25564 -af6537bc66
jumplist: Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461 -017ff93b02
keycodes: recognize <t_xx> as a key (#24700) -6709f7f8f1
keycodes: simplify S- properly when D- is present (#27316) -4447cefa48
l10n: update Japanese translations (#27856) -7d17ab5b6f
l10n: update Ukrainian translations (#26819) -908843df61
languagetree: apply `resolve_lang` to `metadata['injection.language']` -e353c869ce
languagetree: don't treat unparsed nodes as occupying full range -6b5f44817e
languagetree: remove double recursion in LanguageTree:parse -f5530bf566
linematch: initialize array -766f4978d6
lint: lint warnings #24226 -5465adcbab
lint: use tbl_contains -0804034c07
loader: cache path ambiguity #24491 -89135cff03
loader: remove cyclic dependency on vim.fs (when --luamod-dev) -66c66d8db8
loader: reset hashes when running the loader -ec80e4cb4d
log: increase size of buffer for nvim instance name -4d0f4c3de9
lsp: E403 if doc contains multiple codeblocks #24458 -20c331915f
lsp: SignatureHelp docstring is not escaped #16702 -01691c5447
lsp: abort callHierarchy on no result (#28102) -9abced6ad9
lsp: account for border height in max floating popup height (#25539) -3e016fa8d4
lsp: actually send diagnostic-tags back to the server -37d8e50459
lsp: add "silent" option to vim.lsp.start (#28478) -2e1f5055ac
lsp: add assertion for explicit bufnr in apply_text_edits (#27614) -542c910a1d
lsp: add missing LSP semantic token highlight links -be5e361154
lsp: add param assert in client_is_stopped (#23857) -ac0e8323dc
lsp: add parentheses to generated union array types (#27560) -0fcbda5987
lsp: add snippet regression test (#27618) -e42fdaad21
lsp: add spacing for inlay hints separately #24079 -48bcc7b971
lsp: advertise workspace.didChangeConfiguration capability (#26028) -c07dceba33
lsp: allow Lua pattern chars in code action filter (#24041) -3bf887f6e0
lsp: always return boolean in lsp.buf_client_attach (#24077) -966eb8e0b3
lsp: announce publishDiagnostics.dataSupport (#24442) -39fc340276
lsp: avoid assertion when `client_hints` do not exist (#28461) -47dbda97d2
lsp: buffer messages until connected to server (#28507) -adbe7f3683
lsp: call `on_list()` even for single location (#25830) -15983cf2c6
lsp: cancel session when leaving snippet region (#25762) -816b56f878
lsp: cancel watchers when closing a client -9b8a075539
lsp: change `silent` in lsp.start.Opts to optional (#28524) -d3e0352574
lsp: check if inlay hints are enabled for a buffer before disabling (#24074) -fa9a85ae46
lsp: clean up duplicate and unused meta type annotations -8bd6f7c20b
lsp: clear codelens on LspDetach (#24903) -97c0a52416
lsp: correct deprecation message #28403 -aa62898ae3
lsp: correct the error message's cmd on spawning (#27632) -77a9f3395b
lsp: create codelens request parameters for each buffer (#27699) -9281edb334
lsp: create per client params in lsp.buf.code_action -39cc38a87b
lsp: defer writing error msgs (#27688) -1b679ac192
lsp: define LspInlayHint highlight group #24073 -dc8c086c7e
lsp: directly rename the existing buffers when renaming (#27690) -c1a95d9653
lsp: disable didChangeWatchedFiles on Linux -2fde6295df
lsp: display initialization errors (#25409) -94127cb5df
lsp: do not add extra indentation -cc87dda31a
lsp: do not assume client capability exists in watchfiles check (#24550) -0fe0cf5ada
lsp: do not cancel snippet when selecting placeholder (#25835) -073035a030
lsp: don't register didChangeWatchedFiles when capability not set (#23689) -5eee633c97
lsp: don't start additional client if attach failed (#28744) -21fa19f3e8
lsp: don't use hl_mode = combine for inlay hints #24276 -96b94f8d77
lsp: duplicate on_detach, on_reload callbacks #24067 -b95b6ed975
lsp: empty commands should not be considered executable (#28216) -c3c673cdec
lsp: enable() does not activate inlay hints on open buffers #28629 -b2c26a875b
lsp: ensure buffer is not attached more than once -fa0a25dcb3
lsp: error in reset_timer on second detach #24117 -72e64a1afe
lsp: extra "." when completing with tsserver #24646 -031088fc0a
lsp: filetype matching to documentSelector in dynamic capabilities (#25425) -d191bdf9d5
lsp: fix attempt to call non existent function (#24212) -dd3fa64573
lsp: fix dynamic registration of code actions (#23826) -ce4ea638c7
lsp: fix incorrect typing and doc for `vim.lsp.rpc` -f487e5af01
lsp: fix infinite loop on vim.lsp.tagfunc -74bd4aba57
lsp: fix multi client handling workspace_folder methods (#18839) -5e5f5174e3
lsp: fix off-by-one error for omnifunc word boundary -ba6761eafe
lsp: fix omnicomplete in middle of the line (#25787) -075a72d5ff
lsp: fix relative patterns for `workspace/didChangeWatchedFiles` (#23548) -840e1864c2
lsp: handle NUL bytes in popup text (#25612) -345bd91db2
lsp: handle absence of a trailing newline #25194 -0e9a33572d
lsp: handle adjacent snippet tabstops -853f647da6
lsp: handle reverse lookup in capabilities -91f67fabe6
lsp: handle stale bufnr on LspRequest autocmd trigger (#24013) -849d82b80b
lsp: handle stale bufnr on LspRequest autocmd trigger (#27981) -2eecb1b85d
lsp: highlight active parameter in signature help #25663 -e55e80d51c
lsp: inlay hints: "Failed to delete autocmd" when closing buffer #24469 -7968322e7a
lsp: inlay_hint nil reference error #24202 -ba8f19ebb6
lsp: lint warnings, default offset_encoding #24046 -3304449946
lsp: log unknown diagnostic tags instead of showing a warning (#25705) -251ca45ac9
lsp: markdown code fence should allow space before info string #24364 -add7e106d5
lsp: noisy warning about offset_encodings #24441 -c235959fd9
lsp: only disable inlay hints / diagnostics if no other clients are connected (#24535) -1dacf2ecee
lsp: prevent code-lens refresh from becoming a permanent no-op (#28228) -597ecf7516
lsp: re-add client.commands and mark private -94a904b453
lsp: reapplying already-applied hints #24114 -4ecc71f6fc
lsp: reduce diagnostics and add more types (#23948) -bc7f86209d
lsp: redundant vim.snippet.jumpable #28560 -ee156ca60e
lsp: refactor escaping snippet text (#25611) -2ecba65b4b
lsp: remove unknown LSP protocol property (#24345) -7311958e12
lsp: remove unnecessary file load/write when renaming (#27621) -e14e750998
lsp: rename LspProgress data.result => data.params #28632 -f0e61e6d92
lsp: rename fails on missing parent directory #27291 -b413f5d048
lsp: rename undofile when renaming (#27684) -d09957e0a0
lsp: rename: load and list new buffer if attached to window (#27408) -7668f89d5b
lsp: replace @private with @nodoc for public client functions (#24415) -52823616bc
lsp: replace bug-prone ternary operation #28627 -5282d3299c
lsp: restore marks after apply_text_edits() #14630 -cf5f1492d7
lsp: revert change to buf.clear_references() #24238 -917172dd96
lsp: semantic token defer loading -3be2536ca0
lsp: send back diagnostic tags to the server -a37d568082
lsp: send empty "added" list when removing workspace folder #24440 -3c6d971e54
lsp: set extra info only when it has a value (#23868) -5785c32f11
lsp: set fallback client name properly -370232dbef
lsp: track snippet deletion -ca26ec3438
lsp: use only utf-16 in default client positionEncodings (#23903) -b302da9ad2
lsp: use percentage format on lsp.status (#23971) -2c8f36a3b0
lsp: use plain loop for non-list-like table of protocol values -8addd27504
lsp: when renaming directory, check path prefix of buffer names (#27603) -597355deae
lsp: wrong iterator in registerCapability handler (#24971) -b2d471ab33
lua: allow nil values in serialized Lua arrays (#26329) -68f12e7fcb
lua: annotate that TSNode functions can return nil (#24621) -4ffc20c951
lua: avoid internal error when :luado deletes lines (#27262) -3198038224
lua: correct return value for on_key with no arguments (#25911) -84bbe4b0ca
lua: disallow vim.wait() in fast contexts -22eb2ba183
lua: do not schedule events if Nvim is exiting -7d279a09e0
lua: handle array with holes in luaeval() (#26630) -c43c745a14
lua: improve annotations for stricter luals diagnostics (#24609) -2f779b94e7
lua: inspect_pos respect bufnr when get syntax info (#23098) -e2e63bd045
lua: make highlight.on_yank use win-local highlight (#27349) -b40170f7a3
lua: memory leak when using invalid syntax with exists() (#26530) -4ab9c5fa46
lua: not using global value in vim.opt_global (#25196) -20ec4c776a
lua: only disable vim.schedule() when closing main loop (#26090) -f150b62423
lua: only free luarefs when returning from API (#28373) -0190771713
lua: remove uri fragment from file paths (#27647) -5aa14e1231
lua: return after assert returns assert message (#27064) -5331d5772f
lua: show error message when failing to set variable (#25321) -1294e221a2
lua: vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate -37c58226a8
lua: vim.fs typing (#24608) -5db076c7cc
lua: vim.region on linewise selection #25467 -622b1ae38a
lua: vim.split may trim inner empty items -a7df0415ab
lua2dox: filter out the entire `---@alias` block -32e69bd397
luarc.json: ignore test directory to save memory -6f936c9d85
man: make :Man with a range work (#25922) -59aadf33ef
man: pass modifiers also to :tag (#27878) -a9b4dc9614
man: set the nested flag for the BufReadCmd autocommand (#26285) -c8d1d8b254
man.lua: don't continue on command error (#23009) -a4c4b39d55
man.lua: hardwrapped manpage is not resized #25646 -209ed16f57
man.lua: return support of all sections -3a7c30dc93
man.vim: q quits after jump to different tag in MANPAGER modified (#28495) -3c667d3e0f
mappings: fix mapset() not replacing map with backslash (#26719) -0451391ec5
mark: properly init mark views (#22996) -d432bba4e4
marks: handle switching buffer properly (#25763) -62306a29ad
marktree: correct qsort usage -585549625d
marktree: off-by-one error in `marktree_move` -34be915f6b
marktree: preserve ordering in `marktree_move` -b97d5038f1
marktree: some marks counted twice when checking for overlap -ad5a155b1f
mbyte: fix bugs in utf_cp_*_off() functions -b028233991
memline: more curbuf stuff -91ef26dece
messages: :map output with ext_messages (#26126) -eabf9de1dc
messages: allow more prompt in headless mode with UI (#27905) -60fb8a6a8b
messages: avoid crash with :intro and ch=0 (#28343) -61a0aa6c51
messages: avoid passing negative length to strnlen() (#28753) -ca258db156
messages: clear new lines when increasing 'cmdheight' (#27421) -c9f47fca8b
messages: ensure msg_grid is at top at more prompt (#23584) -2f17ef1fc4
messages: use "Vimscript" instead of "VimL" #24111 -55dbf5c379
messages: validate msg_grid before using msg_grid_pos (#26189) -4db77017fb
meta: add nil return types to lpeg functions -5198a2555d
meta: cleanup lpeg operators -dae6770b76
meta: include vim.json -d31f7648ec
mkspell: prevent Unicode character overflow (#23760) -a8a93e517f
mouse: avoid dragging after click label popupmenu callback (#26187) -6a2a37b1e1
mouse: avoid dragging when clicking next to popupmenu (#26201) -091eb4c8c7
mouse: click after eol with conceal and virtual text (#27897) -2b475cb5cc
mouse: click on 'statuscolumn' with 'rightleft' (#25090) -e25cf47ad3
mouse: click on empty line with 'foldcolumn' -84a4319545
mouse: cmdline click registered as statuscolumn (#23163) -bf52fb7193
mouse: copy the line before syntax matching (#24320) -5fb4c397a1
mouse: drag vsep of window with 'statuscolumn' (#24462) -dc394b9641
mouse: fix popup menu position check with winbar (#23456) -7c1921e9d6
mouse: fix popup_setpos position check with ext_multigrid (#23436) -a3fba5cafc
mouse: handle folded lines with virt_lines attached to line above (#23912) -64aa0f7d0b
move: check for filler lines properly (#28307) -366d0c7887
move: check the correct buffer (#25698) -780509aedf
move: fix using the wrong window (#28312) -60d1e3e471
msgpack: store grid line event as a value -c52dfb6e84
normal: don't check conceal when pressing 'r' (#27892) -088cdf69e3
normal: make "g$" work properly with resized grid -a1ded1b113
oldtest: always use a 64-bit int for swapfile block number -92c59c39c3
ops.c: remove duplicate u_save_cursor() -9d01385c6c
options: `'modified'` showing incorrect value for scratch buffers -c3e176f6e2
options: correct condition for calling did_set_option() (#25026) -9af03bcd47
options: do not change inccommand during preview (#25462) -796df966f3
options: don't update curswant for 'winhl' or 'winbl' (#27515) -d956bc6379
options: setting 'scroll' with resized grid (#26628) -c8a27bae3f
options: use a union for def_val (#27169) -804c828e68
optionstr.c: incorrect use of curbuf/curwin -a9df0c5ce6
osc52: do not use 'vim.iter' (#27218) -5d75d9aef2
osc52: enable OSC 52 by default in tmux sessions (#26072) -86c2213b5e
osc52: use `p` for primary selection instead of `s` (#26076) -1045659097
osc52: use nvim_chan_send() to stderr for copying (#26690) -e3bd04f2af
pager: handle consecutive newlines properly (#27913) -1e7e9ee91f
path: accept special characters on Windows (#25424) -f064e72b9b
path: check return value of append_path() (#28309) -f5eabaa940
path: restore space separation in 'path' (#25571) -908f247c22
plines: count 'showbreak' for virtual text at eol -a0cbf1d8d5
plines: cursor position with 'showbreak' and resized grid (#28067) -317038e7cb
plines: don't return very large height on very long line (#24260) -7955c90621
plines: folded lines with virt_lines attached to line above -35c3275b48
plines: handle inline virtual text after last char (#24241) -cbadb39d16
plines.c: initialize cts_max_head_vcol (#24855) -fc14928719
printf: make positional %zd and %zu work (#24722) -d0b3c87219
process: avoid potential data race on exit (#27769) -3e569d440b
process: close handles and timer in pty_process_close() (#27760) -268066e014
process: start pty process eof timer on main thread (#27625) -49983387ff
prompt: emit change event for prompt newline (#28260) -7bd6bd1ef7
provider: cannot detect python3.12 #25316 -61ecb3e16c
provider/pythonx: import the correct module (#25342) -540941ef83
pum: don't position too far with resized parent grid (#23442) -f186224dfc
pum: fix missing rightmost column with 'rightleft' (#23445) -8bc973c6f5
pum: fix missing scrollbar with 'rightleft' (#23448) -a7550a20e0
pum: handle right-click menu repositioning with multigrid (#26975) -fbaa278773
pum: make :popup position correctly with float border -a3dfe1bc89
pum: position properly with ext_multigrid (#23336) -c1331a65dd
pum: show right-click menu above cmdline area (#23298) -dd0e77d48a
query_error: multiline bug -5ac2e47acc
redo: make redo of Lua mappings in op-pending mode work (#23566) -60f69014a8
redraw: multibyte characters are wrapped at the end of a line (#23696) -cb34d0ddd0
redraw: overwrite double-width char with virt_text properly (#23708) -d184933cdc
redraw: update Visual selection properly with splits (#27343) -54044e6dce
release.sh: ze version is too big -cce9460524
remote: make --remote-expr print to stdout (#23980) -bde59e8147
remote: restore previous --remote-expr output formatting (#23988) -468292dcb7
rpc: "grid_line" event parsing crashes (#25581) -4d4092ac9e
rpc: assertion failure due to invalid msgpack input -8921d56053
rpc: do not crash when no input is consumed -c422722b2e
rpc: fix hang with channel closed while waiting for response -adb2258345
rplugin: dont create data dir if it's a broken symlink #25726 -65dd3c1180
ruler: show ruler of curwin with no statusline in cmdline -f5231d61a5
runtime: add commentstring for C# ftplugin (#23039) -3387dc4a46
runtime: add commentstring for D ftplugin (#25362) -615b48aca6
runtime: add more Nvim-only highlight groups to Vim syntax -aee6f08ce1
runtime: do not allow breakcheck inside runtime path calculation -df297e3c2b
runtime: don't set gx mapping if already mapped (#24262) -9176b5e10a
runtime: respect 'fileignorecase' when sourcing (#24344) -dbb840da01
runtime: respect 'rtp' order for all runtime files (#24335) -70a0049296
runtime: source c ftplugins in correct order (#27377) -d431a4d410
runtime: source old color scheme in bundled color schemes (#26641) -3ab6f60dc8
runtime: update 'vim' color scheme to use new tree-sitter groups -67fba9affa
runtime/tutor: don't try to close fold when there is none (#24953) -ee56daebb6
shada: update deleted marks (#24936) -517dfdf0fc
shada: update marks when using delmarks! (#24978) -4d52b0cf67
showcmd: clear the rest properly (#28420) -fcd9905291
sign: avoid deleting from sign map while looping over it (#27158) -a84b454ebe
sign: do not error when defining sign without attributes (#26106) -a5ade3c63d
snippet: correct indent with newline -4625394a76
snippet: do not add extra indent on newlines (#28538) -a1bdf2852d
snippet: remove misleading comment about TM_FILENAME_BASE (#26465) -8c044f0862
spell: always accept ':' as filename char in 'spellfile' (#27172) -a803bff89c
spell: extmark with spell=false should disable spell (#23400) -eceb2dffce
spell: splice extmarks on :spellrepall (#23929) -aa65bd478a
startup: "nvim -l foo.lua" may not set arg0 #24161 -628f6cce80
startup: don't truncate when printing with -l (#24216) -c0fa721ade
startup: make recovery mode work without --headless (#24477) -8e739af064
startup: multiprocess startuptime #26790 -8f10362cdc
startup: only send one default_colors_set event during startup -559c4cfd52
startup: run embedded Nvim with real path (#24282) -b21d960119
startup: set full_screen when in ex_mode -9637b7dae4
startup: stop TUI properly when quitting at swap dialog (#25337) -d7359a8742
startup: trigger UIEnter for the correct channel (#25860) -01e273c340
statuscolumn: don't update clicks if current width is 0 (#24459) -afd0c648a8
statuscolumn: force full redraw when signcolumn is invalid (#24859) -dc6c11394b
statuscolumn: update number hl for each screen line (#25277) -a4b2400804
statusline: also allow right click when 'mousemodel' is "popup*" (#23258) -4ecf6fdfd8
statusline: bail out properly on negative row (#23535) -70da793c5e
statusline: corrupted screen with minwid sign item in 'statuscolumn' (#23823) -d7bb19e013
statusline: fill for double-width char after moving items (#24207) -54f5602038
statusline: fix uninitialized variable and possible overflow -9f15a18fa5
statusline: missing offset when showing 'keymap' (#27270) -7b973c71ea
statusline: redraw when VIsual_mode changes (#23933) -dbc0fa9bd6
stdpath: remove duplicate directories (#26653) -1907abb4c2
stream: do not close handle if it is already closing (#26537) -9dd48f7832
substitute: properly check if preview is needed (#23809) -9753cda591
syntax: use correct diagnostic group for checkhealth (#23538) -400b7842a9
termcap: escape escapes in passthrough sequence (#26301) -e527842211
termcap: only call callback for requested capabilities (#26546) -ffeb31c2f9
termcap: set 'nested' on TermResponse autocommand -b7831c7f99
termcap: use tmux passthrough sequence when running in tmux (#26281) -e6d3f87dfd
termdebug: handle partial lines passed to callback (#22950) -c413b42c45
termdebug: prompt mode breaks with &splitbelow set -8aad4b8425
termdebug: send SIGINT when interrupting prompt mode -af78060b18
termdebug: trim suffixed "\r" in CommOutput -684e93054b
terminal: assign channel to terminal earlier (#25771) -82b1a389ba
terminal: avoid Insert mode in Terminal buffer (#25820) -99288ecc77
terminal: block input when there is pending TermRequest (#27589) -f2ce31d3dc
terminal: call validate_cursor() before screen update (#24425) -e09adfdcff
terminal: check if mouse on statusline/tabline/winbar/vsep (#26892) -e115732465
terminal: check terminal size at end of screen update (#25480) -120c4ec855
terminal: disable reflow again -c881092ffe
terminal: don't lose focus on <MouseMove> (#25845) -16a416cb3c
terminal: don't pass incomplete UTF-8 sequence to libvterm (#27922) -d0d132fbd0
terminal: don't send unknown special keys to terminal (#24378) -74776dfb2a
terminal: fix duplicate recording with mouse click (#28103) -21d466c1b9
terminal: forward horizontal mouse scrolling (#24552) -d401b33314
terminal: handle horizontal scrolling in another window (#24828) -5e78fd7784
terminal: ignore $VIM and $VIMRUNTIME in pty jobs -0a7fda6fa0
terminal: include modifiers when forwarding mouse (#24549) -d4c2fc6ff6
terminal: keep focus when scrolling number column of another window (#25848) -5ca6c9e046
terminal: make backslashes in 'shell' work on Windows -aba954b662
terminal: never propagate $COLORTERM from outer env (#26440) -b74262a336
terminal: send Shift-Home Shift-End Ctrl-Home Ctrl-End (#24418) -0fd8eb8aae
terminal: set $COLORTERM unconditionally in :terminal (#24763) -fa17a5ab49
terminal: use terminal buffer for TermRequest autocommand (#26974) -5999214c24
termkey: accept BEL (0x07) as OSC terminator -ce2f770aaa
termkey: do not sign extend mode value -50f5864dd2
termkey: include IO header on Windows -52e6059415
test: call separate_arguments() correctly to honor $BUSTED_ARGS (#26905) -c5528e7fd8
test: clean up inline virtual text tests a little -380b634ac9
test: fix "indeterminism" warnings in UI tests -f4c97da262
test: fix strings_spec.lua for AArch64 -477458f7bf
test: more tests for marktree -d8e330bcec
test: remove test/compat.lua -a7bbda121d
test: typing -8861ad83fd
test/tui_spec: pass the expected NULL-sentinel to execl() -f859d16aea
tests: set SHELL=sh #24941 -3d44340cea
tests: use more global highlight definitions -e9bfbe99cd
textformat: remove unnecessary changed_bytes() (#26027) -255e547e18
timer: allow timer_info() to get info about current timer -a8131aee9e
tohtml: replace hex escape with digit escape (#27728) -0246f1a897
tohtml: set filetype of generated HTML to `html` -ccc0980f86
treesitter: Use the correct replacement args for #gsub! directive (#23015) -71d9b7d15c
treesitter: _trees may not be list-like -a4743487b7
treesitter: `language.add` - only register parser if it exists -4a8bf24ac6
treesitter: adjust indentation in inspector highlights (#26302) -ef64e225f6
treesitter: allow foldexpr without highlights (#23672) -6a264e0897
treesitter: allow optional directive captures (#28664) -cf612c64b0
treesitter: allow passing lang to vim.treesitter.get_node() now correctly takes opts.lang (#26360) -32849d5667
treesitter: avoid # of nil in _query_linter -3fd7449d5a
treesitter: check that buf is loaded in autocommands (#25679) -e7f50f43c8
treesitter: clip end row early -6b19170d44
treesitter: correctly calculate bytes for text sources (#23655) -bd5008de07
treesitter: correctly handle query quantifiers (#24738) -fba18a3b62
treesitter: do not calc folds on unloaded buffers -c30ebb17f6
treesitter: document more standard highlight groups -040369e1e4
treesitter: don't forcefully open folds -72ed99319d
treesitter: don't invalidate parser when discovering injections -4607807f9f
treesitter: don't update fold if tree is unchanged -26b5405d18
treesitter: enforce lowercase language names (#28546) -3a8265266e
treesitter: escape "\" in :InspectTree #28613 -369f58797d
treesitter: escape quotes in :InspectTree view #24582 -6e45567b49
treesitter: fix TSNode:tree() double free (#24796) -50a03c0e99
treesitter: fix another TSNode:tree() double free -7c6f9690f7
treesitter: fix indexing in foldexpr -01b91deec7
treesitter: fix parens stacking in inspector display (#26304) -f40a109716
treesitter: fix trim predicate -1f551e068f
treesitter: fixup for InspectTree -26cc946226
treesitter: foldexpr tweaks -e85e7fc7bc
treesitter: handle empty region when logging (#24173) -12faaf40f4
treesitter: highlight injections properly -6f75facb9d
treesitter: improve vim.treesitter.foldexpr -6c8387067d
treesitter: inspect-tree remember opts on buf change -8179d68dc1
treesitter: logger memory leak -b6e339eb90
treesitter: make InspectTree correctly handle nested injections (#26085) -3af59a415c
treesitter: make Visual hl work consistently with foldtext (#25484) -c7e7f1d4b4
treesitter: make foldexpr work without highlighting (#24167) -0211f889b9
treesitter: make sure injections don't return empty ranges (#24595) -0df681a91d
treesitter: make tests for memoize more robust -7fa292c52d
treesitter: outdated highlight due to tree with outdated region -617d1b28d6
treesitter: prefix treesitter types with vim -90a12d4a16
treesitter: prepare highlight states for [s, ]s -7e5ce42977
treesitter: properly combine injection.combined regions -19a793545f
treesitter: redraw added/removed injections properly (#23287) -7a76fb8547
treesitter: remove more double recursion -e124672ce9
treesitter: reset cursor max_start_depth -7d97150084
treesitter: return correct match table in iter_captures() -3b29b39e6d
treesitter: revert to using iter_captures in highlighter -315c711700
treesitter: set cursor position when opening inspector -48085e40bb
treesitter: stop() should treat 0 as current buffer #24450 -32dc484ec9
treesitter: support subfiletypes in get_lang (#23605) -b6fdde5224
treesitter: text alignment in checkhealth vim.treesitter -0f85aeb478
treesitter: treecursor regression -26143d7a5c
treesitter: update @markup default links -9ff59517cb
treesitter: update c queries -c44d819ae1
treesitter: update folds in all relevant windows (#24230) -ffb340bf63
treesitter: update folds only once on InsertLeave -edf9a897f0
treesitter: update highlights for query (#23699) -b697c0cd4f
treesitter: update lua parser and queries (#24148) -ad95b36985
treesitter: update markdown parser and queries (#24429) -39a0e6bf3c
treesitter: update parsers and queries -3d4eb9d544
treesitter: update queries -c97de026e3
treesitter: update vimdoc and vimscript queries -dc7ccd6bca
treesitter: use 0 as initial value for computing maximum (#27837) -7bc5ee7f93
treesitter: use proper query syntax for inspector (#26274) -00e6651880
treesitter: use tree range instead of tree root node range -8c9dab3e0d
treesitter: use vim.highlight.priorities instead of hardcoded 100 (#24052) -674f2513d4
treesitter: validate language alias for injections -2bf3e82676
treesitter: validate window before updating preview highlights -ab2811746e
treesitter playground: fix the wrong range of a node displayed i… (#23209) -f85aa2e67f
treesitter.c: improve comments on fenv usage -c5b9fb2f25
treesitter.foldexpr: check for all insert submodes -b3bda2f043
tui: `space_buf` overflow when clearing screen (#27352) -cb2b5e2780
tui: disable DECRQM and DECRQSS queries for Terminal.app (#28453) -405bad5e08
tui: do not toggle cursor visibility when flushing the buffer (#26055) -b76cc974b9
tui: don't forget to update cursor visibility (#26523) -911f3d9623
tui: don't overwrite an assertion faliure message on exit -168e69ae01
tui: don't set cursor color when there is none (#28236) -5a08b5be3c
tui: don't set tty background if &bg was set before VimEnter (#23701) -00b7428b3b
tui: don't use DECRQSS in screen or tmux (#28086) -846714ca3e
tui: don't use tui->params[] for 'termsync' (#26565) -197827321a
tui: grid_clear properly clears the screen -884a83049b
tui: grow termkey's internal buffer for large escape sequences (#26309) -ad867fee26
tui: handle cursor visibility properly (#26091) -fd50185492
tui: initialize clear attrs with current terminal background -c26b39a9aa
tui: make :cquit work properly with remote TUI (#25313) -3ae62c4706
tui: make disabling title restore old title from stack (#23585) -4c31a1b807
tui: make setcellwidths() work for non-ambiwidth chars (#28322) -4f235e3caf
tui: position cursor at bottom-left before stopping (#23369) -0f1b511f23
tui: redraw on SIGWINCH even if size didn't change -8e69716953
tui: restore title before exiting alternate screen (#23776) -999e167a52
tui: start flush earlier (#26463) -367e52cc79
tui: use buflen to calculate remaining buffer size (#26942) -3198598e69
tui: use uv_timer_t instead of TimeWatcher for input (#26435) -0ce065a332
tui: v:argv does not report the original argv[0] #24015 -bc6fc0123d
tutor: Tutor steps don't work on Windows #25251 -bf5703042b
tutor: don't use concealed text in expected lines #24316 -e34c23b701
tutor: set a value for ":syntax iskeyword" (#27833) -04232a19cc
type: remove incorrect arguments from vim.rpc* -21152f7905
types: add more annotations to eval.lua -b7d5b55f74
types: add some return/parameter type annotations (#24867) -e6947bb1e8
types: make filetype.add parameters optional -191cca2566
types: move type annotation for `IterMod` -813dd36b72
types: rename win_get_config return type to win_config -b3342171d5
typing: vim.fn.execute -1355861b92
typval: don't treat v:null as truthy (#23281) -0592fd5e17
ui: "resize -1" with cmdheight=0 #24758 -ab1c2220f0
ui: activating all ext capabilities without remote UI #28555 -5b111a8f00
ui: adjust 'smoothscroll' for inner dimensions -389f5ca39d
ui: adjust the cursor when inserting virtual text -046c9a83f7
ui: always use stl/stlnc fillchars when drawing statusline (#25267) -0c86828ac5
ui: avoid ambiguity about chunk that clears part of line (#24982) -e778e01161
ui: avoid recursiveness and invalid memory access #28578 -0ce3910868
ui: cursor pos with left gravity inline virt_text at eol (#24329) -91a4938edf
ui: data corruption in remote_ui_raw_line -1de82e16c1
ui: delay win_viewport until screen update #24182 -a916523574
ui: doesn't trigger au event when enter is false -b5a38530ba
ui: don't force 'cmdheight' to zero with ext_messages -fdc8e966a9
ui: don't send empty grid_line with redrawdebug=compositor (#23899) -13f55750e9
ui: empty line before the next message after :silent command -d41b8d4758
ui: ext_cmdline should not move cursor to curwin -a38d7f9984
ui: fix cursor position with multiple inline virtual text -e0707d3529
ui: fix edge case around flushing -75f350aac6
ui: fix incorrect highlighting when virtual text next to match -332b70d2ed
ui: fix incorrect highlighting when virtual text wraps with number -0c7fa3bdcc
ui: fix multi-byte characters highlight in virtual text -a37c990483
ui: fix overflowing nowrap virtual text not displaying if tab follows -5d7afb2e9f
ui: fix tabs not being spaced properly after virtual text with no wrap -34d862942c
ui: fix virtual text not displaying when two overlapping inlines (nowrap) -c5bf838f8a
ui: fix visual and search highlighting interfering with virtual text -1936285d98
ui: fixes incorrect rendering when virtual text is not visable and nowrap -64e8a3c4d1
ui: handle virtual text with multiple hl in more cases (#25304) -981acc2922
ui: propagate line wrapping state on grid_line events -b8c1b36061
ui: set 'cmdheight' to zero for all open tabpages -a8522f02e9
ui: startup intro message should be visible with ext_multigrid -1cd7824dd6
ui: trigger TabNewEntered after split new tab -7626f431d8
ui: update ext_ui widgets when attaching non-remote UI -128091a256
ui: wrong cursor position with left gravity inline virt text at eol -a9418ef8cf
ui: wrong display with 0-width inline virt_text at eol (#24854) -e8b3ed74bc
ui-ext: "scroll_delta" handle topfill and skipcol (#24249) -43d66c0ebb
ui-ext: send title to newly-attached UI -519b9929e9
ui.open: some URLs fail on Windows -4d654472e6
ui_client: check return code of dup() -633bf61d3b
ui_client: check return value of channel_job_start (#27729) -71ad771ea4
ui_compositor: only reset skipstart at first column (#24776) -840749d6c9
undo: fix crash caused by checking undolevels in wrong buffer -c0a29931e2
unhide: close floating windows first (#25318) -9afbfb4d64
unittests: ignore __s128 and __u128 types in ffi -9e79f7433e
usercmd: Fix buffer overflow in uc_list() (#23225) -9802de9334
userfunc: fix possible out of bound access -5a8fe0769c
vim.deprecate: show deprecation warning in devel versions as well -ca6dbf3558
vim.iter: use correct cmp function when truncating tail in `take` (#27998) -e15991c811
vim.json: properly treat luanil options as booleans (#28622) -fec5e3ab24
vim.region: handle multibyte inclusive selection properly (#26129) -2afb04758c
vim.system: close check handle (#24270) -9b7cf4f0be
vim.system: don't process non-fast events during wait() (#27300) -a44521f46e
vim.system: let on_exit handle cleanup after kill -6d5f12efd2
vim.system: make timeout work properly -57adf8c6e0
vim.ui: open() may wait indefinitely #28325 -e644e7ce0b
vim.ui.open: return (don't show) error message -fd085d9082
vim.ui.open: try wslview before explorer.exe #28424 -5e4a5f1aaa
vim.ui.open: use explorer.exe instead of wslview #26947 -6cc76011ca
watchfiles: skip Created events when poll starts (#23139) -9bd4a28079
window: :close crash if WinClosed from float closes window (#27794) -731e7f51ee
window: :close crash with autocmd, floats and tabpage (#27793) -33dfb5a383
window: :close may cause Nvim to quit with autocmd and float -2cbfa4b9af
window: don't go to unfocusable float when closing (#28455) -a47be0b2d9
window: prevent win_size_restore from changing cmdheight -4bfc7802f0
windows: set stdout to binary mode for --api-info PERFORMANCE -------------------------------------------------------------------------------- -a9c551e5e3
cache breakindent/showbreak width in win_lbr_chartabsize -b5653984e5
don't decode utf8 character multiple times in getvcol() -cca8a78ea2
improve utf_char2cells() performance (#27353) -2f2f12122f
remove loop for computing last position in getvcol() -32a4c9f4f9
remove redundant strlen in skipwhite (#26177) -cdf848a314
reuse fast character size calculation algorithm from getvcol() -2289ca273c
column: avoid counting when max signs are removed from a range -4a34da82c1
column: keep track of number of lines that hold up the 'signcolumn' -f4001d27ef
column: only invalidate lines affected by added sign -7f084770c2
diagnostic: avoid table copies to filter by severity (#28491) -1cb6040554
events: store autocommands in flat vectors (#23256) -9af2be292d
extmarks: add metadata for efficient filtering of special decorations -929e1b7f1c
extmarks: avoid unnecessary invalidations for virt_text (#27435) -19fb573ad9
extmarks: avoid unnecessary marktree traversal with folds (#24306) -d44ed3a885
extmarks: better track whether namespace has extmarks (#28615) -ef94fb69c6
extmarks: don't handle inline virt_text if there is none (#24322) -8bb67d64e2
fs: normalize path only once in fs.dir -40db569014
iter: make ListIter.totable more efficient (#23714) -ef1801cc7c
iter: reduce number of table allocations -dcdefd0428
loader: use a quicker version of vim.fs.normalize -648f777931
lsp: load buffer contents once when processing semantic tokens responses (#23484) -2f4792943a
lsp: only joinpath for dirs in watchdirs -edf05b005f
lsp: process semantic tokens response in a coroutine that yields every 5ms (#23375) -79a5b89d66
lsp: reduce polling handles for workspace/didChangeWatchedFiles (#23500) -4d3a04279d
lsp: remove grouping logic from lsp.status (#24096) -de28a0f84c
lsp: replace file polling on linux with per dir watcher (#26108) -7e97c773e3
lsp: use async fs_stat for file watching on linux (#26123) -cdd87222c8
lua: avoid spairs in vim.validate happy path -c5af5c0b9a
lua: faster vim.deprecate() #28470 -c5990f2cdc
os/env: os_getenv() allocation when there is no env var set -18e62c1bdb
redraw: only redraw Visual area when cursor has moved (#27340) -94085cfce8
redraw: reduce redraw with undo and extmarks or 'spell' (#27442) -516b173780
rtp: reduce rtp scans (#24191) -0e11bf0e1a
substitute: don't reallocate new_start every time (#24997) -4fd852b8cb
treesitter: cache fold query (#24222) -07080f67fe
treesitter: do not scan past given line for predicate match -c0cb1e8e94
treesitter: filter out trees outside the visible range early -2b6c9bbe7f
treesitter: incremental foldupdate -3ba930844c
treesitter: insert/remove items efficiently (#23443) -a76b689b47
ui-ext: approximate scroll_delta when scrolling too much (#24234) -0d1bc795f8
ui_client: skip some initialization not necessary for ui client -14a5813c20
vim.fs.normalize: use iterator BUILD -------------------------------------------------------------------------------- -c1ff216668
actually export symbols on mac -664f2749e6
add "ci" configure preset to reduce verbosity -1094d0c0db
add CMAKE_C_FLAGS to --version output -1290121722
add CMakePresets for deps build to reduce verbosity -ce6075f82a
add check to clint to prevent non-defs header includes -624de849de
add function add_target -82bb7bbc48
add luajit runtime files when installing (#23514) -831d662ac6
add sub-targets to the doc target -1bf29a0ae1
add system lua include dir for lpeg -4cc69f45b4
add ubsan default options -4880385809
adjust clang-tidy warning exclusion logic -b80a8e2c16
adjust how find order is prioritized -d561830a52
align .clang-format rules with uncrustify config -c18d7941ef
allow sccache as compiler cache -cd097ab8cc
allow using system rocks -54d357dce0
bump lpeg to 1.1.0 (#25016) -7840760776
bump minimum cmake version to 3.13 -7a5effb0f9
bump required minimum libvterm version to 0.3.3 -2835b0daad
bump uncrustify to version 0.77 -77c0d5415b
bump uncrustify to version 0.78.1 -87a45ad9b9
bump uncrustify to version 0.79.0 (#28756) -1798a4b5e9
bump uncrustify version -826b95203a
bundle uncrustify -37bc73e9bc
change dependency URLs to cache variables -1086016477
cmake cleanup -404fdb0f36
cmake fixes -f8310beeed
create BINARY_LIB_DIR directory before adding parser -9909668111
create a text file for specifying dependency information -5a7280ba68
create helper function for simplifying luarocks installation -f936a962d0
create separate targets for nvim with and without runtime files -bcaff309b6
disable UnusedIncludes from clangd -7a80e169c5
disable all compiler warnings from dependencies -8fdc84d0aa
disable conversion warnings for GCC -310fb2efc3
disable conversion warnings for older GCC versions -a1c2da56ec
do not use GIT_REPOSITORY for local dependencies -da2130934b
don't allow Xcode as generator -543e0256c1
don't define FUNC_ATTR_* as empty in headers (#26317) -24b60b0f71
don't format deleted files -c2e47e7bec
don't print installed files locally -f30844008b
download busted from own neovim/deps repository -5abba97d77
download dependencies with unreliable mirrors from deps repo -71384129f7
download libiconv and gettext from `deps` repository -801ac2accb
drop diff.exe from windows builds -f0eb3ca916
eliminate semicolons from --version string -397b92e02d
enable ASAN for MSVC -40139738eb
enable IWYU on mac -25cfe3fd43
enable formatting during rebase -517f0cc634
enable lintlua for scripts/ dir #26391 -45fe4d11ad
enable lintlua for src/ dir #26395 -59d117ec99
enable lintlua for test/ dir -c3836e40a2
enable lintlua for test/unit/ dir #26396 -03c3f7887d
enforce PREFER_LUA -7cb29a572b
ensure `make clean` doesn't remove source files -0a3645a723
find system luv on ubuntu -5bb17958c5
fix "make iwyu" not working (#24873) -12ccea5967
fix --luamod-dev not working properly (#24519) -75b80516d5
fix link error for `_BitScanForward64` (#28173) -3f188bc533
fix parser installation location -4fb1739e6f
fix uncrustify -896b400bff
fix universal mac builds -01e4a70d66
improve git-cliff CHANGELOG output -ef92b5a994
include all dependency directories when generating headers -187ae67735
introduce variable DEPS_IGNORE_SHA for skipping dependency hash check -30a0299bc6
make dependency URL variables non-cached (#23577) -b4da4783f9
make genappimage.sh work with existing CMAKE_INSTALL_PREFIX -9f9cef1b56
make lpeg an imported library -c1a05f6112
make the vimdoc generation depend on the nvim target (#25876) -8b8e607284
move luarocks and rocks installation to main build -d1bb9bffd5
remove BUSTED_PRG dead code (#23340) -8206954a67
remove LOG_DEBUG option -c48f94d1f3
remove LOG_LIST_ACTIONS option and related code -353a4be7e8
remove PVS -88366641ad
remove USE_BUNDLED_BUSTED option -ca243f06dd
remove `lintdoc` from `lint` target -675522af18
remove clint checks and style text covered by uncrustify -8be24fed8f
remove config-specific find_package search for libuv -c40872acbd
remove duplicate include directories in --version output -ebb10d6248
remove functionaltest-lua target -8ae39eb584
remove git requirement -9f8f287c61
remove luarocks -339011f59c
remove uninstall target -c8fd82b26d
reorder compiler option setting -78239f0bbc
reorganize cmake files -55793bcfa1
revert accidental permission changes (#23319) -f31f260f0c
rework --version generation -a827003e30
rework IWYU mapping files -e5d7003b02
rework formatting to use add_glob_target -1997ef134a
set char to always be signed -a75ef40f4c
set deps default build type to Release (#27495) -a1550dbf0a
silence new clang-tidy warnings -383018dbb8
simplify policy-setting for dependencies -4788abf2da
stop installing parser.h from treesitter -26033eee1d
suppress bugprone-reserved-identifier warnings -34509bbea3
sync IWYU and clint to ignore the same headers (#26228) -0a8e66898d
update builtin terminfo (#27272) -a388c852c4
update libtermkey commit -706f871014
update uncrustify to 0.76 -f4136c9d42
use -O3 optimization for release builds -2c1e8f7e96
use `GIT_REPOSITORY` for local URLs -e0d97d264f
use built nvim artifact to generate eval files (#25875) -3d3717de4e
use libvterm commit with generated *.inc files -4f526b9fd8
use neovim/libtermkey instead of neovim/deps for libtermkey -8405649f92
use neovim/libvterm instead of neovim/deps for libvterm -2a57613b9b
use stylua with add_glob_target -ae3eed53d6
various build improvements -c8667c8756
various cmake fixes -5cefec7349
various cmake fixes -bec2ebebda
various cmake fixes -c50951a4d0
various fixes -4c91194611
various fixes -bf0be0f63e
various improvements -404043e74c
vendor libtermkey -e38a053692
IWYU: export generated headers -71141e8cf5
IWYU: fix headers for arabic.h -8b428ca8b7
IWYU: fix includes for func_attr.h -f4aedbae4c
IWYU: fix includes for undo_defs.h -17d81ac2ab
IWYU: map everything in the C99 specification -c2a5105e88
IWYU: remove arabic_defs.h (#26235) -38a20dd89f
IWYU: replace most private mappings with pragmas (#26247) -09541d514d
IWYU: replace public-to-public mappings with pragmas (#26237) -39771b2238
Makefile: add nvim to oldtest phony target -6823fdb20b
PVS: exclude build directory -5d387c3388
ci: ensure correct headers are used on macOS -dcb11c1091
clint: don't allow INIT() in non-header files (#27407) -c98ef2d7c6
clint: fix deprecation and linter warnings -7e2387f41b
clint: more precise check for "defs" headers (#26236) -cf8b2c0e74
iwyu: add a few more _defs.h mappings (#25435) -5f03a1eaab
lint: remove unnecessary clint.py rules -eecddd2416
lint: use stylua without add_glob_target -25e51d393a
lua: vendor coxpcall -4dc86477b6
luarc.json: disable luadoc-miss-see-name #24108 -fd9ac5aa8e
makefile: remove a phony target uninstall (#24349) -978962f9a0
release.sh: regenerate docs after changing NVIM_API_PRERELEASE (#28229) -9ca81b0259
release.sh: set VIMRUNTIME when regenerating docs (#28765) -4399c4932d
release.sh: use git cliff, drop old script -d0ae529861
scripts: allow a git ref for lsp_types #24377 -bfb81e1a85
snap: remove obsolete snapcraft.yaml -981301d11f
terminfo: include user capabilities in comments (#28066) -6801befcc5
uninstall: don't build if installation manifest not found -345dcba629
windows: set longPathAware in manifest #28389
Neovim is a project that seeks to aggressively refactor Vim in order to:
- Simplify maintenance and encourage contributions
- Split the work between multiple developers
- Enable advanced UIs without modifications to the core
- Maximize extensibility
See the Introduction wiki page and Roadmap for more information.
Features
- Modern GUIs
- API access from any language including C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java/Kotlin, JavaScript/Node.js, Julia, Lisp, Lua, Perl, Python, Racket, Ruby, Rust
- Embedded, scriptable terminal emulator
- Asynchronous job control
- Shared data (shada) among multiple editor instances
- XDG base directories support
- Compatible with most Vim plugins, including Ruby and Python plugins
See :help nvim-features
for the full list, and :help news
for noteworthy changes in the latest version!
Install from package
Pre-built packages for Windows, macOS, and Linux are found on the Releases page.
Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!
Install from source
See BUILD.md and supported platforms for details.
The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.
make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install
To install to a non-default location:
make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install
CMake hints for inspecting the build:
cmake --build build --target help
lists all build targets.build/CMakeCache.txt
(orcmake -LAH build/
) contains the resolved values of all CMake variables.build/compile_commands.json
shows the full compiler invocations for each translation unit.
Transitioning from Vim
See :help nvim-from-vim
for instructions.
Project layout
├─ cmake/ CMake utils
├─ cmake.config/ CMake defines
├─ cmake.deps/ subproject to fetch and build dependencies (optional)
├─ runtime/ plugins and docs
├─ src/nvim/ application source code (see src/nvim/README.md)
│ ├─ api/ API subsystem
│ ├─ eval/ Vimscript subsystem
│ ├─ event/ event-loop subsystem
│ ├─ generators/ code generation (pre-compilation)
│ ├─ lib/ generic data structures
│ ├─ lua/ Lua subsystem
│ ├─ msgpack_rpc/ RPC subsystem
│ ├─ os/ low-level platform code
│ └─ tui/ built-in UI
└─ test/ tests (see test/README.md)
License
Neovim contributions since b17d96 are licensed under the
Apache 2.0 license, except for contributions copied from Vim (identified by the
vim-patch
token). See LICENSE for details.
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda. Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:
https://iccf-holland.org/
https://www.vim.org/iccf/
https://www.iccf.nl/
You can also sponsor the development of Vim. Vim sponsors can vote for
features. The money goes to Uganda anyway.