neovim/runtime/nvim.appdata.xml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

74 lines
2.8 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2018 Neovim contributors
See also:
https://appimage.github.io/neovim/
https://github.com/flathub/io.neovim.nvim
-->
<component type="desktop-application">
<id>io.neovim.nvim</id>
<translation type="gettext">nvim</translation>
<project_license>Apache-2.0</project_license>
<metadata_license>CC0-1.0</metadata_license>
<name>Neovim</name>
<summary>Vim-fork focused on extensibility and usability</summary>
<description>
<p>Neovim is a refactor of the Vim text editor designed to encourage new features, advanced UIs, and powerful extensions.</p>
</description>
<screenshots>
<screenshot type="default">
<caption>Live :substitute feature</caption>
<image>https://neovim.io/images/nvim-screenshot-1.png</image>
</screenshot>
</screenshots>
<releases>
NVIM 0.10.1 This is a maintenance release. FEATURES -------------------------------------------------------------------------------- - ebc6c38cde65 lsp: update LSP healthcheck format (#28988) BUILD -------------------------------------------------------------------------------- - ba90b54301f6 deps: drop unused bundled bash, python parsers and queries - 803cc08c1765 deps: bump tree-sitter-c to v0.21.3 - 91e337a477e2 deps: bump tree-sitter-query to v0.4.0 - 978b63a9f1e9 deps: bump tree-sitter-vimdoc to v3.0.0 - b322c3560b47 "popcount" name conflict on NetBSD #28983 - b397b5672cb5 remove -O2 from gen_cflags - f77db1299580 reuse code for deps.txt for both deps and main build - 46d29063324e macos: disable deduplication in link step FIXES -------------------------------------------------------------------------------- - 70f7708cdf83 assert failure in VimL expression parser - 28f03205be8a show swapfile warning as a warning (#28972) - 0d293e4315fa api: alloc and draw cursor window in nvim__redraw - e1b618780117 colorscheme: underline StatusLineNC with 'notermguicolors' #28810 - aa1321801d61 column: clamp line number for legacy signs - df6ce8377fd6 column: crash with 'signcolumn' set to "number" (#29003) - 97be9d85635e column: modifying a sign should update placed signs (#29750) - 21b21b94e61b comment: fall back to using trimmed comment markers (#28950) - 0827279ff599 defaults: default @/Q broken when 'ignorecase' is set (#29343) - 5d9f2d7eccbc drawline: don't draw beyond end of window (#29035) - eadc4e03a215 drawline: don't draw beyond end of window with 'rnu' (#29406) - bec397edda64 extmarks: issues with revalidating marks #28961 - 1fe1f8556e97 filetype: fix typos in filetype detection - ad55ec350c3b float: handle error in win_float_create() (#29742) - bf16fe3f010b fs: make vim.fs.root work for relative paths and unnamed buffers (#28973) - 5eaae797afb1 health: broken ruby detect #28804 - 24ee2e7c7486 health: fix fetching url with python in provider health (#29594) - 7582d4a7b5ff input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) - 4f0c4c392171 lsp: add textDocument/documentLink to capability map (#28838) - 2d7aab623e14 lsp: avoid vim.keymap.del error when stopping a client (#29478) - bdd5871dc5be lsp: check if buffer was detached in on_init callback (#28942) - d8ff21604038 lsp: clear lsp client diagnostics (#29091) - 3a727beafd6b lsp: detach all clients on_reload to force buf_state reload (#28898) - e98637e8c038 lsp: do not detach from buffer if there are uninitialized clients (#29043) - 0ee3147bc766 lsp: do not reset buf version when detaching client (#29273) - 24fa65a50037 lsp: don't show codelens for buffers that don't support it (#29690) - 4efca7cda514 lsp: handle nil root_dir in health check (#29010) - efe8a0a52082 lsp: hide layout in codelenses in virtual text (#28794) (#28895) - 2fb69ccaf76d lsp: inlay hints are rendered in the correct order (#29707) - dfff482efe3b lsp: remove superfluous on_detach callback from semantic tokens module (#29188) - 10a16c131161 lsp: trigger LspDetach on buffer delete - 33121f1eaea5 lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) - ffc457a1dc27 marks: revalidate marks whose position did not change - f82d7b820006 mouse: early return when clicking in padded 'statuscolumn' (#29394) - d6756fc0a50a move: half-page scrolling with resized grid at eob (#28821) - 0cf7e2570ceb path: avoid chdir() when resolving path (#28799) - 63ff7338eac0 quickfix: make shortmess+=O work with cmdheight=0 (#29609) - 46c2962b3a55 runtime: add commentstring for glsl ftplugin - b98aa783f3e5 runtime: source c ftplugin properly for cpp on Windows (#29053) - 039121f5a31c snippet: cancel snippet session when leaving the buffer (#29044) - 84d7bfcf16ff snippet: don't override unnamed register on tabstop select (#29008) - e13f03af85bb snippet: modify base indentation when there's actually whitespace (#29670) - 9fd6664ba79d tohtml: extmark text may be out of bounds - 8c88f402e13e tohtml: ignore lsp inlay hints - 5cdf0c22bda2 tohtml: properly handle multiple hl groups #29012 - 3d319092d5ee tohtml: replace ipairs with pairs - 4150e5e6fd50 tohtml: show how many warnings are hidden - 0389472961d6 tohtml: support ranges again - ab2d243fd09b treesitter: display fields for anonymous nodes in :InspectTree - 35f6425207f3 treesitter: do not modify highlight state for _on_spell_nav - 356ddb130576 treesitter: ensure syntaxset augroup exists (#29542) - eb53aba5af5c treesitter: recognize aliased parsers in omnifunc, query linter - b6b22725736e tui: move $COLORTERM check to _defaults.lua (#29206) - 89f29fcc92f9 tui: remove duplicate disabling of synchronized output (#28884) - a784b901bee8 tui: skip TUI in ui_rgb_attached (#29096) - 19787d6057aa ui: avoid ambiguity about last chunk when flushing halfway (#29718) - 89fa1ee8229a ui: flush ext_cmdline events before doing cmdpreview (#29062) - 7055cd12389e ui: superfluous showmode / excessive grid_cursor_goto #29089 - 6802db7aa194 version: fix vim.version().prerelease - 728f6c7c83a4 vim.text: remove assert from vim.text.hexdecode - c3aef5619949 win-msi: add bin to PATH per-machine after installation (#29099) VIM PATCHES -------------------------------------------------------------------------------- - fdf769fa867b 0b74eec: runtime(stylus): remove remaining css code (vim/vim#14866) - 29fd7432fdc6 74703f1: runtime(doc): remove obsolete Ex insert behavior (#29702) - 891cc7817993 7a85e34: runtime(doc): fix inconsistencies in :h file-searching (#29652) - 704d33634e90 8.2.0083: text properties wrong when tabs and spaces are exchanged - 571e54e12c19 8.2.0109: corrupted text properties when expanding spaces - 7c055bd74bcf 8.2.3388: fnamemodify('path/..', ':p') differs from using 'path/../' (#29667) - 9c91233a38e3 9.1.0414: Unable to leave long line with 'smoothscroll' and 'scrolloff' - 34cc49bd72f6 9.1.0498: getcmdcompltype() interferes with cmdline completion (#29397) - 259a620eb88a 9.1.0512: Mode message for spell completion doesn't match allowed keys (#29437) - f89d4ee6ced9 9.1.0526: Unwanted cursor movement with pagescroll at start of buffer (#29569) - 4ce293c2c39f 9.1.0565: Stop directory doesn't work properly in 'tags' - c467bfeb93cc 9.1.0566: Stop dir in findfile() doesn't work properly w/o trailing slash - 576363a0fba5 9.1.0567: Cannot use relative paths as findfile() stop directories - ceb82a939635 9.1.0569: fnamemodify() treats ".." and "../" differently (#29673) - 07de890de6f7 9.1.0580: :lmap mapping for keypad key not applied when typed in Select mode (#29693) - b01202df154c 9.1.0594: Unnecessary redraw when setting 'winfixbuf' (#29775) - 804a94d300eb 9.1.0601: Wrong cursor position with 'breakindent' when wide char doesn't fit (#29793) - a03cc83bfb04 df62c62: runtime(doc): grammar fixes in options.txt (#29729) - fde5718e623f partial:9.0.0323: using common name in tests leads to flaky tests REDACTOR -------------------------------------------------------------------------------- - c35e040b7eda replace deprecated vim.loop with vim.uv - 3a354bfcaa82 lsp: reuse buf_detach_client logic in on_detach (#28939) (#29024) - dffadc392e89 path.c: add nonnull attributes (#28829) - db65017e60e2 tests: more global highlight definitions - 3725db69ef8a tests: use more global highlight definitions CI -------------------------------------------------------------------------------- - 7400f9dfe5a9 adjust workflows to enable required checks - 575136c17804 always add `target:release` label when backporting - 410f43c0aee7 bump backport action to version 3 - 9a2760a01f92 change label `backport` to `target:release` - b94b341ef2da run workflows on release branches - 0e81c624056e skip lintcommit workflow on release branches TESTING -------------------------------------------------------------------------------- - f03348472d0a add a test for #29119 - 18a36d3d9ff0 do not set termguicolors in test runner - 68513c2a8969 fix reporting "no flush received" too early (#29735) - 981548b7f782 remove checks for failed tests on Windows - 65776124b117 starting and stopping treesitter highlight (#29546) DOCUMENTATION -------------------------------------------------------------------------------- - 891b235df039 document 'list' behavior when 'listchars' excludes "tab" (#29360) - 8c006511315e fix more treesitter parsing errors - 777e15fa6197 update LSP quickstart (#28989) - 6136326d6376 lpeg: merge upstream changes - f7d8650616d5 lsp: format the handwritten part #29295
2024-07-24 00:20:05 -07:00
<release date="2024-07-24" version="0.10.1"/>
NVIM v0.10.0 For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 649dd00fe2e5 remove deprecated functions - 0370e4def0c0 remove neovim qt - 880f7d12fea3 remove vimballs (#22402) - c48b1421af28 rename "playground" => "dev" #23919 - 2f85bbe61513 rewrite TOhtml in lua - abe39f2b243d api: change return type of nvim_win_text_height to Dict (#24365) - 7180ef690180 api: nvim_open_win: noautocmd blocks all autocmds #28192 - 700cab00680f events: trigger CursorMoved later on switching window (#23711) - e4a136f71375 ex_cmds: remove :behave - e5e0bda41b64 lsp: add vim.lsp.status, client.progress and promote LspProgressUpdate (#23958) - 5a363ccac8ff lsp: deprecate trim_empty_lines - 5a2536de0c4b lsp: move changetracking to separate file (#26577) - 58618d208acd lsp: promote LspRequest to a full autocmd and enrich with additional data (#23694) - 1b9ccd38a12f lsp: rename vim.lsp.get_active_clients to get_clients (#24113) - eb1f0e8fcca7 lsp: replace snippet parser by lpeg grammar - 448907f65d67 lsp: vim.lsp.inlay_hint.get(), enable(), is_enabled() #25512 - 7caf0eafd83b lua: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440) - 747264320c6d mappings: remove #n as a notation for a function key (#17318) - f7da47225706 options: graduate shortmess+=f flag - c3d1d9445c70 options: graduate some more shortmess flags - 5df4fdf253f9 options: make OptionSet `v:` values use typval - 881d17a11393 options: remove compatible behaviours for vim 5.0 and earlier - e19cc9c9b715 options: unify `set_option` and `set_string_option` - db590e96d593 startup: "nvim -l" message does not end with newline #24215 - 2ca076e45fb3 treesitter: incremental injection parsing - f5dc45310941 treesitter: new standard capture names - fc0ee871de2f treesitter: remove deprecated legacy injection format - 6debb1852355 treesitter: remove duplicated diagnostic code (#24976) - 18da6964cc61 vim.iter: remove vim.iter.map/filter/totable #26138 - 9b028bd64f42 vim.iter: rename xxback() => rxx() #28503 - 8d4a53fe6e20 vim.json: remove global options, "null", "array_mt" #24070 - 40ce8577977f vim.ui: change open() to return `result|nil, errmsg|nil` #28612 - e0d92b9cc20b vim.ui: change open() to return pcall-like values #28502 FEATURES -------------------------------------------------------------------------------- - a66b0fdfaa35 NVIM_APPNAME supports relative paths #25233 - c0beb8173fe2 add .luarc.json (#24592) - 14b7ffcf89bc add __call typing for vim.inspect() - ca7e488cfeb1 add link in issue template to minimal config template - 4bf47222c973 add vim.text module (#26069) - 0ebc4de0ff93 allow opting in to builtin clipboard providers (#28083) - e8d3c4cccb9d generate types and docs for v variables - 29fe883aa916 ignore swapfile for running Nvim processes #25336 - 28d1640dd604 improve return type annotations for vim.api.* - 199a990c9e4e report "build" in vim.version() #23925 - e68879325393 tostring(vim.version()) - c559ab0ae6be update unicode tables (#27317) - ecdb6465e272 vim.version() returns a Version object - 4b60267f82ef :source: source current ft=lua buffer as Lua code (#23802) - 428edcde7068 api: add forward and back mouse buttons - 037ea6e786b5 api: add nvim__redraw for more granular redrawing - ca9f6f56949d api: add nvim_tabpage_set_win (#27222) - db8fe63a9398 api: add nvim_win_text_height (#24236) - 16513b303375 api: allow floats to be opened in non-current tabpage (#28480) - 6b4970f6e0ac api: allow open_win/win_set_buf in the cmdwin in some cases - 5d921e28c1cc api: allow win_close in cmdwin to close wins except previous - 472271199e48 api: allow win_hide to close cmdwin or non-previous windows - 6bba4becedae api: make nvim_open_win support non-floating windows (#25550) - b162adbb7ca4 api: pass 0 to nvim_get_chan_info for current channel (#27321) - 42bbc4fabcf9 api: support abbreviations in nvim_set_keymap - 98a4ed0a1106 api: support getting abbreviations (#26868) - d3d7d763f3e1 builtin: improve types - 748bc4d22d35 clipboard: add OSC 52 clipboard support - db57df04b6af clipboard: enable OSC 52 clipboard provider by default (#26064) - 734848dc1a9e colorscheme: add semantic tokens modifiers to builtin color scheme - 1e0996b57230 colorscheme: update treesitter groups - 73de98256cf3 comment: add built-in commenting - ae4ca4edf89e complete: support f flag for complete buffer part - 01c51a491330 completion: support completing more string options - ae3685798dea decoration: allow conceal_char to be a composing char - 30a5c28c8740 decoration_provider: log errors as error messages - 9711370c2645 defaults: add :Inspect to right-click menu (#28181) - 2613ba5000d4 defaults: enable 'termguicolors' by default when supported by terminal - 513fc461957f defaults: improve :grep defaults #28545 - c26dc1f77c79 defaults: map Q and @x to repeat in Visual mode (#26495) - 8758c6fb875f defaults: set g:netrw_use_errorwindow = 0 #24179 - 1d81d7a268f5 defaults: treat "•" as a list item prefix #24623 - 20b38677c22b defaults: use ripgrep (rg) for 'grepprg' if available - 61063653b06b defaults: visual CTRL-R for LSP mappings #28537 - 4ee656e4f357 diagnostic: add `vim.diagnostic.count()` (#26807) - 73034611c25d diagnostic: add default mappings for diagnostics (#16230) - fc6d713dd806 diagnostic: add support for many namespaces filtering in GetOpts (#28045) - 5ed9916a28b9 diagnostic: enable(…, opts) - e7801775060e diagnostic: filter diagnostics by specific severities (#24736) - b13e63db1dbc diagnostic: goto functions jump to highest severity (#28490) - 26765e8461c1 diagnostic: is_enabled, enable(…, enable:boolean) - 9cb7e00b9748 diagnostic: provide more control over virtual text display (#24724) - ee41153a9458 diagnostic: revert default behaviour of goto_next/prev() - 07b60efd8058 diagnostic: specify diagnostic virtual text prefix as a function - a3b39784744f diagnostics: support numhl and linehl for diagnostic signs - 0381f5af5bdc diff: grouping optimization for linematch algorithm - 42333ea98dfc docs: generate builtin.txt (#24493) - 9beb40a4db56 docs: replace lua2dox.lua - 1d4a5cd18537 eval: exists() function supports checking v:lua functions (#26485) - 4a1ad676ce0b ex_cmds: no error on :lua with {range} and {code} (#27290) - c2433589dca0 ex_cmds: ranged :lua #27167 - b04286a187d5 extmark: support proper multiline ranges - 1c032ad703a1 extmark: window scoped extmark - 68cb4a7405ea extmarks: add "undo_restore" flag to opt out of undo-restoring - 4e6f559b8c5f extmarks: add 'invalidate' property to extmarks - c249058758af extmarks: add sign name to extmark "details" array - bbd5c6363c25 extmarks: add virt_text_repeat_linebreak flag (#26625) - 15e77a56b711 extmarks: subpriorities (relative to declaration order) (#27131) - f0884f21fa0c extmarks: support hl_mode "combine" for inline virt_text (#24099) - 372aa2eb3db3 float: add fclose command - 35570e4a11be float: implement footer - 4200a0f1678c float: support toggle show float window - 1233ac467de7 fold: transparent foldtext - 71530cc97257 folds: support virtual text format for 'foldtext' (#25209) - 38b9c322c97b fs: add vim.fs.root (#28477) - e3e6fadfd828 fs: expose join_paths as `vim.fs.joinpath` (#23685) - bc67cf3ccdf9 gen_help_html: add anchors to help tags #25112 - b0cf9c5feeae gen_help_html: ignore pi_netrw.txt errors - 81d8fce8f9e1 gen_help_html: non-default vimdoc.so parser - da09f9b551ba gen_lsp.lua: protocol.Methods #24504 - f41496ce74fb gen_lsp.lua: sort by name, handle failure #24504 - 3692fd4c873a gen_lsp.lua: validate CLI args #26514 - 2ff2785c396e health: checkhealth buffer can show in a split window (#26714) - 4382d2ed564b health: fold successful healthchecks #22866 - d1bc6fca7123 health: list attached buffers in LSP report #23561 - 2877672d70e7 health: make :checkhealth support more split modifiers (#26731) - ddda5e0a488b help: hide filename of "gO" outline using conceal #27547 - e72c0cd92090 highlight: Allow hyphens (-) in highlight group names (#24714) - 986bf7e78d09 highlight: add `FloatFooter` highlight group - 574519d9d68f highlight: tweak default color scheme - 64a14026d76b highlight: update default color scheme - a79694a08ede issue_template: instruct not to include a package manager - 69ffbb76c237 iter: add `Iter.take` (#26525) - cebc00603ea3 l10n: update Turkish translations #24246 - fec51229c4a0 l10n: update Ukrainian translations (#24882) - 996dd36c7732 lsp: add actionable advice to lsp client quit error msg (#24510) - 4ff3217bbd87 lsp: add fswatch watchfunc backend - 643546b82b4b lsp: add handlers for inlay hints (#23736) - 317c80f460a7 lsp: add method filter to get_active_clients (#24319) - 688860741589 lsp: add more LSP defaults (#28500) - 0fe86f7e2403 lsp: add opts paramater to vim.lsp.codelens.refresh - 131a1ee82d15 lsp: add original LSP Location as item's user_data in locations_to_items (#23743) - f1775da07fe4 lsp: add snippet API (#25301) - db0ec84fb46b lsp: add type annotations for lsp.util.locations_to_items (#26694) - f190f758ac58 lsp: add vim.lsp.buf.subtypes(), vim.lsp.buf.supertypes() (#28388) - 451bc50d40ee lsp: deprecate severity_limit - e9b85acfbb8d lsp: enable workspace/didChangeWatchedFiles by default (#23190) - 4a09c178a190 lsp: fallback to code-action command on resolve failure (#25464) - 2f22ed6a00db lsp: handle multiple clients in omnifunc (#24381) - 63b340855156 lsp: implement textDocument/diagnostic (#24128) - 5e3cf9fb4bc7 lsp: improve control over placement of floating windows (#24494) - 15641f38cf4b lsp: include positionEncodings in default client capabilities - ddd92a70d2aa lsp: initial support for dynamic capabilities (#23681) - ca5de9306c00 lsp: inlay hints #23984 - 350d81856473 lsp: inlay_hint.is_enabled({filter}) #28523 - 33e1a8cd7042 lsp: map K to hover by default #24331 - 97bea3163a3f lsp: more annotations - 37079fca58f3 lsp: move inlay_hint() to vim.lsp (#24130) - 12c2c16acf70 lsp: opt-in to dynamicRegistration for inlay hints (#24102) - a49924a31852 lsp: remove notify from vim.lsp.buf_detach_client (#25140) - 8149bd089e15 lsp: report fswatch errors - fb54e6980ea6 lsp: set client offset_encoding if server supports positionEncoding - 96e19533f60a lsp: set kind in select call for codelens #23889 - 9af355964306 lsp: set workDoneToken in initialize request (#28182) - f736b075d371 lsp: snippet parsing using lpeg - 134b9ec48361 lsp: soft deprecate vim.lsp.for_each_buffer_client (#24104) - 63f9c2da9aab lsp: support completion itemDefaults - 3f788e73b345 lsp: support connect via named pipes/unix domain sockets (#26032) - 7e36c8e972f0 lsp: support for choice snippet nodes - 5c40f3e86a81 lsp: support vim.lsp.ListOpts.loclist in location_handler() - abd2352bd8b8 lsp: update LSP protocol 3.18 typings to date (#28730) - cfd4a9dfaf5f lsp: use treesitter for stylize markdown - d5063f4b290e lsp: vim.lsp.inlay_hint.enable(nil) applies to all buffers #28543 - c0952e62fd0e lua: add `vim.system()` - 9248dd77ac58 lua: add hl priority opts on yank (#23509) - 642586977158 lua: add meta file for vim submodules (#24525) - 3734519e3b4b lua: add noref to deepcopy - 7c661207cc43 lua: add ringbuffer (#22894) - 877d04d0fb83 lua: add vim.func._memoize - ab1edecfb7c7 lua: add vim.iter (#23029) - d675bd01b1e7 lua: allow vim.F.if_nil to take multiple arguments (#22903) - c379d72c4905 lua: allow vim.wo to be double indexed (#20288) - e52c25b7617a lua: deprecate vim.tbl_add_reverse_lookup - f1dfe32bf555 lua: enable(enable:boolean, filter:table) #28374 - 5b40a1c09dda lua: implement Iter:join() (#26416) - c01e624b0762 lua: more specific error messages for vim.api type checking - e1ff2c51cad7 lua: pass keys before mapping to vim.on_key() callback (#28098) - 2db719f6c2b6 lua: rename vim.loop -> vim.uv (#22846) - 6c0812d92e0c lua: specific error messages for type checking `opts` params - fd089c8e50c2 lua: typing for vim.fn.* (#24473) - 302d3cfb96d7 lua: use callable table as iterator in vim.iter (#23957) - 51c754b62e79 lua: use keyset type information - 8e5c48b08dad lua: vim.fs.normalize() resolves ".", ".." #28203 - 7e70ca0b4808 lua: vim.keycode (#22960) - 9e86f473e0f4 lua: vim.region accepts getpos() arg (#22635) - 4d04feb6629c lua: vim.tbl_contains supports general tables and predicates (#23040) - 48d533272e57 lua-types: types for vim.api.* (#24523) - 25e729970712 man: allow opening pages in current window (#27861) - 08db61b19b8f man: respect 'wrapmargin' when wrapping man pages (#24091) - f9944a78bcd3 meta: add types for vim.lpeg - deb6fd670479 msgpack-rpc: show actual request id in error message - 01fe6b9e6a84 msgpack_rpc: support out-of-order responses on `msgpack-rpc` - 619407eb548c nvim_open_term: convert LF => CRLF (#26384) - e98decf9a68e quickfix: support -q - to read 'errorfile' from stdin (#27303) - 7b0123dd6a06 remote: avoid --remote-ui infinite loop (#24465) - cca6c4c6986a rpc: allow empty string key in msgpack => Vim conversion - d0d4160dd13f runtime: highlight hl groups in syntax.txt (#25050) - 5f4895200a49 scripts: add lsp_types.lua (#23750) - 4e6096a67fe9 server: allow embed with listen (#25709) - 170c890dca8f shortmess: "q" flag fully hides recording message (#27415) - d3582e102b7b statuscolumn: re-evaluate for every screen line (#25885) - 224f303ee54c stdlib: add vim.base64 module (#25843) - fa131de9adb7 tabline: middle mouse button now closes tab (#27522) - c855eee919f2 term: enable reflow by default (#21124) - cd1b14f027f3 termdebug: improve `:Evaluate` floating window (#26621) - cffdf102d4f0 terminal: allow :terminal to take modifiers (#15427) - 0c89854da189 terminal: close shell terminals automatically - 7589336120a2 terminal: respond to OSC background and foreground request (#17197) - beca827212b1 terminal: trigger TermRequest autocommand events (#22159) - c6ec7fa8d741 treesitter: add 'injection.self' and 'injection.parent' - 6cfca21bac6b treesitter: add `@injection.filename` - 5d8ab32f3871 treesitter: add a query editor (#24703) - cb0a1a10b224 treesitter: add bash parser and queries - bb15fa035610 treesitter: add folding for `InspectTree` (#27518) - 9ce1623837a8 treesitter: add foldtext with treesitter highlighting (#25391) - 31c4ed26bc27 treesitter: add injection language fallback (#24659) - 28f54a787823 treesitter: add lang parameter to the query editor (#25181) - 88c8803aa167 treesitter: add python parser and queries - c194acbfc479 treesitter: add query_linter from nvim-treesitter/playground (#22784) - af040c3a079f treesitter: add support for setting query depths - 11844dde81c4 treesitter: bundle markdown parser and queries (#22481) - 5e6240ffc24e treesitter: handle quantified fold captures - f69658bc355e treesitter: highlight Lua files by default (#26824) - 988b472d902e treesitter: highlight help files by default (#26347) - 845d5b8b6419 treesitter: improve query error message - 189fb6203262 treesitter: improved logging (#23638) - c0b99bb1de8d treesitter: show root nodes in :InspectTree (#26944) - cb46f6e46726 treesitter: support URLs (#27132) - ff6092b4ee3c treesitter: update Bash parser and queries to v0.21.0 - 8dda630ae942 treesitter: update C parser and queries to v0.21.0 - 3836eeb90182 treesitter: update C queries from upstream - aca4ad430bdc treesitter: update Lua parser and queries to v0.1.0 - 5e875ae8d07d treesitter: update Markdown parsers and queries to v0.2.1 - 8a3385dde75f treesitter: update Python parser and queries to v0.21.0 - 20dcbaaaf880 treesitter: update Vim parser and queries to v0.4.0 - 987dff6713af treesitter: update Vimdoc parser and queries to v2.4.0 - 1384bebd5aa3 treesitter: update query parser to v0.2.0 - 668f16bac779 treesitter: upstream query omnifunc from playground (#23394) - a478bf936b2a treesitter: use 0-based indexing to show ranges in `:InspectTree` - ac8ed77afb35 tui: add 'termsync' option (#25871) - 4ee9e58056a9 tui: query extended underline support using DECRQSS (#28052) - b4b7ca2d548a tui: support DCS responses in TermResponse event (#26061) - 622ae2f53e77 tui: support Super and Meta modifiers (#24357) - a14267036076 tui: support undercurl in WezTerm (#28037) - 56627ca2423e tui: use TermResponse event for OSC responses (#25868) - 32b49448b227 tutor: add Japanese tutor #27268 - 9c2270b83459 types: add `test/.luarc.json` - d3a8e9217f39 ui: add chdir UI event (#27093) - 6ea6b3fee27d ui: add support for OSC 8 hyperlinks (#27109) - b72931e70407 ui: allow non-zero 'cmdheight' with ext_messages - 2615ed879e66 ui: allow to get the highlight namespace - e38027ef69f7 ui: completeopt support popup like vim - 2e4e12756a69 ui: indicate margins for the area used by win_viewport - efa9b299a7cb ui: inline virtual text - dacd34364ff3 ui-ext: make 'mousehide' into proper ui_option (#25532) - 43ded8d35844 version: unverbose ":version", ":verbose version" #24195 - 0a598c13b186 vim.deprecate: only issue warning if neovim version is high enough - a767c046f4e6 vim.iter: add Iter:flatten (#26786) - af6e6ccf3dee vim.ui: vim.ui.open, "gx" without netrw - fa4b02fa67e5 vim.version: add `vim.version.le` and `vim.version.ge` - 27a566f3f8e0 vimdoc: support Markdown code blocks (#25127) FIXES -------------------------------------------------------------------------------- - f5573fba3d46 Remove nested for_each_tree in TSTreeView (#26328) - ae28ef327e02 adjust error message for error in UI event callback (#28200) - ebe489d8f0ed allow multiline message for echoerr (#25380) - 592bc831ce4b avoid ui_grid_cursor_goto when drawing window separators - d6483793e1c3 buffer overrun in lmpack_session_receive - 3bbb0aa3993f checkhealth warning even if init.lua exists #25306 - 5cb906e91cb5 correct versions in deprecation warnings - 118fd8367c39 deduplicate gen_cflags - eb4676c67f5d disallow removing extmarks in on_lines callbacks (#23219) - 6e9b204afbe5 doc errors - 77d3526a3d08 explain that user should run nvim with -V1 to see more information - fd791db0eceb fix ASAN errors on clang 17 (#25469) - bb38c066a965 fix compiler warning from clang - 478273a4233d fix iter_matches call in query linter (#27496) - bb7324292cda flush UI state before blocking in vim.wait (#25938) - 44d4ae448d0a function was renamed (#23772) - 1dd700a8d927 gf fails on "foo/bar.txt:1:2" on Windows - 6e703f778fe7 handle argv not present in nvim_get_chan_info - 56dc8b9212ef heap-buffer-overflow in file_name_in_line - 74b2f6c3d956 ignore non-existent properties during header generation - f5a09f1b0352 invoke changed_bytes when rewriting <Tab> char #25125 - b8273c9a3396 lua annotations - 69d49727d776 luacheck - 4ce3159e24e1 missing case in setxattr error handling (#26176) - 41fb98d6fab5 move fswatch linux check inside of vim.schedule (#27824) - ba58c6f8a44c only attempt to close timer if not already closing (#26047) - b400b947f368 prevent child processes from inheriting ui channel file descriptors - 99b8a343e197 quick update, squash later - 83b51b36aa46 raise TS min version - a090d43d61b5 splitting of big UI messages - 2424c3e6967e support UNC paths in vim.fs.normalize - 43e76cc3462b tostring(vim.version()) fails if build is NIL #24097 - 8c7a8be27437 transposed xcalloc arguments (#28695) - 35f453f65df2 type warnings in shared.lua - f112ac73bd34 unreliable "checkhealth completions" test - b32b5b2711ed use BEL to terminate OSC 11 request (#26335) - d95e3a4c9c8f use no_ff instead of ffdos as condition - a1bec02c1e10 use snprintf instead of sprintf - ca887b80a911 version-range < and <= #23539 - c1ee187f8214 vim.loop in luv threads (#23924) - fe4583127f0a vim.validate() order is not deterministic #28377 - be8b15200d70 windows timeouts have exit code 1 - 1f8fb7c00048 :let: fix error when applying operator to boolean option (#24030) - 5a3752889c5b NVIM_APPNAME: show error message if $NVIM_APPNAME is invalid - c4ad15ae324f PVS/V009: add top-level message - 128e194f64b0 PVS/V1001: variable is assigned but is not used - 1bbbca267d05 PVS/V547: expression is always true/false - 592e4472da5f PVS/V564: the '|' operator is applied to bool type value - 30d311ebcf94 PVS/V592: expression is enclosed by parentheses twice - 3ecd45ded044 api: allow negative column arguments for nvim_buf_set_text (#23501) - 3ac952d4e27f api: avoid assertion when autocmd group id is 0 (#23210) - b2a8a9314798 api: avoid immediate TextChanged with nvim_create_buf (#25492) - ef7ae66eef4e api: avoid integer truncation - b1e24f240bae api: avoid open_win UAF if target buf deleted by autocmds - 0a81ec14a4c0 api: better topline adjustments in nvim_buf_set_lines - c18f3cfcdb8f api: crash after nvim_win_set_config title/footer validation error (#26606) - aa4e47f704c5 api: disallow some more functions during textlock - 22d9338afcea api: disallow win_set_buf from changing cmdwin's old curbuf (#24745) - da979ae04b7a api: do not re-apply win_config.style when missing - 344906a08f09 api: do not update grid position in nvim_win_set_cursor (#28235) - 22205f36a621 api: don't change title when setting buffer in a window (#23492) - 711a2f5ff67d api: don't leak memory with nvim_win_get_ns (#27570) - 1cf51a07a6bf api: don't set coladd of mark (#26648) - 5fd1bac65ed0 api: don't use stl 'fillchar' for "use_statuscol_lnum" (#27501) - a3751f5de22f api: dont change curwin for nvim_win_set_height - 1ff4562502e1 api: dont change curwin for nvim_win_set_width - 59fed8bb6457 api: extmark highlight groups not always included in details (#23179) - 9b9030ff2ca8 api: fix inconsistent behavior of topline touched in recent refactor - fc2a56fe61a9 api: fix set_lines viewport adjustment, but this time good - b7763d7f6b7f api: get virtual text with multiple hl properly (#25307) - b3be7b741386 api: handle NUL in nvim_err_write() and nvim_out_write() (#25354) - 132bbd1cbd49 api: handle clearing out last line of non-current buffer - d942c2b9432d api: handle win_split_ins failure properly - 5cfdaaaeac0f api: ignore 'autochdir' when renaming other buf (#28376) - 2fc234372883 api: ignore 'autochdir' when setting buf in other win (#28371) - 7367838359bf api: limit depth of nvim_cmd (#27225) - 0da27e9bdec1 api: load buffer first on nvim_buf_set_lines (#25823) - 4e5c633ed487 api: make getting explicit empty hl in virtual text work (#28697) - d05d63a18ff8 api: make nvim_get_hl not return non-existing groups - a70eae57bd44 api: make open_win block only enter/leave events if !enter && !noautocmd - 5d58136cccc7 api: make open_win/win_set_config check if splitting allowed - 4ec8fd43bfdf api: make width/height for split by nvim_open_win work (#28341) - b1577d371a6d api: make win_set_config with "win" for splits need "split/vertical" - 0330dd9e69de api: mark nvim__complete_set as experimental #28579 - d22172f36bbe api: more intuitive cursor updates in nvim_buf_set_text - b051b131f5ce api: nvim_buf_get_offset in a new buffer with zero or one lines - e0453d7f5743 api: nvim_cmd{cmd="win_getid"} parsed as :winsize #24181 - 6091df6b7a06 api: nvim_create_buf assert fails if autocmds set &swapfile - d5c23d72a5e4 api: nvim_create_buf leaks memory if buffer is loaded early - b7708eac24c2 api: nvim_get_hl should return default flag - a741c7fd0465 api: nvim_parse_cmd error message in pcall() #23297 - e55a502ed413 api: open_win fire Buf* events when !enter && !noautocmd if entered early - a873f33993ef api: open_win fire BufWinEnter for other buffer when !enter && !noautocmd - e7c262f5553c api: patch some cmdwin/textlock holes - a9968912b741 api: redundant error when using `nvim_cmd` (#24010) - dbcba26bf1e4 api: revert unintended change of optional bool params - b25753381c60 api: set script context when using nvim_set_hl (#28123) - d3ea9a04bc73 api: update "w_scwidth" in nvim_eval_statusline() - c971f538ab87 api: update grid cursor in nvim_win_set_cursor() - 130cb4815a5c api: use a conditional stack for nvim_cmd (#26341) - cf9f002f31c8 api: use correct buffer for "range" in nvim__redraw (#28614) - 77118d0da8ba api: use text_locked() to check textlock - bcb70eeac480 api: win_set_config autocmds crash when moving win to other tabpage - 233649bc7577 api: win_set_config fires unnecessary autocmds - b52d15853e89 api: win_set_config set tp_curwin of win moved from other tabpage - 54022a2946ac api: win_set_config update statuslines after removing splits - a9cd8467cbd5 api: wrong nvim_buf_set_extmark error for invalid hl_mode - 4d3a38ac074f api, lua: handle setting v: variables properly (#25325) - 92760a7f42a9 api, lua: make blank lines in a message work properly (#24244) - 08fc1ebbaa49 api/buffer: fix handling of viewport of non-current buffer - 24e3ee9d07e1 api/options: validate buf and win - 139e6f68f937 autocmd: API functions accept garbage after event name #25523 - 02d00cf3eed6 backup: E1509 when writing extended attr to symlink (#28014) - 746a153bc1a1 base64: only check padding if leftover index is set (#25854) - 533e01a75b71 base64: properly handle embedded NULLs when decoding (#28349) - 095bd8d0f834 buffer: do not filter help buffer - e5d9b15044d5 buffer_updates: correct buffer updates when splitting empty line - 11865dbe3917 build: better deps for doc - ffaf74f1477d build: distinguish vim.mpack from global require'mpack' - f9416470b15b build: include FindPackageHandleStandardArgs - ade42d531bcc build: teach cmake about vvars - da7178cbbf4e builtin: fix incorrect optional fields for fn.sign_define - 6fa0f303d7f0 builtin: parameter mismatch between winsaveview and winrestview - 3159a2c28f5e change: update fold after on_bytes (#26364) - 342c7da4bd2c channel: use os_write() instead of fwrite() for stderr (#26689) - cd6458123fb4 charset: fix wrong display of 0xffff (#24158) - 603f3b36a4d5 checkhealth: error in node.js check #28348 - b0978fca6b82 checkhealth: fix crash due to incorrect argument type - 7f94a032e1cf checkhealth: shell_error and cpanm module - bfdec5b0e719 clang: null pointer dereference in parse_msgpack #25389 - 1027ccac6d0a clangd: check size of array before applying qsort on it - cdd801746943 clangd: set block pointer to null in case map is empty - 6851b265ba1d clipboard: don't pass --foreground to wl-copy (#25481) - c3de6524a53d clipboard: ignore exit caused by signal #23378 - 3128cff6b198 clipboard: increase OSC 52 wait timeout (#25936) - 46ceefb52be6 clipboard: make getreg() accurate for clipboard registers (#26740) - d2983dcdb1ca clipboard: make osc52 work with PUC Lua (#26014) - e51e52417550 cmake: restore previously undocumented workround, now documented - 3688735c2b63 cmdline: don't redraw 'tabline' in Ex mode (#24123) - c72d877c3374 cmdline: wrong 'incsearch' highlighting after :redraw (#27947) - bc67bbe4469b codelens: add buffer and line checks before displaying codelens (#23887) - 2b1a6e759709 colorscheme: add missing LSP groups - 0c850add3ece colorscheme: default statusline groups usability #26921 - 8b2365369503 colorscheme: link LSP semantic tokens to treesitter groups - 62e0e0349c00 colorscheme: try .lua files in 'rtp' before .vim files in 'pp' (#23727) - eca72def1f08 colorscheme: typo - d4bd6b1eaab3 colorscheme: use explicit normal foreground in syntax groups - 3c724fe1f3ef column: 'statuscolumn' not drawn after virt_lines with "n" in 'cpo' (#22967) - cdc028e97d98 column: add truncated width during estimation for 'statuscolumn' - e89071522cb0 column: always set b_signcols.max - c126a3756a09 column: apply numhl signs when 'signcolumn' is "no" (#26167) - 2ded2e75f4a6 column: avoid exceeding configured 'signcolumn' width - b50fdcba4a1d column: clear "b_signcols" before moving saved marks - 13d50c3b13fb column: clear "b_signcols" when marktree is cleared - ec7453804421 column: correct width after truncated 'statuscolumn' error (#26737) - 2bdef6dd2a75 column: don't overflow sign column with extmark signs (#23854) - bab4bcdefbda column: don't reset 'statuscolumn' width after it has been drawn - c509f4907bf7 column: fill 'statuscolumn' clickdefs with evaluated width (#26891) - 25e62697c32e column: fix wrong cursor with 'statuscolumn' and cpo+=n (#24268) - dbf6be296df6 column: full redraw with 'stc, 'rnu' and inserted lines (#27712) - 7d0a23973b7d column: handle unprintable chars in 'statuscolumn' (#24198) - 0db6946b39fd column: handle w_redr_statuscol at end filler lines (#27365) - 97122eaa1cbe column: ignore empty signcols range (#28177) - 967c7abde3c6 column: keep track of number of lines with number of signs - f871fee8b699 column: pass kFalse when initializing "b_signcols.count" - 44d4f0357341 column: rebuild status column when sign column is invalid - c6864b0d146f column: redraw 'statuscolumn' on wrapped lines with 'relativenumber' - 35cec0de4acd column: redraw and update signcols for paired extmark - d88814ef68b3 column: remove sign from line it was previously on with undo - df399ea0d20e column: reset decor state before starting from top - 5a4e0b837f90 column: use a single path for sign sorting (#27431) - a878e02d5de7 column: use maxwidth to allocate/fill 'statuscolumn' click defs #24190 - 783b0aba4116 completion: check that healthcheck name is string (#28458) - fbeef0d4ef1a completion: don't add backslashes to runtime pattern (#24296) - cdc8bacc7945 completion: filter results with complete+=f (#26029) - af8500af6457 completion: improve popup window position (#26739) - d1b2a5cf5fa5 completion: make sure the buffer name is valid (#25975) - e9b9a86cd5a5 context: don't crash on invalid arg to nvim_get_context (#25977) - fdaf6bc5573f context: don't leak memory on multiple invalid objects (#25979) - 55be4a4e26ea coverity: dead code #25562 - 6d698c86d0bd coverity: unhandled retval for marktree_itr_get_overlap() #26518 - 6f49ed58c3d8 coverity/348240: memory leak in put_view() - 9d48266bed96 coverity/471380: null dereference in get_local_additions() - ae48d965d70c coverity/477623,477624: guard null pointer dereference in kv_concat_len (#27022) - 2b0acacb3c2c decor: allow adding providers during redraw - 5ca330859cf2 decor: check decor kind before accessing union field (#27205) - 60d320dea3fe decoration_provider: don't leak memory on error (#24410) - 65738202f8be decorations: better approximation of botline #24794 - 2accf2480530 decorations: crash with revised mark with changed decoration flags - a0e9ef09d7af decorations: do not apply sign highlight id as range attr id - fba17d5b882e decorations: fix imbalanced sign count - 444f37fe510f decorations: incompletely displayed line should also get decorations - dc48a98f9ac6 decorations: validate botline for on_win - 328a2373514a defaults: auto-close terminal for &shell with args (#28276) - 5aa1ba3efe05 defaults: background detection in tmux (#26557) - 5e98439f6d8c defaults: diagnostic mappings descriptions #28646 - ccb5a76e5a2c defaults: don't use nvim_feedkeys in default mappings (#24520) - 85cb0b0ddc59 defaults: make terminal autoclose not block other events (#27581) - aa1d0ac095dc defaults: only repeat macro for each selected line if linewise (#28289) - eef2aedff631 defaults: remove tmux background detection passthrough (#27571) - 5b45efbee6eb defaults: set 'fsync' #26034 - 8df374237814 defaults: use augroup for default autocommands (#26933) - a8e4ee2f2b43 defaults: validate 'channel' before responding to OSC request (#27594) - 6318edadc32a defaults: visual hash (#) on text with "?" - abd380e28d48 defaults: visual mode star (*,#) is fragile - b9a0e762f1d7 defaults: visual star (*) on text with "?" - 9b4b23493d69 defaults: wait until VimEnter to set background (#26284) - 72e3d8c3f949 deps: bump luv to 1.48.0-2 - 87db6d894ad2 deps: make sure --force-config takes effect - 7aad4643f9a6 deps: remove stray conflict marker - 8a6716682e6e deps: restore functionality of USE_EXISTING_SRC_DIR - d4dc884012e8 deps: restore functionality of USE_EXISTING_SRC_DIR - d27214331815 diagnostic: always return copies of diagnostic items (#25010) - 29d5ff6ac4ea diagnostic: check for sign namespace instead of sign group - 3d8f0cb695a5 diagnostic: check if delete failed in `qf_fill_buffer()` (#25932) - 89ffdebd20fd diagnostic: fix typing on field |diagnostic-severity| - 83635e4e3db9 diagnostic: get border from config (#28531) - 96f59e1b9902 diagnostic: invalid col number compare in next_diagnostic (#28397) - ad76b050eb2c diagnostic: open_float on multi-line diagnostics #28301 - 37011bc45ef3 diagnostic: rename buffer → bufnr in type annotation (#23042) - 50284d07b6f0 diagnostic: typing - a4fc3bb0e68c diagnostic: vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273 - add1b10b7901 diagnostic: virtual_text prefix function should have index and total (#25801) - 35f475d0a51a diagnostics: if buffer not loaded, skip handlers that set extmark (#25628) - 5a25dcc5a4c7 diff: filler lines for hunks bigger than linematch limit (#24676) - 2f9ee9b6cfc6 doc: improve doc generation of types using lpeg - c4417ae70c03 doc: prevent doxygen confusion - 67f53323446d docs: clean up non-docstring comments for vimdoc gen - ae7020c667b5 docs: fix TSNode incorrect signatures - ab65a98adba4 docs: ignore_invalid #24174 - f40df63bdca3 docs: make lines not overflow in vim docs - 0a90e4b05ad3 docs: match DocSearch style with site theme - 0d149bb18639 docs: the runtimepath is not the runtime path - 957d05d16bc8 docs: too much whitespace around <pre> blocks #24151 - d931b829e926 docs: vimdoc syntax errors - 036da0d07921 docs: vimdoc syntax errors - 17c59e417f81 docs: vimdoc syntax errors - 34b57508a78b drawline: check filler_todo in place of removed draw_state (#27889) - 455bca1ba86a drawline: combine extmark highligh with area hl correctly - 329979715063 drawline: consider position in linebuf for foldcolumn (#26803) - 889f81c65fa4 drawline: don't invoke on_line for filler line (#28219) - 2b9d3869f8f3 drawline: don't use temporary "v" variable when not needed (#26777) - 06694203e51e drawline: fix missing Visual hl on double-width fold char (#24308) - d5488633f68f drawline: initialize linebuf_attr to 0 instead of -1 (#27840) - e9280a68f7ea drawline: initialize variable - 2819718873a3 drawline: initialize variable - 36941942d609 drawline: inline virt_text hl_mode inside syntax/extmark hl (#24273) - 37b73cf14b11 drawline: make cursorlineopt=screenline work with resized grid - be1d09c42722 drawline: missing NUL termination when drawing TAB (#27307) - 5b3144781137 drawline: update prev_ptr after getting syntax attrs (#27072) - 14839c5d18c2 edit: backspace adds extra spaces for inline virtual text (#28005) - 267e90f31d18 edit: don't go to Terminal mode when stopping Insert mode (#27033) - b2e8c0df2062 edit: fix K_EVENT interfering with 'digraph' (#24258) - 143a17833280 editorconfig: add missing root validation (#23462) - cbbda3bcd775 editorconfig: check that buffer is valid (#23922) - abb8c2c453d1 editorconfig: do not set 'endofline' - df2f5e39127e editorconfig: highlight properties with dashes (#24407) - dc45fb4655f5 editorconfig: only warn once on errors - cdbc3e3f3e95 editorconfig: syntax error regression - bf0c69e50410 eval: correct failure return value for readfile/blob (#27722) - 5b312cd5f676 eval: make has('pythonx') work properly (#27739) - 0e4086b74189 eval: prevent double-free in garbage collection (#22990) - 12d123959f56 eval: properly support checking v:lua function in exists() (#27124) - b8c34efe3399 eval: skip over v:lua properly (#27517) - ad2fad9a3b07 event-loop: flush UI when no input is available (#25728) - 672556525893 event-loop: process input before events (#27358) - 58a1ef8e6a93 events: avoid unnecessary CursorMoved (#24675) - bf9e92c81c3c events: check for WinResized/WinScrolled in terminal mode (#27226) - dd24ea819507 events: don't expand non-file as file name - 774a32e5fe73 events: null dereference in autocmd functions - a8cfdf43bc62 events: trigger VimResume on next UI request (#24426) - a114a21eff58 ex_getln: initialize pointer with NULL - 9e7c4fe57915 exception: remember whether message is multiline (#25351) - 4a098b97e535 excmd: append original command to error message - 75d9c413d492 excmd: make :def unknown rather than unimplemented (#23150) - f1dd75c2af40 exitfree: don't use ex commands to close windows in free_all_mem() - 79a558277b1b extmark: fix crash when stepping out from internal node - a78fd18ed92d extmark: fix cursor position with both left and right gravity inline text - 320e9c1c2181 extmark: only invalidate unpaired marks on deleted rows - 8e97edb93f01 extmark: restore extmarks when completing original text - 2d33a766a17b extmarks: `U` changed_bytes after extmark_splice (#26501) - 23c21e763074 extmarks: account for rightleft when drawing virt text (#25262) - d54156ed08b8 extmarks: blending space shouldn't overwrite wide char (#26960) - 54225bdb021e extmarks: crash with sign after many marks - 65b1fd00a7aa extmarks: do not remove decor from invalid old marks - 437d35dbf7d9 extmarks: do not remove invalid marks from decor upon deletion - a05bbc60eaf2 extmarks: don't position overlay virt_text halfway a char (#24027) - 4dd43e31db8f extmarks: don't show virt lines for end mark (#23792) - dfa8b582a64a extmarks: draw TAB in virt_text properly with 'rl' (#25381) - a6e4793bafa0 extmarks: draw virt_text below diff filler lines properly (#25170) - 958cc22836f1 extmarks: empty inline virt_text interfering with DiffText (#24101) - 0534ad8ca57b extmarks: empty inline virt_text interfering with Visual highlight - 31a51acdc353 extmarks: fix heap buffer overflow caused by inline virtual text (#23851) - 9c41a81dec15 extmarks: fix virt_text_hide off-by-one hiding (#23795) - a6dd67f5b66c extmarks: fix virt_text_hide with 'nowrap' and multibyte (#23757) - 818d7f6daf30 extmarks: fix win_col virt_text drawn on wrong screen line (#25264) - c4df2f08b689 extmarks: fix wrong highlight after "combine" virt_text (#24281) - b65cd7ff1a0a extmarks: fix wrong virt_text position after wrapped TAB (#25168) - 4c7cec4e2934 extmarks: handle inline virt_text with empty chunk (#24005) - ee3d4f6b90d0 extmarks: handle overwriting right half of wide char (#26951) - f4f1ce1d167c extmarks: hide inline virt_text properly with 'smoothscroll' (#24106) - 34a786bc4959 extmarks: inline virt_text support multiple hl groups (#25303) - 5a6c7c805b8b extmarks: make empty "conceal" respect &conceallevel = 1 (#24785) - 510e1f131b56 extmarks: make right_align and win_col work on wrapped line (#23759) - 215244f74950 extmarks: missing "spell" and "conceal" in details (#27116) - 35e50d79c630 extmarks: overlay virt_text position after 'showbreak' (#25175) - a0790558c309 extmarks: priority order of inline and non-inline virt_text (#27532) - b52bd8a2dea8 extmarks: properly handle virt_text on next screen line (#25166) - a376d979bda1 extmarks: redraw line on adding/removing conceal (#27463) - 2d9e063a63f8 extmarks: redraw pre-undo position (#27437) - 2137edbd4f15 extmarks: redraw properly with scoped inline virt_text (#27569) - 1cc358aed6fd extmarks: restore old position before revalidating - 0818d655288e extmarks: skip virt_text if it is out of window (#25658) - 19d63563e1cc extmarks: splice earlier when opening new line (#28108) - 362df0f7938a extmarks: wrong display when changing text with virt_lines (#24879) - d5a85d737aa2 f_wait: flush UI before blocking (#25962) - 81f67b79e8a3 file_search: path with spaces in finddir() and findfile() (#25493) - a69c72063994 fileio: fix off-by-one in rename_with_tmp (#27780) - c6c21db82b31 filetype: add typing and dry (#24573) - 020d1f626a3f filetype: call on_detect before setting buffer filetype - fdf5013e218c filetype: correctly detect bash-fc-{id} files as "sh" - d6f406db4527 filetype: don't use fnamemodify() with :e for extension (#27976) - 670c7609c855 filetype: make sure buffer is valid before call nvim_buf_call (#24922) - af38b46a2574 filetype: return on_detect function when matching by file contents - 2955c921ceaf filetype: use unexpanded file name (#27931) - e32af31ee89c flake: clang-tools moved to nativeBuildInputs (#26955) - fd08fd3de302 float: add fixd option - 884470124db3 float: allow floating window in cmdline area - 9ecb43b6372f float: apply 'winblend' to title/footer highlight (#25999) - 898371fc9fae float: don't relative flaot win itself - fcdfbb430377 float: fix some other crashes with :unhide or :all (#25328) - 3ea124a8d9f0 float: improve error message when reconfig failed (#25076) - c5abf487f19e float: make "fixed" work with relative=win (#25243) - 03e8b5fc91f9 float: make bufpos work properly with resized parent grid - 437ed3cee2d2 float: trigger winnew event when float window create - f5953edbac14 float: update position of anchored windows first (#25133) - 9de157bce4b6 float: win_get_bordertext_col returning negative column number (#25752) - 5f18dd301375 float: wrong position when bufpos is set - 0e01e815520e folds: allow overlay virtual text on folded line (#23892) - ee986ee0449b folds: combined Folded and Visual highlights (#23752) - ded01a819ab0 folds: don't show search or match highlighting on fold (#24084) - 811140e276a6 folds: fix missing virt_lines above when fold is hidden (#24274) - 678548a2b446 folds: show Folded highlight in Visual selection (#23741) - 58f94861442d folds: update folds in Insert mode with fdm=indent (#24402) - 38e38d1b401e fs: allow backslash characters in unix paths - 8a7e3353eb5b fs: make `normalize()` work with '/' path (#24047) - ae5095cac9b2 fs: use generics for better typing - e4da418ba838 fs.lua: normalize slash truncation (#23753) - 06fcf71bd095 fswatch: --latency is locale dependent - 502a7a0558b0 ftplugin: respect runtimepath ordering - 03a2c5b77200 ftplugin: source Lua files after Vimscript files per directory (#23801) - be5cf3383622 gen_help_html: type warnings, spell_ignore_files #27254 - 6c35fb421e88 gen_lsp.lua: improve type name, and fix wrong type inheritance - 214b12513277 gen_lsp.lua: no notifications in lsp.Methods #24530 - 765729a145d3 gen_vimdoc: INCLUDE_DEPRECATED not generating docs for deprecateds - ccf328172bac gen_vimfn_types: don't include tag before signature's line (#24492) - 86c9d8b53cd9 gen_vimvim: correctly add aliases to vimAutoEvent (#23429) - 240c41e1af55 genvimvim: add special abbreviations of :delete (#23172) - 51ea753747c7 genvimvim: generate prefixed boolean options properly (#27487) - 9f32deba56ea grid: add start column when getting char on line (#25627) - 4ed1c2a8afc7 grid: don't draw beyond max column (#26172) - 9c202b9392f3 grid: handle clearing half a double-width char (#27023) - 6a486c44e66f gx: move to to _init_default_mappings #24420 - 67b2ed1004ae gx: visual selection, expand env vars - e39b6d0c5241 health: "attempt to concatenate nil" - 7ffe450173d2 health: check for _host_prog variables properly (#23014) - 50cd5ed360ee health: check more "old" files - f6dcc464f220 health: check unmatching python_glob as empty table (#28215) - 6818ba271cb4 health: clients may not support watchfiles #28710 - 03a021f378e8 health: combine python and virtualenv healthchecks (#23004) - c67efe3a9c5b health: correctly expand and resolve PYENV_ROOT (#26953) - 88eb0ad149d3 health: fix tmux RGB capability detection (#26886) - cde4892b4955 health: fix typo in function name - 63a17322dd83 health: improve python executable check error handling (#26954) - ba88fd886ae8 health: malformed call to warn() #26217 - 8c6f97bef89d health: properly use the value of $PYENV_VERSION (#23109) - c8ebb04e92c9 health: replace healthFoo with DiagnosticFoo (#23475) - 843c1bed95d3 health: stop job properly on timeout (#23877) - 96d0c709b66e healthcheck: expand vimrc variable (#28379) - 4229bbe514b7 helptags: make multibyte help tags work properly (#23975) - 7b6d041baed7 heredoc: allow missing end marker for scripts - a2f17e97ec2d highlight: add `FloatFooter` to 'highlight_defs.h' (#25577) - 837f26809373 highlight: add `Nvim{Light,Dark}Gray{1,2,3,4}` colors - 8afb3a49c076 highlight: add create param in nvim_get_hl - f8ea49cfe1f4 highlight: add force in nvim_set_hl - 4ce0ada0d4c8 highlight: add missing g: prefix for colors_name (#22952) - 03ca36d1f8d0 highlight: apply 'winblend' to NormalNC (#23555) - 6c3e170e5668 highlight: apply 'winblend' to float border (#25981) - d4872377fef7 highlight: attr set all when normal attr changed - dcaf2073369c highlight: combine ColorColumn with low-priority CursorLine (#23017) - 66925f14de81 highlight: consistently spell "Goldenrod" - 51836517738b highlight: correct hi command output - ca7dd33fa783 highlight: don't show CursorColumn on current line (#27848) - 59289fb987bd highlight: make CurSearch work properly with 'winhl' (#24448) - b11a8c1b5d39 highlight: remove unnecessary assignment to char_attr for 'spell' (#23713) - 9a2c98087b90 highlight: update `IncSearch` to link to `CurSearch` - ab9257575387 highlight: winhl receive wrong argument - b60a2ab4cb7b inccommand: block errors when parsing command line again (#24374) - bc5b0da84ec4 inccommand: don't crash with "split" and 'n' flag - 382ea4d40282 inccommand: don't preview in Ex mode (#26587) - c1c2a1b5dd1d inccommand: don't save information of a buffer twice (#24501) - ef44e597294e inccommand: don't set an invalid 'undolevels' value (#24575) - ba9f86a9cee5 inccommand: improve preview buffer number handling (#27087) - 643bea31b867 inccommand: restrict cmdpreview undo calls (#24289) - 1dba570e63ed inccommand: save and restore '[ and '] marks (#26442) - 35ffe58ea4a3 inccommand: update topline after moving cursor (#27341) - a14c7809181c input: set termkey buffer size to read stream capacity - b61575ba70f8 intro: clear intro if new buffer is shown in focused float - 9530a2301680 intro: link showing intro to state at start - 0570a19c8a84 intro: make intro explicitly stateful - d1a30221fcb1 intro: redrawing intro exposing pseudo-randomness - 21360523cd3d intro: still show intro message with floating window - 6b96122453fd iter: add tag to packed table - 2ee8ace217b8 iter: make pipeline termination conditions consistent (#24614) - 94894068794d iter: remove special case totable for map-like tables - 57ccd8241735 job-control: fix use after free (#25223) - 1c71c32b2910 job-control: make jobwait() flush UI after hiding cursor (#25927) - e057b38e7037 json: allow objects with empty keys #25564 - af6537bc66e2 jumplist: Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461 - 017ff93b020e keycodes: recognize <t_xx> as a key (#24700) - 6709f7f8f130 keycodes: simplify S- properly when D- is present (#27316) - 4447cefa4815 l10n: update Japanese translations (#27856) - 7d17ab5b6f07 l10n: update Ukrainian translations (#26819) - 908843df61fc languagetree: apply `resolve_lang` to `metadata['injection.language']` - e353c869cea4 languagetree: don't treat unparsed nodes as occupying full range - 6b5f44817e93 languagetree: remove double recursion in LanguageTree:parse - f5530bf566f6 linematch: initialize array - 766f4978d6cb lint: lint warnings #24226 - 5465adcbab29 lint: use tbl_contains - 0804034c07ad loader: cache path ambiguity #24491 - 89135cff030b loader: remove cyclic dependency on vim.fs (when --luamod-dev) - 66c66d8db8ab loader: reset hashes when running the loader - ec80e4cb4d31 log: increase size of buffer for nvim instance name - 4d0f4c3de9cb lsp: E403 if doc contains multiple codeblocks #24458 - 20c331915f4e lsp: SignatureHelp docstring is not escaped #16702 - 01691c5447d9 lsp: abort callHierarchy on no result (#28102) - 9abced6ad95f lsp: account for border height in max floating popup height (#25539) - 3e016fa8d4f7 lsp: actually send diagnostic-tags back to the server - 37d8e5045936 lsp: add "silent" option to vim.lsp.start (#28478) - 2e1f5055acde lsp: add assertion for explicit bufnr in apply_text_edits (#27614) - 542c910a1d3f lsp: add missing LSP semantic token highlight links - be5e36115410 lsp: add param assert in client_is_stopped (#23857) - ac0e8323dc82 lsp: add parentheses to generated union array types (#27560) - 0fcbda59871e lsp: add snippet regression test (#27618) - e42fdaad21a8 lsp: add spacing for inlay hints separately #24079 - 48bcc7b9710d lsp: advertise workspace.didChangeConfiguration capability (#26028) - c07dceba335c lsp: allow Lua pattern chars in code action filter (#24041) - 3bf887f6e08f lsp: always return boolean in lsp.buf_client_attach (#24077) - 966eb8e0b3be lsp: announce publishDiagnostics.dataSupport (#24442) - 39fc340276a4 lsp: avoid assertion when `client_hints` do not exist (#28461) - 47dbda97d2f4 lsp: buffer messages until connected to server (#28507) - adbe7f368397 lsp: call `on_list()` even for single location (#25830) - 15983cf2c64c lsp: cancel session when leaving snippet region (#25762) - 816b56f878f0 lsp: cancel watchers when closing a client - 9b8a0755390b lsp: change `silent` in lsp.start.Opts to optional (#28524) - d3e035257473 lsp: check if inlay hints are enabled for a buffer before disabling (#24074) - fa9a85ae468b lsp: clean up duplicate and unused meta type annotations - 8bd6f7c20b40 lsp: clear codelens on LspDetach (#24903) - 97c0a52416b8 lsp: correct deprecation message #28403 - aa62898ae329 lsp: correct the error message's cmd on spawning (#27632) - 77a9f3395bd1 lsp: create codelens request parameters for each buffer (#27699) - 9281edb334a3 lsp: create per client params in lsp.buf.code_action - 39cc38a87b29 lsp: defer writing error msgs (#27688) - 1b679ac19287 lsp: define LspInlayHint highlight group #24073 - dc8c086c7e73 lsp: directly rename the existing buffers when renaming (#27690) - c1a95d9653f3 lsp: disable didChangeWatchedFiles on Linux - 2fde6295df8c lsp: display initialization errors (#25409) - 94127cb5df0a lsp: do not add extra indentation - cc87dda31a5b lsp: do not assume client capability exists in watchfiles check (#24550) - 0fe0cf5adaab lsp: do not cancel snippet when selecting placeholder (#25835) - 073035a030f5 lsp: don't register didChangeWatchedFiles when capability not set (#23689) - 5eee633c9705 lsp: don't start additional client if attach failed (#28744) - 21fa19f3e8c1 lsp: don't use hl_mode = combine for inlay hints #24276 - 96b94f8d7777 lsp: duplicate on_detach, on_reload callbacks #24067 - b95b6ed9753d lsp: empty commands should not be considered executable (#28216) - c3c673cdeca2 lsp: enable() does not activate inlay hints on open buffers #28629 - b2c26a875b9d lsp: ensure buffer is not attached more than once - fa0a25dcb3a4 lsp: error in reset_timer on second detach #24117 - 72e64a1afef0 lsp: extra "." when completing with tsserver #24646 - 031088fc0aff lsp: filetype matching to documentSelector in dynamic capabilities (#25425) - d191bdf9d5e5 lsp: fix attempt to call non existent function (#24212) - dd3fa6457355 lsp: fix dynamic registration of code actions (#23826) - ce4ea638c703 lsp: fix incorrect typing and doc for `vim.lsp.rpc` - f487e5af019c lsp: fix infinite loop on vim.lsp.tagfunc - 74bd4aba57d2 lsp: fix multi client handling workspace_folder methods (#18839) - 5e5f5174e3fa lsp: fix off-by-one error for omnifunc word boundary - ba6761eafe61 lsp: fix omnicomplete in middle of the line (#25787) - 075a72d5ff9d lsp: fix relative patterns for `workspace/didChangeWatchedFiles` (#23548) - 840e1864c2de lsp: handle NUL bytes in popup text (#25612) - 345bd91db28e lsp: handle absence of a trailing newline #25194 - 0e9a33572dc7 lsp: handle adjacent snippet tabstops - 853f647da618 lsp: handle reverse lookup in capabilities - 91f67fabe69f lsp: handle stale bufnr on LspRequest autocmd trigger (#24013) - 849d82b80b85 lsp: handle stale bufnr on LspRequest autocmd trigger (#27981) - 2eecb1b85dbb lsp: highlight active parameter in signature help #25663 - e55e80d51ca5 lsp: inlay hints: "Failed to delete autocmd" when closing buffer #24469 - 7968322e7a20 lsp: inlay_hint nil reference error #24202 - ba8f19ebb67c lsp: lint warnings, default offset_encoding #24046 - 330444994616 lsp: log unknown diagnostic tags instead of showing a warning (#25705) - 251ca45ac948 lsp: markdown code fence should allow space before info string #24364 - add7e106d59b lsp: noisy warning about offset_encodings #24441 - c235959fd909 lsp: only disable inlay hints / diagnostics if no other clients are connected (#24535) - 1dacf2ecee36 lsp: prevent code-lens refresh from becoming a permanent no-op (#28228) - 597ecf751603 lsp: re-add client.commands and mark private - 94a904b453e5 lsp: reapplying already-applied hints #24114 - 4ecc71f6fc73 lsp: reduce diagnostics and add more types (#23948) - bc7f86209d39 lsp: redundant vim.snippet.jumpable #28560 - ee156ca60ede lsp: refactor escaping snippet text (#25611) - 2ecba65b4ba7 lsp: remove unknown LSP protocol property (#24345) - 7311958e1238 lsp: remove unnecessary file load/write when renaming (#27621) - e14e75099883 lsp: rename LspProgress data.result => data.params #28632 - f0e61e6d92b5 lsp: rename fails on missing parent directory #27291 - b413f5d048ab lsp: rename undofile when renaming (#27684) - d09957e0a06f lsp: rename: load and list new buffer if attached to window (#27408) - 7668f89d5be6 lsp: replace @private with @nodoc for public client functions (#24415) - 52823616bc4d lsp: replace bug-prone ternary operation #28627 - 5282d3299c9b lsp: restore marks after apply_text_edits() #14630 - cf5f1492d702 lsp: revert change to buf.clear_references() #24238 - 917172dd9680 lsp: semantic token defer loading - 3be2536ca039 lsp: send back diagnostic tags to the server - a37d568082ad lsp: send empty "added" list when removing workspace folder #24440 - 3c6d971e5488 lsp: set extra info only when it has a value (#23868) - 5785c32f1115 lsp: set fallback client name properly - 370232dbefb9 lsp: track snippet deletion - ca26ec34386d lsp: use only utf-16 in default client positionEncodings (#23903) - b302da9ad220 lsp: use percentage format on lsp.status (#23971) - 2c8f36a3b0b6 lsp: use plain loop for non-list-like table of protocol values - 8addd27504e6 lsp: when renaming directory, check path prefix of buffer names (#27603) - 597355deae2e lsp: wrong iterator in registerCapability handler (#24971) - b2d471ab337e lua: allow nil values in serialized Lua arrays (#26329) - 68f12e7fcb1f lua: annotate that TSNode functions can return nil (#24621) - 4ffc20c95152 lua: avoid internal error when :luado deletes lines (#27262) - 319803822420 lua: correct return value for on_key with no arguments (#25911) - 84bbe4b0ca93 lua: disallow vim.wait() in fast contexts - 22eb2ba18336 lua: do not schedule events if Nvim is exiting - 7d279a09e0fb lua: handle array with holes in luaeval() (#26630) - c43c745a14dc lua: improve annotations for stricter luals diagnostics (#24609) - 2f779b94e7fe lua: inspect_pos respect bufnr when get syntax info (#23098) - e2e63bd04549 lua: make highlight.on_yank use win-local highlight (#27349) - b40170f7a3ca lua: memory leak when using invalid syntax with exists() (#26530) - 4ab9c5fa4684 lua: not using global value in vim.opt_global (#25196) - 20ec4c776a07 lua: only disable vim.schedule() when closing main loop (#26090) - f150b62423d5 lua: only free luarefs when returning from API (#28373) - 019077171324 lua: remove uri fragment from file paths (#27647) - 5aa14e1231b7 lua: return after assert returns assert message (#27064) - 5331d5772ffb lua: show error message when failing to set variable (#25321) - 1294e221a205 lua: vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate - 37c58226a8fd lua: vim.fs typing (#24608) - 5db076c7ccfe lua: vim.region on linewise selection #25467 - 622b1ae38a36 lua: vim.split may trim inner empty items - a7df0415ab6a lua2dox: filter out the entire `---@alias` block - 32e69bd3971c luarc.json: ignore test directory to save memory - 6f936c9d85a0 man: make :Man with a range work (#25922) - 59aadf33efc2 man: pass modifiers also to :tag (#27878) - a9b4dc9614a0 man: set the nested flag for the BufReadCmd autocommand (#26285) - c8d1d8b2546c man.lua: don't continue on command error (#23009) - a4c4b39d55db man.lua: hardwrapped manpage is not resized #25646 - 209ed16f57a7 man.lua: return support of all sections - 3a7c30dc93b9 man.vim: q quits after jump to different tag in MANPAGER modified (#28495) - 3c667d3e0fe4 mappings: fix mapset() not replacing map with backslash (#26719) - 0451391ec514 mark: properly init mark views (#22996) - d432bba4e46c marks: handle switching buffer properly (#25763) - 62306a29add2 marktree: correct qsort usage - 585549625d8a marktree: off-by-one error in `marktree_move` - 34be915f6b93 marktree: preserve ordering in `marktree_move` - b97d5038f16b marktree: some marks counted twice when checking for overlap - ad5a155b1f4b mbyte: fix bugs in utf_cp_*_off() functions - b02823399171 memline: more curbuf stuff - 91ef26dece6d messages: :map output with ext_messages (#26126) - eabf9de1dc8c messages: allow more prompt in headless mode with UI (#27905) - 60fb8a6a8bd9 messages: avoid crash with :intro and ch=0 (#28343) - 61a0aa6c51fb messages: avoid passing negative length to strnlen() (#28753) - ca258db15668 messages: clear new lines when increasing 'cmdheight' (#27421) - c9f47fca8b89 messages: ensure msg_grid is at top at more prompt (#23584) - 2f17ef1fc4b9 messages: use "Vimscript" instead of "VimL" #24111 - 55dbf5c3798c messages: validate msg_grid before using msg_grid_pos (#26189) - 4db77017fb7a meta: add nil return types to lpeg functions - 5198a2555de4 meta: cleanup lpeg operators - dae6770b761a meta: include vim.json - d31f7648ecaf mkspell: prevent Unicode character overflow (#23760) - a8a93e517f9e mouse: avoid dragging after click label popupmenu callback (#26187) - 6a2a37b1e102 mouse: avoid dragging when clicking next to popupmenu (#26201) - 091eb4c8c720 mouse: click after eol with conceal and virtual text (#27897) - 2b475cb5cc21 mouse: click on 'statuscolumn' with 'rightleft' (#25090) - e25cf47ad3e1 mouse: click on empty line with 'foldcolumn' - 84a4319545ad mouse: cmdline click registered as statuscolumn (#23163) - bf52fb7193ca mouse: copy the line before syntax matching (#24320) - 5fb4c397a1da mouse: drag vsep of window with 'statuscolumn' (#24462) - dc394b9641f9 mouse: fix popup menu position check with winbar (#23456) - 7c1921e9d69e mouse: fix popup_setpos position check with ext_multigrid (#23436) - a3fba5cafcf1 mouse: handle folded lines with virt_lines attached to line above (#23912) - 64aa0f7d0b70 move: check for filler lines properly (#28307) - 366d0c7887f7 move: check the correct buffer (#25698) - 780509aedf5c move: fix using the wrong window (#28312) - 60d1e3e4718a msgpack: store grid line event as a value - c52dfb6e8408 normal: don't check conceal when pressing 'r' (#27892) - 088cdf69e3fa normal: make "g$" work properly with resized grid - a1ded1b113d2 oldtest: always use a 64-bit int for swapfile block number - 92c59c39c3d9 ops.c: remove duplicate u_save_cursor() - 9d01385c6ca6 options: `'modified'` showing incorrect value for scratch buffers - c3e176f6e24e options: correct condition for calling did_set_option() (#25026) - 9af03bcd4712 options: do not change inccommand during preview (#25462) - 796df966f3cb options: don't update curswant for 'winhl' or 'winbl' (#27515) - d956bc63795f options: setting 'scroll' with resized grid (#26628) - c8a27bae3fae options: use a union for def_val (#27169) - 804c828e681e optionstr.c: incorrect use of curbuf/curwin - a9df0c5ce6ca osc52: do not use 'vim.iter' (#27218) - 5d75d9aef2b6 osc52: enable OSC 52 by default in tmux sessions (#26072) - 86c2213b5e45 osc52: use `p` for primary selection instead of `s` (#26076) - 104565909798 osc52: use nvim_chan_send() to stderr for copying (#26690) - e3bd04f2aff7 pager: handle consecutive newlines properly (#27913) - 1e7e9ee91f73 path: accept special characters on Windows (#25424) - f064e72b9b9c path: check return value of append_path() (#28309) - f5eabaa9407a path: restore space separation in 'path' (#25571) - 908f247c224d plines: count 'showbreak' for virtual text at eol - a0cbf1d8d5a6 plines: cursor position with 'showbreak' and resized grid (#28067) - 317038e7cb11 plines: don't return very large height on very long line (#24260) - 7955c90621bb plines: folded lines with virt_lines attached to line above - 35c3275b4896 plines: handle inline virtual text after last char (#24241) - cbadb39d16c1 plines.c: initialize cts_max_head_vcol (#24855) - fc14928719df printf: make positional %zd and %zu work (#24722) - d0b3c8721921 process: avoid potential data race on exit (#27769) - 3e569d440b8e process: close handles and timer in pty_process_close() (#27760) - 268066e01400 process: start pty process eof timer on main thread (#27625) - 49983387ffd5 prompt: emit change event for prompt newline (#28260) - 7bd6bd1ef721 provider: cannot detect python3.12 #25316 - 61ecb3e16c22 provider/pythonx: import the correct module (#25342) - 540941ef8320 pum: don't position too far with resized parent grid (#23442) - f186224dfcf8 pum: fix missing rightmost column with 'rightleft' (#23445) - 8bc973c6f59c pum: fix missing scrollbar with 'rightleft' (#23448) - a7550a20e0c3 pum: handle right-click menu repositioning with multigrid (#26975) - fbaa27877361 pum: make :popup position correctly with float border - a3dfe1bc89a5 pum: position properly with ext_multigrid (#23336) - c1331a65dd12 pum: show right-click menu above cmdline area (#23298) - dd0e77d48a84 query_error: multiline bug - 5ac2e47acc99 redo: make redo of Lua mappings in op-pending mode work (#23566) - 60f69014a801 redraw: multibyte characters are wrapped at the end of a line (#23696) - cb34d0ddd086 redraw: overwrite double-width char with virt_text properly (#23708) - d184933cdc70 redraw: update Visual selection properly with splits (#27343) - 54044e6dce2f release.sh: ze version is too big - cce9460524aa remote: make --remote-expr print to stdout (#23980) - bde59e81473f remote: restore previous --remote-expr output formatting (#23988) - 468292dcb743 rpc: "grid_line" event parsing crashes (#25581) - 4d4092ac9e98 rpc: assertion failure due to invalid msgpack input - 8921d56053bb rpc: do not crash when no input is consumed - c422722b2e94 rpc: fix hang with channel closed while waiting for response - adb225834540 rplugin: dont create data dir if it's a broken symlink #25726 - 65dd3c1180ce ruler: show ruler of curwin with no statusline in cmdline - f5231d61a541 runtime: add commentstring for C# ftplugin (#23039) - 3387dc4a463c runtime: add commentstring for D ftplugin (#25362) - 615b48aca6bd runtime: add more Nvim-only highlight groups to Vim syntax - aee6f08ce12a runtime: do not allow breakcheck inside runtime path calculation - df297e3c2bd7 runtime: don't set gx mapping if already mapped (#24262) - 9176b5e10a6b runtime: respect 'fileignorecase' when sourcing (#24344) - dbb840da01c7 runtime: respect 'rtp' order for all runtime files (#24335) - 70a00492962d runtime: source c ftplugins in correct order (#27377) - d431a4d410f0 runtime: source old color scheme in bundled color schemes (#26641) - 3ab6f60dc80d runtime: update 'vim' color scheme to use new tree-sitter groups - 67fba9affa14 runtime/tutor: don't try to close fold when there is none (#24953) - ee56daebb646 shada: update deleted marks (#24936) - 517dfdf0fcf5 shada: update marks when using delmarks! (#24978) - 4d52b0cf6705 showcmd: clear the rest properly (#28420) - fcd9905291c0 sign: avoid deleting from sign map while looping over it (#27158) - a84b454ebe66 sign: do not error when defining sign without attributes (#26106) - a5ade3c63d88 snippet: correct indent with newline - 4625394a767f snippet: do not add extra indent on newlines (#28538) - a1bdf2852d6d snippet: remove misleading comment about TM_FILENAME_BASE (#26465) - 8c044f0862f4 spell: always accept ':' as filename char in 'spellfile' (#27172) - a803bff89c89 spell: extmark with spell=false should disable spell (#23400) - eceb2dffce39 spell: splice extmarks on :spellrepall (#23929) - aa65bd478a98 startup: "nvim -l foo.lua" may not set arg0 #24161 - 628f6cce80de startup: don't truncate when printing with -l (#24216) - c0fa721adeab startup: make recovery mode work without --headless (#24477) - 8e739af064de startup: multiprocess startuptime #26790 - 8f10362cdc58 startup: only send one default_colors_set event during startup - 559c4cfd52e3 startup: run embedded Nvim with real path (#24282) - b21d96011934 startup: set full_screen when in ex_mode - 9637b7dae417 startup: stop TUI properly when quitting at swap dialog (#25337) - d7359a87425d startup: trigger UIEnter for the correct channel (#25860) - 01e273c340b5 statuscolumn: don't update clicks if current width is 0 (#24459) - afd0c648a89f statuscolumn: force full redraw when signcolumn is invalid (#24859) - dc6c11394b73 statuscolumn: update number hl for each screen line (#25277) - a4b240080435 statusline: also allow right click when 'mousemodel' is "popup*" (#23258) - 4ecf6fdfd857 statusline: bail out properly on negative row (#23535) - 70da793c5eda statusline: corrupted screen with minwid sign item in 'statuscolumn' (#23823) - d7bb19e0138c statusline: fill for double-width char after moving items (#24207) - 54f560203897 statusline: fix uninitialized variable and possible overflow - 9f15a18fa57f statusline: missing offset when showing 'keymap' (#27270) - 7b973c71ea84 statusline: redraw when VIsual_mode changes (#23933) - dbc0fa9bd683 stdpath: remove duplicate directories (#26653) - 1907abb4c278 stream: do not close handle if it is already closing (#26537) - 9dd48f7832f4 substitute: properly check if preview is needed (#23809) - 9753cda591e2 syntax: use correct diagnostic group for checkhealth (#23538) - 400b7842a983 termcap: escape escapes in passthrough sequence (#26301) - e52784221118 termcap: only call callback for requested capabilities (#26546) - ffeb31c2f962 termcap: set 'nested' on TermResponse autocommand - b7831c7f996b termcap: use tmux passthrough sequence when running in tmux (#26281) - e6d3f87dfd71 termdebug: handle partial lines passed to callback (#22950) - c413b42c456b termdebug: prompt mode breaks with &splitbelow set - 8aad4b84250a termdebug: send SIGINT when interrupting prompt mode - af78060b1882 termdebug: trim suffixed "\r" in CommOutput - 684e93054b82 terminal: assign channel to terminal earlier (#25771) - 82b1a389ba98 terminal: avoid Insert mode in Terminal buffer (#25820) - 99288ecc77e4 terminal: block input when there is pending TermRequest (#27589) - f2ce31d3dc1c terminal: call validate_cursor() before screen update (#24425) - e09adfdcffe8 terminal: check if mouse on statusline/tabline/winbar/vsep (#26892) - e11573246579 terminal: check terminal size at end of screen update (#25480) - 120c4ec855bc terminal: disable reflow again - c881092ffe9d terminal: don't lose focus on <MouseMove> (#25845) - 16a416cb3c17 terminal: don't pass incomplete UTF-8 sequence to libvterm (#27922) - d0d132fbd055 terminal: don't send unknown special keys to terminal (#24378) - 74776dfb2ac4 terminal: fix duplicate recording with mouse click (#28103) - 21d466c1b985 terminal: forward horizontal mouse scrolling (#24552) - d401b33314a4 terminal: handle horizontal scrolling in another window (#24828) - 5e78fd778450 terminal: ignore $VIM and $VIMRUNTIME in pty jobs - 0a7fda6fa006 terminal: include modifiers when forwarding mouse (#24549) - d4c2fc6ff6c5 terminal: keep focus when scrolling number column of another window (#25848) - 5ca6c9e04629 terminal: make backslashes in 'shell' work on Windows - aba954b662cc terminal: never propagate $COLORTERM from outer env (#26440) - b74262a336d3 terminal: send Shift-Home Shift-End Ctrl-Home Ctrl-End (#24418) - 0fd8eb8aae10 terminal: set $COLORTERM unconditionally in :terminal (#24763) - fa17a5ab49df terminal: use terminal buffer for TermRequest autocommand (#26974) - 5999214c242d termkey: accept BEL (0x07) as OSC terminator - ce2f770aaa23 termkey: do not sign extend mode value - 50f5864dd245 termkey: include IO header on Windows - 52e6059415ba test: call separate_arguments() correctly to honor $BUSTED_ARGS (#26905) - c5528e7fd852 test: clean up inline virtual text tests a little - 380b634ac951 test: fix "indeterminism" warnings in UI tests - f4c97da26242 test: fix strings_spec.lua for AArch64 - 477458f7bf8d test: more tests for marktree - d8e330bcec91 test: remove test/compat.lua - a7bbda121d03 test: typing - 8861ad83fd7f test/tui_spec: pass the expected NULL-sentinel to execl() - f859d16aea0d tests: set SHELL=sh #24941 - 3d44340cea08 tests: use more global highlight definitions - e9bfbe99cd71 textformat: remove unnecessary changed_bytes() (#26027) - 255e547e18e1 timer: allow timer_info() to get info about current timer - a8131aee9ecc tohtml: replace hex escape with digit escape (#27728) - 0246f1a897f4 tohtml: set filetype of generated HTML to `html` - ccc0980f86c6 treesitter: Use the correct replacement args for #gsub! directive (#23015) - 71d9b7d15c9b treesitter: _trees may not be list-like - a4743487b71b treesitter: `language.add` - only register parser if it exists - 4a8bf24ac690 treesitter: adjust indentation in inspector highlights (#26302) - ef64e225f6f6 treesitter: allow foldexpr without highlights (#23672) - 6a264e08974b treesitter: allow optional directive captures (#28664) - cf612c64b0fc treesitter: allow passing lang to vim.treesitter.get_node() now correctly takes opts.lang (#26360) - 32849d56671c treesitter: avoid # of nil in _query_linter - 3fd7449d5abe treesitter: check that buf is loaded in autocommands (#25679) - e7f50f43c822 treesitter: clip end row early - 6b19170d44ca treesitter: correctly calculate bytes for text sources (#23655) - bd5008de07d2 treesitter: correctly handle query quantifiers (#24738) - fba18a3b6231 treesitter: do not calc folds on unloaded buffers - c30ebb17f6b9 treesitter: document more standard highlight groups - 040369e1e4b8 treesitter: don't forcefully open folds - 72ed99319dd6 treesitter: don't invalidate parser when discovering injections - 4607807f9fcb treesitter: don't update fold if tree is unchanged - 26b5405d181e treesitter: enforce lowercase language names (#28546) - 3a8265266e0c treesitter: escape "\" in :InspectTree #28613 - 369f58797dbd treesitter: escape quotes in :InspectTree view #24582 - 6e45567b498c treesitter: fix TSNode:tree() double free (#24796) - 50a03c0e9975 treesitter: fix another TSNode:tree() double free - 7c6f9690f74e treesitter: fix indexing in foldexpr - 01b91deec7b6 treesitter: fix parens stacking in inspector display (#26304) - f40a109716d7 treesitter: fix trim predicate - 1f551e068f72 treesitter: fixup for InspectTree - 26cc946226d9 treesitter: foldexpr tweaks - e85e7fc7bccc treesitter: handle empty region when logging (#24173) - 12faaf40f487 treesitter: highlight injections properly - 6f75facb9d75 treesitter: improve vim.treesitter.foldexpr - 6c8387067d4e treesitter: inspect-tree remember opts on buf change - 8179d68dc1a9 treesitter: logger memory leak - b6e339eb90e1 treesitter: make InspectTree correctly handle nested injections (#26085) - 3af59a415c98 treesitter: make Visual hl work consistently with foldtext (#25484) - c7e7f1d4b4b6 treesitter: make foldexpr work without highlighting (#24167) - 0211f889b953 treesitter: make sure injections don't return empty ranges (#24595) - 0df681a91d6b treesitter: make tests for memoize more robust - 7fa292c52d7b treesitter: outdated highlight due to tree with outdated region - 617d1b28d6d3 treesitter: prefix treesitter types with vim - 90a12d4a1643 treesitter: prepare highlight states for [s, ]s - 7e5ce42977d7 treesitter: properly combine injection.combined regions - 19a793545f15 treesitter: redraw added/removed injections properly (#23287) - 7a76fb854754 treesitter: remove more double recursion - e124672ce9a8 treesitter: reset cursor max_start_depth - 7d9715008470 treesitter: return correct match table in iter_captures() - 3b29b39e6deb treesitter: revert to using iter_captures in highlighter - 315c711700a8 treesitter: set cursor position when opening inspector - 48085e40bb0e treesitter: stop() should treat 0 as current buffer #24450 - 32dc484ec9ec treesitter: support subfiletypes in get_lang (#23605) - b6fdde522425 treesitter: text alignment in checkhealth vim.treesitter - 0f85aeb478a6 treesitter: treecursor regression - 26143d7a5c90 treesitter: update @markup default links - 9ff59517cbf3 treesitter: update c queries - c44d819ae1f2 treesitter: update folds in all relevant windows (#24230) - ffb340bf63af treesitter: update folds only once on InsertLeave - edf9a897f089 treesitter: update highlights for query (#23699) - b697c0cd4fb2 treesitter: update lua parser and queries (#24148) - ad95b3698569 treesitter: update markdown parser and queries (#24429) - 39a0e6bf3c04 treesitter: update parsers and queries - 3d4eb9d544cb treesitter: update queries - c97de026e357 treesitter: update vimdoc and vimscript queries - dc7ccd6bca81 treesitter: use 0 as initial value for computing maximum (#27837) - 7bc5ee7f9327 treesitter: use proper query syntax for inspector (#26274) - 00e6651880c3 treesitter: use tree range instead of tree root node range - 8c9dab3e0d78 treesitter: use vim.highlight.priorities instead of hardcoded 100 (#24052) - 674f2513d4d4 treesitter: validate language alias for injections - 2bf3e82676d5 treesitter: validate window before updating preview highlights - ab2811746eb7 treesitter playground: fix the wrong range of a node displayed i… (#23209) - f85aa2e67f3e treesitter.c: improve comments on fenv usage - c5b9fb2f2565 treesitter.foldexpr: check for all insert submodes - b3bda2f0438d tui: `space_buf` overflow when clearing screen (#27352) - cb2b5e2780a6 tui: disable DECRQM and DECRQSS queries for Terminal.app (#28453) - 405bad5e085f tui: do not toggle cursor visibility when flushing the buffer (#26055) - b76cc974b9a5 tui: don't forget to update cursor visibility (#26523) - 911f3d962358 tui: don't overwrite an assertion faliure message on exit - 168e69ae0156 tui: don't set cursor color when there is none (#28236) - 5a08b5be3c34 tui: don't set tty background if &bg was set before VimEnter (#23701) - 00b7428b3bf5 tui: don't use DECRQSS in screen or tmux (#28086) - 846714ca3e70 tui: don't use tui->params[] for 'termsync' (#26565) - 197827321a39 tui: grid_clear properly clears the screen - 884a83049b2c tui: grow termkey's internal buffer for large escape sequences (#26309) - ad867fee26c8 tui: handle cursor visibility properly (#26091) - fd50185492c7 tui: initialize clear attrs with current terminal background - c26b39a9aa56 tui: make :cquit work properly with remote TUI (#25313) - 3ae62c470634 tui: make disabling title restore old title from stack (#23585) - 4c31a1b807f1 tui: make setcellwidths() work for non-ambiwidth chars (#28322) - 4f235e3cafba tui: position cursor at bottom-left before stopping (#23369) - 0f1b511f2302 tui: redraw on SIGWINCH even if size didn't change - 8e6971695383 tui: restore title before exiting alternate screen (#23776) - 999e167a521a tui: start flush earlier (#26463) - 367e52cc79a7 tui: use buflen to calculate remaining buffer size (#26942) - 3198598e6974 tui: use uv_timer_t instead of TimeWatcher for input (#26435) - 0ce065a332cb tui: v:argv does not report the original argv[0] #24015 - bc6fc0123d2f tutor: Tutor steps don't work on Windows #25251 - bf5703042b50 tutor: don't use concealed text in expected lines #24316 - e34c23b7016a tutor: set a value for ":syntax iskeyword" (#27833) - 04232a19ccf0 type: remove incorrect arguments from vim.rpc* - 21152f7905b5 types: add more annotations to eval.lua - b7d5b55f74fd types: add some return/parameter type annotations (#24867) - e6947bb1e80a types: make filetype.add parameters optional - 191cca2566a8 types: move type annotation for `IterMod` - 813dd36b7297 types: rename win_get_config return type to win_config - b3342171d533 typing: vim.fn.execute - 1355861b926a typval: don't treat v:null as truthy (#23281) - 0592fd5e17dc ui: "resize -1" with cmdheight=0 #24758 - ab1c2220f0c7 ui: activating all ext capabilities without remote UI #28555 - 5b111a8f00f8 ui: adjust 'smoothscroll' for inner dimensions - 389f5ca39d27 ui: adjust the cursor when inserting virtual text - 046c9a83f7ed ui: always use stl/stlnc fillchars when drawing statusline (#25267) - 0c86828ac574 ui: avoid ambiguity about chunk that clears part of line (#24982) - e778e0116198 ui: avoid recursiveness and invalid memory access #28578 - 0ce39108684e ui: cursor pos with left gravity inline virt_text at eol (#24329) - 91a4938edfd3 ui: data corruption in remote_ui_raw_line - 1de82e16c121 ui: delay win_viewport until screen update #24182 - a91652357413 ui: doesn't trigger au event when enter is false - b5a38530ba18 ui: don't force 'cmdheight' to zero with ext_messages - fdc8e966a918 ui: don't send empty grid_line with redrawdebug=compositor (#23899) - 13f55750e9be ui: empty line before the next message after :silent command - d41b8d47587b ui: ext_cmdline should not move cursor to curwin - a38d7f99845d ui: fix cursor position with multiple inline virtual text - e0707d352959 ui: fix edge case around flushing - 75f350aac6cd ui: fix incorrect highlighting when virtual text next to match - 332b70d2ed31 ui: fix incorrect highlighting when virtual text wraps with number - 0c7fa3bdcc37 ui: fix multi-byte characters highlight in virtual text - a37c99048359 ui: fix overflowing nowrap virtual text not displaying if tab follows - 5d7afb2e9f22 ui: fix tabs not being spaced properly after virtual text with no wrap - 34d862942c33 ui: fix virtual text not displaying when two overlapping inlines (nowrap) - c5bf838f8aa5 ui: fix visual and search highlighting interfering with virtual text - 1936285d98f6 ui: fixes incorrect rendering when virtual text is not visable and nowrap - 64e8a3c4d19e ui: handle virtual text with multiple hl in more cases (#25304) - 981acc2922ce ui: propagate line wrapping state on grid_line events - b8c1b36061f4 ui: set 'cmdheight' to zero for all open tabpages - a8522f02e9a2 ui: startup intro message should be visible with ext_multigrid - 1cd7824dd69e ui: trigger TabNewEntered after split new tab - 7626f431d84f ui: update ext_ui widgets when attaching non-remote UI - 128091a256d6 ui: wrong cursor position with left gravity inline virt text at eol - a9418ef8cfc0 ui: wrong display with 0-width inline virt_text at eol (#24854) - e8b3ed74bca4 ui-ext: "scroll_delta" handle topfill and skipcol (#24249) - 43d66c0ebbe4 ui-ext: send title to newly-attached UI - 519b9929e94c ui.open: some URLs fail on Windows - 4d654472e65e ui_client: check return code of dup() - 633bf61d3b03 ui_client: check return value of channel_job_start (#27729) - 71ad771ea4b7 ui_compositor: only reset skipstart at first column (#24776) - 840749d6c971 undo: fix crash caused by checking undolevels in wrong buffer - c0a29931e29b unhide: close floating windows first (#25318) - 9afbfb4d646c unittests: ignore __s128 and __u128 types in ffi - 9e79f7433eb0 usercmd: Fix buffer overflow in uc_list() (#23225) - 9802de933484 userfunc: fix possible out of bound access - 5a8fe0769cc9 vim.deprecate: show deprecation warning in devel versions as well - ca6dbf3558ce vim.iter: use correct cmp function when truncating tail in `take` (#27998) - e15991c8116c vim.json: properly treat luanil options as booleans (#28622) - fec5e3ab247b vim.region: handle multibyte inclusive selection properly (#26129) - 2afb04758c34 vim.system: close check handle (#24270) - 9b7cf4f0beb3 vim.system: don't process non-fast events during wait() (#27300) - a44521f46e6f vim.system: let on_exit handle cleanup after kill - 6d5f12efd286 vim.system: make timeout work properly - 57adf8c6e01d vim.ui: open() may wait indefinitely #28325 - e644e7ce0b36 vim.ui.open: return (don't show) error message - fd085d908201 vim.ui.open: try wslview before explorer.exe #28424 - 5e4a5f1aaa15 vim.ui.open: use explorer.exe instead of wslview #26947 - 6cc76011ca28 watchfiles: skip Created events when poll starts (#23139) - 9bd4a2807960 window: :close crash if WinClosed from float closes window (#27794) - 731e7f51ee40 window: :close crash with autocmd, floats and tabpage (#27793) - 33dfb5a383d7 window: :close may cause Nvim to quit with autocmd and float - 2cbfa4b9af78 window: don't go to unfocusable float when closing (#28455) - a47be0b2d90b window: prevent win_size_restore from changing cmdheight - 4bfc7802f056 windows: set stdout to binary mode for --api-info PERFORMANCE -------------------------------------------------------------------------------- - a9c551e5e38f cache breakindent/showbreak width in win_lbr_chartabsize - b5653984e5de don't decode utf8 character multiple times in getvcol() - cca8a78ea2ac improve utf_char2cells() performance (#27353) - 2f2f12122f38 remove loop for computing last position in getvcol() - 32a4c9f4f92d remove redundant strlen in skipwhite (#26177) - cdf848a314bf reuse fast character size calculation algorithm from getvcol() - 2289ca273cda column: avoid counting when max signs are removed from a range - 4a34da82c18e column: keep track of number of lines that hold up the 'signcolumn' - f4001d27efae column: only invalidate lines affected by added sign - 7f084770c238 diagnostic: avoid table copies to filter by severity (#28491) - 1cb60405548e events: store autocommands in flat vectors (#23256) - 9af2be292db3 extmarks: add metadata for efficient filtering of special decorations - 929e1b7f1c35 extmarks: avoid unnecessary invalidations for virt_text (#27435) - 19fb573ad992 extmarks: avoid unnecessary marktree traversal with folds (#24306) - d44ed3a885e1 extmarks: better track whether namespace has extmarks (#28615) - ef94fb69c65b extmarks: don't handle inline virt_text if there is none (#24322) - 8bb67d64e20d fs: normalize path only once in fs.dir - 40db56901447 iter: make ListIter.totable more efficient (#23714) - ef1801cc7c3d iter: reduce number of table allocations - dcdefd042840 loader: use a quicker version of vim.fs.normalize - 648f777931d4 lsp: load buffer contents once when processing semantic tokens responses (#23484) - 2f4792943aa9 lsp: only joinpath for dirs in watchdirs - edf05b005f34 lsp: process semantic tokens response in a coroutine that yields every 5ms (#23375) - 79a5b89d66db lsp: reduce polling handles for workspace/didChangeWatchedFiles (#23500) - 4d3a04279d32 lsp: remove grouping logic from lsp.status (#24096) - de28a0f84c57 lsp: replace file polling on linux with per dir watcher (#26108) - 7e97c773e3ba lsp: use async fs_stat for file watching on linux (#26123) - cdd87222c86c lua: avoid spairs in vim.validate happy path - c5af5c0b9ab8 lua: faster vim.deprecate() #28470 - c5990f2cdca5 os/env: os_getenv() allocation when there is no env var set - 18e62c1bdbbb redraw: only redraw Visual area when cursor has moved (#27340) - 94085cfce821 redraw: reduce redraw with undo and extmarks or 'spell' (#27442) - 516b173780e3 rtp: reduce rtp scans (#24191) - 0e11bf0e1af5 substitute: don't reallocate new_start every time (#24997) - 4fd852b8cb88 treesitter: cache fold query (#24222) - 07080f67fe7e treesitter: do not scan past given line for predicate match - c0cb1e8e9437 treesitter: filter out trees outside the visible range early - 2b6c9bbe7f7a treesitter: incremental foldupdate - 3ba930844c30 treesitter: insert/remove items efficiently (#23443) - a76b689b479e ui-ext: approximate scroll_delta when scrolling too much (#24234) - 0d1bc795f89c ui_client: skip some initialization not necessary for ui client - 14a5813c2077 vim.fs.normalize: use iterator BUILD -------------------------------------------------------------------------------- - c1ff21666862 actually export symbols on mac - 664f2749e688 add "ci" configure preset to reduce verbosity - 1094d0c0dbd0 add CMAKE_C_FLAGS to --version output - 129012172258 add CMakePresets for deps build to reduce verbosity - ce6075f82a2a add check to clint to prevent non-defs header includes - 624de849de39 add function add_target - 82bb7bbc4816 add luajit runtime files when installing (#23514) - 831d662ac675 add sub-targets to the doc target - 1bf29a0ae1ff add system lua include dir for lpeg - 4cc69f45b4a5 add ubsan default options - 488038580934 adjust clang-tidy warning exclusion logic - b80a8e2c16b6 adjust how find order is prioritized - d561830a5242 align .clang-format rules with uncrustify config - c18d7941effa allow sccache as compiler cache - cd097ab8ccfd allow using system rocks - 54d357dce0e1 bump lpeg to 1.1.0 (#25016) - 7840760776cf bump minimum cmake version to 3.13 - 7a5effb0f95e bump required minimum libvterm version to 0.3.3 - 2835b0daad43 bump uncrustify to version 0.77 - 77c0d5415b4f bump uncrustify to version 0.78.1 - 87a45ad9b98e bump uncrustify to version 0.79.0 (#28756) - 1798a4b5e9f0 bump uncrustify version - 826b95203ac9 bundle uncrustify - 37bc73e9bc2d change dependency URLs to cache variables - 108601647783 cmake cleanup - 404fdb0f3683 cmake fixes - f8310beeed04 create BINARY_LIB_DIR directory before adding parser - 9909668111f5 create a text file for specifying dependency information - 5a7280ba687f create helper function for simplifying luarocks installation - f936a962d04f create separate targets for nvim with and without runtime files - bcaff309b607 disable UnusedIncludes from clangd - 7a80e169c5b1 disable all compiler warnings from dependencies - 8fdc84d0aaec disable conversion warnings for GCC - 310fb2efc36c disable conversion warnings for older GCC versions - a1c2da56ecef do not use GIT_REPOSITORY for local dependencies - da2130934b95 don't allow Xcode as generator - 543e0256c19f don't define FUNC_ATTR_* as empty in headers (#26317) - 24b60b0f71e0 don't format deleted files - c2e47e7bec03 don't print installed files locally - f30844008bdd download busted from own neovim/deps repository - 5abba97d77f2 download dependencies with unreliable mirrors from deps repo - 71384129f754 download libiconv and gettext from `deps` repository - 801ac2accb6a drop diff.exe from windows builds - f0eb3ca9163a eliminate semicolons from --version string - 397b92e02dbe enable ASAN for MSVC - 40139738eb47 enable IWYU on mac - 25cfe3fd432d enable formatting during rebase - 517f0cc634b9 enable lintlua for scripts/ dir #26391 - 45fe4d11add9 enable lintlua for src/ dir #26395 - 59d117ec99b6 enable lintlua for test/ dir - c3836e40a2bf enable lintlua for test/unit/ dir #26396 - 03c3f7887dbc enforce PREFER_LUA - 7cb29a572b36 ensure `make clean` doesn't remove source files - 0a3645a72307 find system luv on ubuntu - 5bb17958c569 fix "make iwyu" not working (#24873) - 12ccea596746 fix --luamod-dev not working properly (#24519) - 75b80516d513 fix link error for `_BitScanForward64` (#28173) - 3f188bc533bc fix parser installation location - 4fb1739e6f1f fix uncrustify - 896b400bff5c fix universal mac builds - 01e4a70d668d improve git-cliff CHANGELOG output - ef92b5a9948f include all dependency directories when generating headers - 187ae6773592 introduce variable DEPS_IGNORE_SHA for skipping dependency hash check - 30a0299bc6d1 make dependency URL variables non-cached (#23577) - b4da4783f988 make genappimage.sh work with existing CMAKE_INSTALL_PREFIX - 9f9cef1b569e make lpeg an imported library - c1a05f61122d make the vimdoc generation depend on the nvim target (#25876) - 8b8e60728486 move luarocks and rocks installation to main build - d1bb9bffd5e8 remove BUSTED_PRG dead code (#23340) - 8206954a67b9 remove LOG_DEBUG option - c48f94d1f300 remove LOG_LIST_ACTIONS option and related code - 353a4be7e84f remove PVS - 88366641ad8a remove USE_BUNDLED_BUSTED option - ca243f06dd05 remove `lintdoc` from `lint` target - 675522af18f5 remove clint checks and style text covered by uncrustify - 8be24fed8ffa remove config-specific find_package search for libuv - c40872acbddb remove duplicate include directories in --version output - ebb10d624825 remove functionaltest-lua target - 8ae39eb58488 remove git requirement - 9f8f287c6139 remove luarocks - 339011f59c25 remove uninstall target - c8fd82b26d4f reorder compiler option setting - 78239f0bbcb2 reorganize cmake files - 55793bcfa17c revert accidental permission changes (#23319) - f31f260f0c64 rework --version generation - a827003e3052 rework IWYU mapping files - e5d7003b02c9 rework formatting to use add_glob_target - 1997ef134a9a set char to always be signed - a75ef40f4cde set deps default build type to Release (#27495) - a1550dbf0ac2 silence new clang-tidy warnings - 383018dbb8e0 simplify policy-setting for dependencies - 4788abf2da6b stop installing parser.h from treesitter - 26033eee1d3b suppress bugprone-reserved-identifier warnings - 34509bbea3e8 sync IWYU and clint to ignore the same headers (#26228) - 0a8e66898d73 update builtin terminfo (#27272) - a388c852c406 update libtermkey commit - 706f871014b4 update uncrustify to 0.76 - f4136c9d42f7 use -O3 optimization for release builds - 2c1e8f7e9692 use `GIT_REPOSITORY` for local URLs - e0d97d264f83 use built nvim artifact to generate eval files (#25875) - 3d3717de4e51 use libvterm commit with generated *.inc files - 4f526b9fd864 use neovim/libtermkey instead of neovim/deps for libtermkey - 8405649f92a8 use neovim/libvterm instead of neovim/deps for libvterm - 2a57613b9b42 use stylua with add_glob_target - ae3eed53d610 various build improvements - c8667c8756a2 various cmake fixes - 5cefec734961 various cmake fixes - bec2ebebdacd various cmake fixes - c50951a4d0cf various fixes - 4c9119461108 various fixes - bf0be0f63e71 various improvements - 404043e74c52 vendor libtermkey - e38a05369293 IWYU: export generated headers - 71141e8cf5df IWYU: fix headers for arabic.h - 8b428ca8b79e IWYU: fix includes for func_attr.h - f4aedbae4cb1 IWYU: fix includes for undo_defs.h - 17d81ac2abc4 IWYU: map everything in the C99 specification - c2a5105e8875 IWYU: remove arabic_defs.h (#26235) - 38a20dd89f91 IWYU: replace most private mappings with pragmas (#26247) - 09541d514dd1 IWYU: replace public-to-public mappings with pragmas (#26237) - 39771b223847 Makefile: add nvim to oldtest phony target - 6823fdb20b13 PVS: exclude build directory - 5d387c338828 ci: ensure correct headers are used on macOS - dcb11c109141 clint: don't allow INIT() in non-header files (#27407) - c98ef2d7c629 clint: fix deprecation and linter warnings - 7e2387f41be7 clint: more precise check for "defs" headers (#26236) - cf8b2c0e74fd iwyu: add a few more _defs.h mappings (#25435) - 5f03a1eaabfc lint: remove unnecessary clint.py rules - eecddd24164c lint: use stylua without add_glob_target - 25e51d393a42 lua: vendor coxpcall - 4dc86477b674 luarc.json: disable luadoc-miss-see-name #24108 - fd9ac5aa8e1c makefile: remove a phony target uninstall (#24349) - 978962f9a00c release.sh: regenerate docs after changing NVIM_API_PRERELEASE (#28229) - 9ca81b025990 release.sh: set VIMRUNTIME when regenerating docs (#28765) - 4399c4932d7b release.sh: use git cliff, drop old script - d0ae52986159 scripts: allow a git ref for lsp_types #24377 - bfb81e1a8516 snap: remove obsolete snapcraft.yaml - 981301d11f83 terminfo: include user capabilities in comments (#28066) - 6801befcc5c0 uninstall: don't build if installation manifest not found - 345dcba629c7 windows: set longPathAware in manifest #28389
2024-05-16 05:34:32 -07:00
<release date="2024-05-16" version="0.10.0"/>
<release date="2023-12-30" version="0.9.5"/>
<release date="2023-10-09" version="0.9.4"/>
<release date="2023-09-07" version="0.9.2"/>
<release date="2023-05-29" version="0.9.1"/>
NVIM v0.9.0 For a summary of notable changes, see runtime/doc/news.txt or run `:help news` within nvim. BREAKING CHANGES - Remove hardcopy - Make iconv a non-optional dep - Remove has("debug") (#22060) - Make libintl a required dependency - Rename vim.pretty_print => vim.print - Rename sanitizer options from CLANG_* to ENABLE_* - Remove the .deb release (#22773) - **column**: Ensure 'statuscolumn' works with virtual and wrapped lines - **cscope**: Remove - **defaults**: Change default 'commentstring' value to empty (#22862) - **edit**: Remove old c implementation of hebrew keymap - **editorconfig**: Change editorconfig_enable to editorconfig - **exepath**: Prefers extensionless for powershell - **health**: Remove deprecated health.lua - **lsp**: Add rule-based sem token highlighting (#22022) - **lua**: Execute Lua with "nvim -l" - **messages**: Graduate the 'msgsep' feature - **options**: Deprecate paste, remove pastetoggle (#22647) - **rpc**: Preseve files when stdio channel is closed (#22137) - **runtime**: Remove filetype.vim (#20428) - **treesitter**: Remove g:ts_highlight_lua (#22257) - **treesitter**: Remove silent option from language.add() - **treesitter**: Consolidate query util functions - **treesitter**: Remove deprecated show_tree func - **treesitter**: Deprecate top level indexes to modules (#22761) - **treesitter**: Rename help parser to vimdoc FEATURES - Added support for @generic to lua2dox.lua - Added support for optional params to lua2dox - Added support for specifying types for lua2dox - Mention ":help news" in intro #20674 - ":write ++p" creates parent dirs #20835 - Add vim.secure.read() - `vim.inspect_pos`, `vim.show_pos`, `:Inspect` - $NVIM_APPNAME #22128 - Try to recover from missing tempdir #22573 - Add `vim.filetype.get_option()` - Add `vim.treesitter.language.get_filetypes()` (#22643) - Allow function passed to defaulttable to take an argument (#22839) - **api**: Nvim_select_popupmenu_item support cmdline pum (#20652) - **api**: Add command name to Lua command callback opts - **api**: Show more exception info - **api**: More fields in nvim_list_uis - **api**: Add filetype option nvim_get_option_value - **api**: Add nvim_get_hl (#22693) - **api**: Nvim_exec2(), deprecate nvim_exec() #19032 - **api**: Evaluate 'statuscolumn' with nvim_eval_statusline() - **api**: Set statuscolumn line number in nvim_eval_statusline() - **aucmd_win**: Allow crazy things with hidden buffers (#21250) - **checkhealth**: Improve treesitter report - **checkhealth**: Check runtime ($VIMRUNTIME) - **checkhealth**: Use "help" syntax, avoid tabpage #20879 - **clipboard**: Copy to system clipboard in tmux when supported (#20936) - **clipboard**: Added wayclip support (#21091) - **diagnostic**: Add `suffix` option to `open_float()` (#21130) - **diagnostic**: Add `suffix` option to `virt_text` config (#21140) - **diagnostic**: Don't open quickfix/loclist if no diagnostics #21397 - **diagnostic**: Vim.diagnostic.is_disabled() #21527 - **diagnostic**: Add support for tags - **docs**: Nested lists in HTML, update :help parser - **docs**: Format parameters as a list #20485 - **docs**: Update parser, HTML gen #20720 - **docs-html**: Try to use tags for ToC headings - **editorconfig**: Add builtin EditorConfig support - **editorconfig**: Add editorconfig syntax file - **editorconfig**: Allow editorconfig to be toggled dynamically - **exrc**: Use vim.secure.read() for 'exrc' option - **exrc**: Support .nvim.lua (#21436) - **extmarks**: Allow preventing spellchecking with spell = false - **extmarks**: Extend nvim_buf_get_extmarks() - **filetype**: Fall back to file extension when matching from hashbang (#22140) - **float**: Open float relative to mouse #21531 - **fs**: Add opts argument to vim.fs.dir() - **gen_help_html.lua**: Remove old AWK scripts - **health**: Detect tmux RGB support via `client_termfeatures` - **help**: Highlighted codeblocks - **highlight**: Add DiagnosticOk (and associated) highlight groups (#21286) - **highlight**: Define the concept of altfont as a (c)term rendering attribute - **l10n**: Update Turkish translations (#20444) - **l10n**: Update zh_CN translations (#21085) - **lsp**: Add bufnr option to lsp.start (#20473) - **lsp**: Support window/showDocument (#19977) - **lsp**: Run handler in coroutine to support async response (#21026) - **lsp**: Support set title in lsp relate floatwindow (#21110) - **lsp**: Support willSave & willSaveWaitUntil capability (#21315) - **lsp**: Initial support for semantic token highlighting - **lsp**: Highlight semantic token modifiers (#21390) - **lsp**: Add function to get semantic tokens at cursor - **lsp**: Add function to clear codelens (#21504) - **lsp**: Show active clients in :checkhealth vim.lsp (#21670) - **lsp**: Add triggerKind option for vim.lsp.buf.code_action (#21905) - **lsp**: Implement workspace/didChangeWatchedFiles (#21293) - **lsp**: Implement workspace/didChangeWatchedFiles (#22405) - **lsp**: Overwrite omnifunc/tagfunc set by ftplugin #22267 - **lsp**: Render markdown in docs hover #22766 - **lsp**: Create default link from @lsp.type.comment to Comment (#22888) - **lua**: Send "--" literally to Lua "-l" script - **lua**: Exit 1 on Lua "-l" script error - **lua**: Execute stdin ("-") as Lua - **lua**: Store "nvim -l" scriptname in _G.arg[0] - **lua**: Low-level interpreter mode (nvim -ll) - **lua**: Make sure require'bit' always works, even with PUC lua 5.1 - **lua**: Add semver api - **lua**: Omnifunc for builting lua interpreter - **lua**: Use vim.empty_dict() for empty return value in new api functions (#22737) - **lua**: Allow `:=expr` as a shorter version of `:lua =expr` - **lua**: Add `vim.loader` - **lua-api**: Avoid unnecessary allocations (#19877) - **man**: Add health check - **man.lua**: Support spaces in manpage names - **message**: Avoid spam on failed os_msg - **packaging**: Add start menu and desktop shortcuts on Windows - **provider**: Add support for Yarn node modules on Windows (#21246) - **secure**: Add `:trust` command and vim.secure.trust() (#21107) - **spell**: Support nospell in treesitter queries - **spell**: Also source `spell/LANG.lua` when setting `spelllang` (#22111) - **test**: Add Lua forms for API methods (#20152) - **treesitter**: Add vim.treesitter.show_tree() (#21322) - **treesitter**: Add 'lang' option to show_tree() (#21341) - **treesitter**: Show filetype associated with parser (#17633) - **treesitter**: Allow capture text to be transformed - **treesitter**: Add metadata option for get_node_text - **treesitter**: Respect metadata[id].range for offset! - **treesitter**: Playground improvements - **treesitter**: Add filetype -> lang API - **treesitter**: Upstream foldexpr from nvim-treesitter - **treesitter**: Expand the API - **treesitter**: Add :InspectTree command (#22477) - **treesitter**: Bundle query parser and queries (#22483) - **treesitter**: Use upstream format for injection queries - **tui**: Run TUI as external process - **tui**: Graduate the +tui feature - **tui**: Support altfont mode in tui.c - **ui**: Add support to display a title in the border of a float (#20184) - **ui**: Add 'statuscolumn' option - **ui**: Restore has('gui_running') - **ui**: Add scroll_delta to win_viewport event #19270 - **vim-patch**: Mention original author #20772 - **vim.diff**: Allow passing an integer for linematch - **vim.fs**: Pass path to find() predicate, lazy evaluate #22378 - **vim.fs**: Improve normalize - **vim.gsplit**: Gain features of vim.split - **vim.version**: More coercion with strict=false - **web**: Syntax highlighting via highlight.js - **window/ui**: Add splitkeep option (#19243) - **windows**: Show icon in terminal titlebar, taskbar #20607 PERFORMANCE - **column**: Only build fold/sign column when present in 'statuscolumn' - **completion**: Use one call to globpath() for .vim and .lua #21942 - **diagnostic**: Use api variable and improve validate (#21111) - **lsp**: Update semantic tokens algorithm for parsing modifiers (#21383) - **lsp**: Only redraw the windows containing LSP tokens - **lsp**: Better binary search mid calculation in semantic token (#22607) - **statuscolumn**: Only fill click defs array once per redraw (#21884) - **statusline**: UI elements are always redrawn on K_EVENT - **treesitter**: Smarter languagetree invalidation - **treesitter**: More efficient foldexpr - **ui**: Mitigate redraw latency regression from TUI refactor BUG FIXES - Make_filter_cmd for :! powershell - :! pwsh redirection for `command not found` - Find multibyte file name in line (#20519) - Change did_emsg back to int - 'scroll' is not set correctly for floats with 'splitkeep' - Setting tabline option not redrawing tabline - Avoid unsigned overflow in home_replace() (#20854) - Add lfs to luarc.json (#20979) - Vim.ui.input always calls callback #21006 - Don't disable compositor widgets when a GUI with multigrid attaches - Pvs warnings (#21145) - Clang warnings (#21247) - Vim.opt_local:append ignoring global option value (#21382) - Issues with command line if ui elements are externalized - Properly close builtin popup in ext_popupmenu - Failing XDG test on Windows CI - Pass value instead of pointer to isalpha (#21898) - Use correct number for INT_MAX (#21951) - Add manifest file to correctly determine Windows version (#21953) - Uv_tty_set_mode failed in Windows #22264 - Lsp github issue template example (#22285) - Remove "Features" section from --version/:version (#22315) - Remove "Compiled by:" from :version/--version (#22316) - Add missing void as function argument (#22317) - Windows assertion failure due to incorrect path length (#22324) - Resolve error from -Werror=maybe-uninitialized - Address -Wmaybe-uninitialized warnings (#22436) - Pasting in terminal buffer on windows #22566 - Invalid buffer size argument to snprintf #22729 - Snprintf buffer overflow detected by -D_FORTIFY_SOURCE=3 (#22780) - **MSVC**: Set the active code page to utf-8 (#22384) - **Windows**: Restore console title at exit #21922 - **api**: Dynamically allocate line buffer for nvim_out_write (#20537) - **api**: Nvim_buf_get_text regression (#21071) - **api**: Nvim_win_set_cursor redraw cursorcolumn for non-current window (#21072) - **api**: Set correct curbuf when temporarily changing curwin (#21371) - **api**: "emsg_silent" should imply "silent" in nvim_cmd (#21438) - **api**: Nvim_create_autocmd crash on invalid types inside pattern array - **api**: Avoid memory leak with click functions in nvim_eval_statusline() (#21845) - **api**: Don't allow hiding aucmd_win from another tabpage (#21975) - **api**: Allow empty Lua table for nested dicts #22268 - **api**: Set script context when setting usercmd or option (#22624) - **api**: Vim.filetype.get_option() (#22753) - **api**: Make nvim_get_hl return 'cterm' attrs properly - **api**: Use local LastSet structure in nvim_get_option_info (#22741) - **api**: Return both link and attributes with nvim_get_hl (#22824) - **api**: Avoid double hit-enter prompt with nvim_err_writeln (#22879) - **autocmd**: Handle recursion for force set (#22820) - **buffer_updates**: Save and restore current window cursor (#16732) - **build**: "make clean" fails - **build**: Duplicate version string "v0.8.0-v0.8.0" #20578 - **build**: Fix invalid use of EXITFREE - **chansend**: Sending lines to terminal in reverse order on Windows #19315 - **ci**: Skip test on windows (#21502) - **ci/release/winget**: Bump action version - **client**: Wait for session to exit - **clint**: Disable whitespace/newline #20619 - **clipboard**: Prefer xsel #20918 - **clipboard**: Update version regex pattern (#21012) - **clipboard**: Show provider warning when not during batch changes #21451 - **column**: Avoid drawing columns for virt_lines_leftcol - **column**: Estimate 'statuscolumn' width appropriately - **column**: No longer reset nrwidth_line_count for 'statuscolumn' - **column**: Cmdwin cursor is offset with 'statuscolumn' (#22445) - **column**: Issues with 'statuscolumn' width (#22542) - **column**: Rebuild status column when sign column is invalidated (#22690) - **column**: Invalidate statuscolumn width when UPD_NOT_VALID (#22723) - **completion**: Set pum_size even if ext_popupmenu is used (#20648) - **completion**: Correct what modes support fuzzy completion - **completion**: Include lua syntaxes in :ownsyntax completion (#21941) - **coverity/433537**: Don't call kv_concat_len() when read_size is 0 (#21664) - **decoration**: Redraw correctly when re-using ids - **decoration**: Call providers in win_update() earlier - **decoration**: Do not reset must_redraw after calling providers (#21459) - **decoration**: Don't show signcolumn for non-sign_text extmark (#22135) - **diagnostic**: Correct type annotations; add Diagnostic type (#21120) - **diagnostic**: Clear stale cache on reset (#21454) - **diagnostic**: Sort diagnostics by column (#21457) - **diagnostic**: Revert notification on missing diagnostics (#21632) - **diagnostic**: Use correct field name for tags (#22835) - **diff**: Remove size_t underflow (#20929) - **diff**: Fix a crash in diff mode with linematch enabled (#21070) - **diff**: Handle long lines without crashing (#21389) - **diff**: Avoid restoring invalid 'foldcolumn' value (#21650) - **diff**: "nvim -d" should only diff arglist files #21829 - **diff**: Adjust extmarks after diffput/diffget (#22440) - **diff**: Add NULL check - **diff**: Trigger on_bytes only once after diffget/diffput - **diff.c**: Regression in diffgetput (#20843) - **docs**: Missing "(" in :help HTML - **docs**: Nil as viable argument for goto_prev (#20852) - **docs-html**: Keycodes, taglinks, column_heading #20498 - **docs-html**: Update parser - **docs-html**: Misaligned tabs after conceal #20690 - **edit**: Don't subtract msg_scrolled when removing double quote (#22630) - **editorconfig**: Do not highlight unknown properties as errors (#21673) - **embed**: Handle stdio in server properly - **eval**: Make error number of charidx() same as Vim - **eval**: Change some tv_dict_add() usages back to hash_add() - **events**: Save v:event for cmdline autocommands separately (#21316) - **events**: Skip WinScrolled for newly-created float windows (#21333) - **ex_cmds**: Fix a mistake in the porting of Vim patch 8.1.0306 (#21096) - **exit**: The TUI should not ui_flush() itself (#21625) - **exit**: Skip unnecessary steps in TUI preserve_exit() (#21897) - **extmarks**: Adjust extmarks when inserting prompt prefix - **extmarks**: Problems with folded virtual lines (#21930) - **extmarks**: Don't leak memory on error (#22507) - **fileio**: Use first available directory in backupdir for backupcopy (#20655) - **fileio.c**: Don't use uninitialized memory (#22031) - **filetype**: Don't pass empty string to detect (#20766) - **filetype**: Correctly detect tex files - **filetype**: Make vim.filetype.match() work with contents only (#22181) - **filetype**: Avoid recursive FileType autocmds (#22813) - **filetype**: Make recursive work...again (#22826) - **float**: Make closing float in another tab return to correct window - **float**: Fix ml_get error with bufpos - **float**: Fix crash with bufpos and non-existent window (#21319) - **float**: Remove -1 in height clamp - **folds**: Fix fold marker multibyte comparison (#20439) - **folds**: Use long for number of folded lines (#21447) - **folds**: Cursorline highlight is not always applied on closed folds (#22242) - **folds**: Handle visual blockwise indent insertion correctly (#22898) - **fs**: Duplicate path separator #21509 - **health**: Correct tmux rgb verification (#20868) - **health**: Fix `tmux_esc_time` comparison - **health**: Iterate using ipairs correctly (#22119) - **health**: Stop using deprecated ts.language.inspect_language() (#22850) - **help**: Force tree reparse after local addition insertion - **helpers**: Restore channel id after a call to WITH_SCRIPT_CONTEXT - **highlight**: Link more treesitter groups by default (#20711) - **highlight**: Properly deal with underline mask when listing (#22057) - **highlight**: Avoid ORing underline flags (#22372) - **highlight**: Use winhl=Foo:Bar even when Bar is empty - **inspect**: Alwasy resolve full treesitter lang hl groups - **intro**: Omit patch version in ":help news" item #20713 - **intro**: Make :help news line easier to translate (#21974) - **lintcommit**: Capitalized description #22282 - **loader**: Disable profiling by default - **lsp**: Reporting bogus capabilities in CodeActionKind #20678 - **lsp**: Ignore hover and signatureHelp responses on buffer change (#21121) - **lsp**: Render <pre>{lang} code blocks and set separator default to false (#21271) - **lsp**: Remove workspaceFolders field (#21284) - **lsp**: Call show_document with correct args - **lsp**: Ensure open_logfile is safe for fast events (#21288) - **lsp**: Followup fixes for semantic tokens support (#21357) - **lsp**: Correct some type annotations (#21365) - **lsp**: Fix get_active_clients bufnr parameter (#21366) - **lsp**: Ignore null responses for semanticTokens request (#21364) - **lsp**: Token_edit.data might be null on deletion (#21462) - **lsp**: Adjust gravity of semantic tokens extmarks (#21574) - **lsp**: Fix nil client access in get_active_clients (#21524) - **lsp**: Change vim.lsp.get_active_clients.filter name annotation to string (#21624) - **lsp**: Correct callHierarchy capability to fix lsp.buf.incoming_calls() (#21665) - **lsp**: Fix `removed` param value in add_workspace_folder (#21915) - **lsp**: Assert workspace/applyEdit receives params (#21945) - **lsp**: Check method is supported when range formatting (#21970) - **lsp**: Check if the buffer is a directory before w! it (#22289) - **lsp**: Wrong format of bufnr and client order in error message (#22336) - **lsp**: Fix some type annotations (#22397) - **lsp**: CallHierarchy methods also require the callHierarchyProvider (#22427) - **lsp**: Use buffer scheme for files not stored on disk (#22407) - **lsp**: Only fire LspDetach for attached buffers (#22468) - **lsp**: Don't monitor files if workspace_folders is nil (#22531) - **lsp**: Change LspTokenUpdate to use buffer instead of pattern (#22559) - **lsp**: Prevent lsp tests from picking up local user config (#22606) - **lsp**: Send didClose on buffer rename (#22623) - **lsp**: Use line start/end for visual line selection (#22632) - **lsp**: Remove_workspace_folders fails if client has no workspace_folders #22633 - **lsp**: Vim.lsp.util.apply_text_edits cursor validation #22636 - **lsp**: Kill buffers after renaming a directory #22618 - **lsp**: Avoid switching buffers on lsp attach (#22689) - **lsp**: Jump to tag locations reliably when :ltag is used (#22750) - **lsp**: Add missing silent check in lsp hover handler (#22763) - **lsp/window_showDocument**: Correctly handle external resources #20867 - **lua**: Properly configure luacheck and remove `local vim = ...` lines (#20551) - **lua**: Assert failure with vim.regex() error inside :silent! (#20555) - **lua**: On_yank error with blockwise multibyte region #20162 - **lua**: Pesc, tbl_islist result types #20751 - **lua**: Make `vim.deepcopy` work with `vim.NIL` - **lua**: Always return nil values in vim.tbl_get when no results - **lua**: Mark some eval functions that can run in API-fast - **lua**: Vim.deprecate() shows ":help deprecated" #22677 - **luado**: Get old_line length before executing Lua code - **man**: Support MacOS 13 - **man**: Handle absolute paths as `:Man` targets (#20624) - **man**: Use italics for `<bs>_` (#22086) - **man.lua**: Set modifiable before writing page (#20914) - **man.lua**: Use `env` command (#21007) - **man.lua**: Open in current window if it's already a man page (#21987) - **man.lua**: Tests, naming - **mappings**: Use all buckets in second round of unmap (#21534) - **mappings**: Fix check for cpo-B inverted in completion - **mappings**: Make "<" escaping in completion match Vim - **mark**: Do not restore view in op-pending mode (#20889) - **memline**: Use long instead of linenr_T for db_line_count - **memory**: Fix memory alignment for dynamic allocation - **messages**: Reset msg_grid_scroll_discount when redrawing (#21000) - **messages**: Don't set cmdline_row when messages have scrolled (#21015) - **mouse**: Ensure no scrolling with "ver:0" in 'mousescroll' (#20861) - **mouse**: Statusline click registered as statuscolumn (#21748) - **options**: No matter what is said, 'cmdheight' is tab-local (susy baka) - **options**: Fix local 'sidescrolloff' doesn't work for mouse (#21162) - **options**: Restore exists() behavior for options (#21510) - **paste**: Feed keys as typed in cmdline mode (#20959) - **path**: Don't remove trailing slash when getting absolute path (#20853) - **powershell**: Wrong length allocation for ":%w !" #20530 - **qflist**: Avoid read of uninitialized memory (#20709) - **rbuffer**: Handle edge case where write_ptr has wrapped around - **redraw**: Get the line again after evaluating something - **remote**: Don't leak memory on failure to connect to server (#21931) - **rpc**: Don't free args on error in rpc_send_event - **rpc**: Don't parse msgpack if buflen is 0 (#21899) - **rpc**: Ignore redraw events when not in UI client (#21892) - **rpc**: Ignore redraw events when exiting (#22184) - **runtime**: Properly rely on t_Co for colorschemes (#20602) - **runtime**: Use `g:terminal_color_{0-15}` in colorschemes (#20637) - **screen**: Correctly draw background and eob with 'rightleft' (#22640) - **screen**: Redraw the ruler for a current floating window - **secure**: Crash when hitting escape in prompt (#21283) - **shell**: On Windows :make does not echo #22728 - **showcmd**: Assert failure with cmdheight=0 (#21536) - **sleep**: Correct cursor placement (#22639) - **spell**: Fix wrong cast (#20810) - **spell**: Properly source spell/LANG.{vim,lua} (#22716) - **startup**: Support .exrc or .nvimrc with init.lua (#21181) - **status**: Handle unprintable chars in the statusline - **statuscolumn**: Fix crashes and clang/PVS warnings (#21725) - **statuscolumn**: Fix sign column highlights (#21727) - **statuscolumn**: Foldcolumn buffer is too small (#21761) - **statuscolumn**: Make %l/%r respect 'number'/'relativenumber' (#21747) - **statuscolumn**: Always fill click defs array (#21878) - **statusline**: Don't show showcmd when not enough space (#21550) - **statusline**: Make nvim_eval_statusline() work with %S (#21553) - **statusline**: Don't leak memory with zero-width click labels - **statusline**: Don't leak memory with truncated click labels - **stdpath**: Default to /tmp if stdpath('run') cannot be created #20952 - **syntax**: Correct conceal for annotated code blocks (#21272) - **tabline**: Avoid memory leak in tabline click definitions (#21847) - **terminal**: Fix 'mousescroll' not respected in terminal mode (#21415) - **test**: Unset XDG_CONFIG_HOME when running oldtest - **test**: Fix issues detected by running unittests in ASAN/UBSAN - **test**: Fix C imports on macOS arm64 - **tests**: Only get the color map once, even for multiple test files - **tests**: Initialize Screen.colors in API highlight tests - **tests**: Use -l mode for lsp tests - **tests**: Fixes for using vim.mpack and more ASAN - **tests**: Adapt treesitter/highlight_spec priority test - **treesitter**: Properly restore `'syntax'` (#21358) - **treesitter**: Really restore syntax - **treesitter**: Validate language name - **treesitter**: Fix most diagnostics - **treesitter**: Don't trample parsers when filetype!=lang - **treesitter**: Make params optional - **treesitter**: Fixup language invalidation (#22381) - **treesitter**: Remove virtual text from playground - **treesitter**: Ipairs -> pairs - **treesitter**: Fixup for health - **treesitter**: Maintain cursor position when toggling anonymous nodes - **treesitter**: Disallow empty filetypes - **treesitter**: Typos in _range.lua - **treesitter**: Break early from loop when match is found (#22499) - **treesitter**: Raise ts_match_limit to 256 (#22497) - **treesitter**: Is_in_node_range (#22582) - **treesitter**: Correct include_bytes arg for parse() - **treesitter**: Do not error on empty filetype - **treesitter**: Better lang handling of get_parser() - **treesitter**: Foldexpr (#22652) - **treesitter**: InspectTree does not respect 'splitright' #22692 - **treesitter**: Annotations - **treesitter**: Add missing deprecate - **treesitter**: Update queries from nvim-treesitter - **treesitter**: Use capture metadata range if exists - **treesitter**: Disable folding in inspect_tree() (#22885) - **treesitter**: Do not track ranges of the root tree (#22912) - **ts**: Check buffer is loaded when restoring options (#21419) - **tui**: Resume main thread if suspending isn't implemented (#20523) - **tui**: Set cursor color param as string when required #21407 - **tui**: More work in the TUI - **tui**: Do not set ui_client_termname if it is already set (#21607) - **tui**: Make a copy of data->params before unibi_format() (#21643) - **tui**: Do not invoke loop recursively for pad() - **tui**: Set stdin as "blocking" on exit (#21973) - **tui**: Detach/attach on suspend/resume (#22040) - **tui**: Exit on input eof - **tui**: Set taskbar, icon in Windows #22270 - **tui**: Only forward stdin_fd on first attach (#22293) - **tui**: Properly check if stdin is a tty (#22321) - **tui**: Avoid stack-use-after-scope with cursor color (#22435) - **tutor**: Failing to get buf name #20933 - **ui**: Msg_ext_set_kind for nvim_echo (#20476) - **ui**: Setting 'cmdheight' with global statusline (#20515) - **ui**: Send grid_resize events before triggering VimResized (#20760) - **ui**: Fix some cases of stale highlight definitions - **ui**: Allow resize commands to set 'cmdheight' to 0 - **ui**: Fix fragile UI_CALL macro invocation (#21656) - **ui**: Convert title_pos string in nvim_win_get_config - **ui**: Set stc to empty in floatwin with minimal style (#21720) - **ui**: Command line issues with external messages (#21709) - **ui**: Re-organize tty fd handling and fix issues - **ui**: Make sure screen is valid after resizing - **ui**: Recording change doesn't trigger statusline redraw - **ui**: Ruler is not redrawn in cmdline with redrawstatus - **ui-ext**: Correct message kind in history before vim.ui_attach() - **ui-ext**: Log and clear error in ui_comp_event (#21147) - **ui-ext**: Force cursor update after resize in char-based UI - **unittest**: Delete unused duplicated code - **unittests**: Do not consider process crash to be a success - **unittests**: Fix TUI broken test previously ignored - **vim-patches**: Ensure libfuse is installed - **vim.diff**: Correctly apply hunk offsets with linematch (#20931) - **vim.diff**: Fix fastforward off-by-1 (#20937) - **vim.ui.input**: Return empty string when inputs nothing (#20883) - **vim.version**: Incorrect version.cmp() - **vim.version**: Prerelease compare - **win_close**: Remove float grid after closing buffer (#21551) - **win_update**: Don't use unintialized memory in edge case (#22266) - **windows**: Set console icon later in startup - **windows**: Consistent normalization in fs.find BUILD SYSTEM! - Remove unused variable CMAKE_C_COMPILER_ARG1 - Remove code for cross-compilation - Remove url for 32-bit winyank - Remove unnecessary translation-related code - Rely on builtin cmake downloading rather than custom script - Define EP_PREFIX property - Only generate compilation database for the nvim target (#20449) - Remove EXITFREE for debug builds - Generate compilation database for older cmake versions - Add clang-tidy configuration file (#15601) - Fix incorrect clang-tidy identifier rules (#20650) - Rely on default cmake installation if possible - Give example on complex regexes - Preprocess vim patches with uncrustify #20786 - Copy each treesitter parser library individually #20797 - Fix plural messages missing from .po files (#20830) - Make update-po support optwin.vim (#20840) - Remove python linting #20851 - Add EXCLUDE option to add_glob_target - Always ignore user's cmake preset (#20935) - Allow IWYU to fix includes for all .c files - Restrict `git describe` to top level source directory (#20993) - Fix help tags generation when SHELL=fish (#21562) - Add git sha to version when built with nix flake (#21210) - Remove workaround for old luajit versions - Remove workaround for ancient clang versions - Use modern cmake (#21589) - Include our libraries before system libraries (#21746) - Enable iwyu with target properties instead of variables (#21797) - Exclude tui/terminfo_defs.h from lintc-clint (#21822) - Enable cmake workflow presets (#21860) - Remove nvim as a dependency of unittests (#21903) - Various cmake fixes (#21902) - Bump MSVC warning to level two (#21890) - Use CMAKE_POSITION_INDEPENDENT_CODE instead of -fPIC (#21947) - Make generated source files reproducible #21586 - Remove unnecessary unit test code (#21940) - Use cmake for all platforms for unibilium and libtermkey (#21926) - Simplify treesitter installation (#21969) - Use upstream CMakeLists.txt for unibilium (#21976) - Delete pthreads import (#21732) - Remove GNU make check (#21977) - Remove tests for libtermkey (#21983) - Use cmake to build treesitter on all platforms (#21984) - Introduce default build variables (#21991) - Use cmake to build libvterm on all platform (#21986) - Check if libvterm version meets requirement (#22010) - Find unibilium without relying on libfindmacros (#22015) - Fix dependencies in find modules (#22017) - Enable ccache by default if available (#22020) - Enable ccache project-wide (#22045) - Add uninstall make target (#22059) - Remove unnecessary file generation (#22099) - Update release data - Stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051) - Unbreak building neovim with multi-config generators (#22104) - Don't build libnvim when running the CI (#22149) - Remove duplicate INTERFACE keyword (#22106) - Prefer -D <variable>=<value> over -D<variable>=<value> (#22164) - Replace check-single-includes with clang-tidy (#22061) - Remove unused function get_test_target (#22176) - Reuse source files with interface library (#22177) - Create test/CMakeLists.txt and move test-related code (#22179) - Remove codecov related files (#20859) - Mark uninteresting variables as advanced (#22208) - Enable MSVC level 3 warnings (#21934) - Don't check environment variable to detect CI (#22234) - Treat clang-tidy warnings as errors (#22238) - Remove ENABLE_COMPILER_SUGGESTIONS option (#22249) - Only use HOSTNAME_PRG if HOSTNAME is undefined (#22288) - Use custom command to create single versiondef (#22290) - Use libuv config file (#22209) - Test multi-config generator (#22310) - Build all dependencies in parallel (#22329) - Remove unused dependency penlight (#22334) - Build luajit in parallel (#22327) - Set libtermkey project language to C (#22410) - Remove pkgconfig-related code (#22422) - Remove libfindmacros library (#22423) - Cmake cleanup (#22251) - Unset variables ending with "URL" if USE_EXISTING_SRC_DIR is ON - Show build type specific compiler flags when using --version - Fix unknown pragma warning with mingw (#22533) - Consistently use the provided option paths - Fix USE_EXISTING_SRC_DIR option - Silence git describe error output - Remove workaround for incorrectly packaged libluv - Enable unit testing on release builds (#22554) - Fix build warning when using gcc 4.9.2 - Explicitly add dependency include dir for header generation - Sanitizers for gcc - Set CMAKE_C_STANDARD to 99 for all dependencies - Drop curl.exe on Windows - Download wintools executables separately - Cmake cleanup - **MSVC**: Enable assertions on RelWithDebInfo build type (#22326) - **Windows**: Fix redoing version generation (#21880) - **Windows**: Make bundling nvim-qt optional (#21866) - **Windows**: Allow building without custom md5sum - **bump_deps.lua**: Run command -v in shell (#22030) - **ci**: Let ASAN print tracebacks for more errors (SIGABORT, SIGILL) - **cmake**: Add modelines to enable syntax highlighting - **deps**: Restore support for USE_EXISTING_SRC_DIR (#20491) - **deps**: Add build type for libuv (#20575) - **deps**: Disable shared library for libvterm. (#20566) - **deps**: Bump tree-sitter to v0.20.8 (#22663) - **deps**: Bump luarocks to v3.9.2 - **deps**: Bump coxpcall to 1.17.0-1 - **deps**: Bump luacheck to 1.1.0-1 - **deps**: Bump mpack to 1.0.10 - **deps**: Bump lua parser to v0.0.14 (#20897) - **deps**: Switch vim parser to maintained fork (#22896) - **deps**: Bump vimdoc parser to v2.0.0 (#22870) - **deps**: Set query parser to release (#22603) - **deps**: Bump libvterm to v0.3.1 - **deps**: Bump msgpack-c to v6.0.0 (#22522) - **deps**: Bump win32yank to v0.1.1 (#22700) - **deps**: Bump actions/stale from 7 to 8 - **deps**: Switch to Launchpad for libvterm and libtermkey (#22811) - **editorconfig**: Set indent_size to 4 for python files (#21135) - **lint**: Remove clint.py rules for braces #20880 - **lint**: Add more shell scripts to lintsh - **lintsh**: Double quote to prevent word splitting (#21571) - **luarocks**: Update busted version to v2.1.1 (#22029) - **nix**: Change the pkgs to final, add new version of libvterm (#20410) - **nix**: Update nixpkgs - **nix**: Clean up nix flake (#21565) - **nix**: Remove pylint as it has been removed (#21572) - **nix**: Fixed build (#22918) - **vim-patch.sh**: Handle added/removed files properly - **vim-patch.sh**: Checkout files with path for uncrustify (#20863) - **windows**: Export extern symbols for use in FFI #22756 - **windows**: Specify Windows 8 as the minimum version (#22173) - **windows**: Work around luarocks not finding its own md5sum DOCUMENTATION - Refer to vim.lsp.start() in LSP issue template #20422 - Fix incorrect :help tag (#20511) - Added proper annotations to functions in shared.lua - Fix typos - Fix/remove invalid URLs #20647 - "supported platforms" matrix #19615 - Update vimdoc parser #20747 - ":che" is ":checkhealth" #20147 - .git-blame-ignore-revs (#20820) - Swap CursorLineFold and CursorLineSign (#20875) - Add language annotation to Nvim manual - Add missing docs from some Vim patches (#21296) - Dark/light color/accessibilty pass for generated html docs #21345 - Add links to extmarks and namespaces (#21378) - Remove "How-to disable mouse" menu item #21394 - Add security policy (#17338) - Fix order of numbers in syntax.txt (#21581) - Clarify line about converse of lua-heredoc (#21592) - Fix treesitter parsing errors - Add 'statuscolumn' docstrings (#21717) - Builtin TUI is no longer channel 0 (#21794) - Treesitter.add_directive, add_predicate #21206 - Docs: use codeblocks in runtime/doc/options.txt (#21919) - Clarify :runtime behavior without [where] again (#22003) - Clarify "pipe" mode for sockconnect - Reword news.txt to ensure a consistent style (#22215) - Remove mentions of 'balloonexpr' #22049 - Remove the test badge from the README (#22350) - Mention getmousepos() for click execute function label - Naming conventions, guidelines - Fix more treesitter parsing errors - Use build/bin/nvim instead of nvim in gen_vimdoc (#22398) - Fix vim.treesitter tags - Lua2dox.lua debugging - Module-level docstrings (@defgroup) #22498 - Add missing highlight groups for floats - Add removed features in news.txt - Fix g:terminal_color_x terminal colors #22746 - More details about vim.region (#21116) - How to debug TUI using gdb/lldb #22771 - Add vim.treesitter.query.get_query() to deprecated.txt - **README**: Add Kotlin as a language which can use the API (#21567) - **README**: Fix CI status badge (#22308) - **api**: Pattern is not expanded for autocommands (#20812) - **api**: Fix treesitter parsing errors - **api**: Tweak data arg for nvim_create_autocmd (#22008) - **api**: Link to nvim_set_hl_ns from nvim_set_hl (#22678) - **dev-style**: Remove rule about variable declarations (#20446) - **dev-style**: Remove rules covered by uncrustify - **diagnostic**: Number → integer (#22512) - **docstrings**: Fix runtime type annotations - **editorconfig**: Update news.txt - **editorconfig**: Add editorconfig.txt - **editorconfig**: Number → integer (#22514) - **filetype**: Number → integer (#22516) - **gen**: Support language annotation in docstrings - **gitignore**: Correct oldtest path - **help**: Consistent headers for local additions - **highlight**: Fix type annotations (#22272) - **html**: Render @see items as a list #22675 - **inspect**: Number → integer (#22511) - **lsp**: Add formatting APIs to deprecated.txt (#20487) - **lsp**: Update buf_notify and rpc.notify params types (#21753) - **lsp**: Fix type annotation on convert_input_to_markdown_lines (#21772) - **lsp**: Format arguments to start_client() (#21980) - **lsp**: Update cmd_env description (#22438) - **lsp**: Change type annotations from number → integer (#22510) - **lsp**: Type annotation for lsp.client (#22509) - **lsp**: More precise type annotations (#22621) - **lsp**: Opt-out of default LSP "gq" #22615 - **lua**: Add clarifications for fs.find() and fs.normalize() (#21132) - **lua**: Correct the tags for vim.opt_local and vim.opt_global (#21138) - **lua**: Correct vim.spell.check example (#21311) - **lua**: Add guide to using Lua in Neovim (#21137) - **lua**: Add `vim.json` (#21538) - **lua**: Fix treesitter parsing errors - **lua**: Adjust some type annotations - **lua**: Lua-guide: <Nop> is for rhs of vim.keymap.set(), not lhs (#21814) - **lua**: Use luaref tag instead of www.lua.org #21813 - **lua**: Number → integer (#22517) - **luvref**: Fix treesitter parsing errors - **luvref**: Update to version bump - **maintain**: CI strategy #20778 - **maintain**: Add note on updating luvref.txt - **manual**: Fix treesitter parsing errors - **news**: Add news.txt and link from README (#20426) - **options**: Remove mentions of 'imactivatefunc' and 'imstatusfunc' - **shell**: Mention "&" for piping with powershell #20459 - **support**: Update tested versions (#21126) - **test**: Using cmake directly (without make) #22781 - **treesitter**: Fix predicate syntax (#21016) - **treesitter**: Change links for `eq?` and `set!` to codeblocks (#21047) - **treesitter**: Use full function names in tags (#21321) - **treesitter**: Fix parse errors - **treesitter**: Number → integer (#22513) - **treesitter**: Add query injections - **tutor**: Fix TODO line demo (#21965) - **uri**: Number → integer (#22515) - **usr**: Make usr_05.txt more coherent with Nvim changes (#22428) - **usr_05**: Update sentence about Nvim default behavior of Q (#20817) - **vim.fs**: Normalize Windows example was incorrect (#21966) - **website**: Soft wrap code blocks #21644 REFACTOR - Remove char_u type and replace with char, uint8_t, etc - remove STRNCMP (#21208) and STRLCPY (#21235) - Remove clint error suppression as all errors has been fixed #21782 - Explicitly convert HANDLE to intptr_t for _open_osfhandle() - Clang-tidy fixes to silence clangd warning (#20683) - Fix uncrustify lint errors - Move do_mouse() and its helpers to mouse.c (#20895) - Fix clang-tidy warnings - Click definition functions #20923 - Remove stray emsg check after #20992 (#20996) - Move tabline code to statusline.c (#21008) - Convert drawline.c draw states to enum (#21067) - Remove __STDC_ISO_10646__ check - Deprecate 'secure' option - Remove old TODO comments that aren't relevant anymore (#21144) - Maybe suppress a PVS warning - Rework parameter validation in vim.secure.trust() (#21223) - Buffer_ensure_loaded() - Move ex_retab() to indent.c - Remove COMMA (#21260) - Make sure getting a callback doesn't modify argument - Rename mch_msg => os_msg - Rename mch_get_acl => os_get_acl - Eliminate os_unix.c #21621 - Extract code to open stdin for reading - Eliminate bump-deps.sh using "nvim -l" - Fix IWYU mapping file and use IWYU (#21802) - Format with stylua (#21821) - Remove E5500, adjust tests - Fix sign conversion warning from gcc (#21833) - Use uint8_t for blobs and ga_append() (#21916) - Use flexible arrays instead of the length-of-one trick (#22072) - Reduce scope of locals as per the style guide (#22206) - Move init_default_autocmds to lua - Rename show_tree => inspect_tree #22474 - Move ga_loaded to runtime.c (#22626) - Do more in TRY_WRAP - Add const and remove unnecessary casts (#22841) - Use bool type for global variables (#22842) - Rename local API alias from a to api - Make error message definitions const - Remove use of reserved c++ keywords - **PVS**: Suppress false positive V547 in drawline.c (#21875) - **PVS/V1048**: Remove unnecessary assignment (#21870) - **PVS/V1048**: Remove redundant assignment (#21871) - **PVS/V1048**: Remove duplicated assignments (#21873) - **PVS/V581**: Merge identical if statements (#22390) - **api**: Do not allocate temporaries for internal events - **api**: VALIDATE macros #22187 #22256 #22262 - **build**: Remove unused stdlib function and include checks - **build**: Graduate HAVE_LOCALE_H feature - **build**: Graduate libtreesitter features which are 1+ years old - **build**: Graduate msgpack-c FLOAT32 "feature" since forever - **build**: Graduate unibilium VAR_FROM feature from 2017 - **build**: Graduate -Wvla, -fno-common and -Og "features" - **build**: Make installation of runtime/ more effective - **checkhealth**: Convert "nvim" check to Lua - **clint**: Convert short to int16_t (#20815) - **column**: Remove unused build_statuscol_str() arguments - **completion**: Don't add and remove '^' for Lua (#22702) - **diagnostic**: Remove deprecated function (#20423) - **diagnostic**: DRY for loop #21521 - **diff.c**: Reduce scope of variables (#20781) - **diff.c**: Break up ex_diffgetput() - **diff.c**: Allocate hunks directly in ga_array - **diff.c**: Factor out hunk extraction - **diff.c**: Factor out hunk processing - **diff.c**: Simplify diff_buf_idx() - **diff.c**: Internal does not need diffstyle - **diff.c**: Factor out diffblock deletion - **diff.c**: Copy lines via memmove - **drawline.c**: Leadcol/trailcol - **drawline.c**: Move number column helpers function together - **drawscreen.c**: Reduce scopes of locals (#20668) - **eval**: Make get_lval() explicitly check for v:lua - **eval.c**: Factor out get_number_tv() (#21893) - **exit**: Pass error message to preserve_exit() (#22097) - **extmarks**: Some minor internal API changes - **f_has**: Remove wrong comment (#21561) - **fileio.c**: Reduce scope of locals - **fileio.c**: Refactor match_file_path() - **fileio.c**: Refactor vim_rename() - **fileio.c**: Refactor buf_write_bytes - **fileio.c**: Refactor buf_write_bytes (2) - **fileio.c**: Remove HAS_BW_FLAGS - **fileio.c**: Factor out autocmd handling from buf_write() - **fileio.c**: More bools - **fileio.c**: Reduce scope of locals - **fileio.c**: Do not use macros for error handling - **fileio.c**: Factor out buf_write post autocmds - **fileio.c**: Factor out file info calc - **fileio.c**: Make unreadable expression readable - **fileio.c**: Factor out backup creation - **fileio.c**: Remove HAVE_ACL ifdefs - **fileio.c**: Normalize ifdefs - **fs**: Replace vim.fn/vim.env in vim.fs (#20379) - **highlight**: Rename FloatBorderTitle #20988 - **highlight**: Reshape the HL_UNDER* bits into a 3-bit integer mask - **highlight_group.c**: Reduce scope of locals - **intro**: Avoid Coverity warning (#22000) - **loader**: Use vim.fs - **loader**: Remove BufWritePost autocmd - **loader**: Add typing for package.loaders - **loader**: Simplify tracking logic - **loader**: Cache hash information - **log**: Reduce compile time LOG_LEVEL granularity - **lsp**: Remove deprecated lsp functions (#20421) - **lsp**: Extract a _create_server method in lsp_spec - **lsp**: Remove deprecated vim.lsp.buf_get_clients calls (#21337) - **lsp**: Remove workaround for missing bit module (#22373) - **lsp**: Remove deprecated code (#22389) - **lsp**: Remove _resolve_capabilities_compat (#22628) - **lsp**: Do not parse verbose output when overwriting options (#22810) - **lua**: Move _G.arg init to nlua_init() - **lua**: Get all marks instead of iterating over namespaces - **lua2dox**: Format with stylua - **main.c**: Remove unreachable use_builtin_ui conditions (#22338) - **man**: Pass env directly to spawn() (#20591) - **man**: Add type annotations - **memory**: Simplify new alignment logic - **option.c**: Reduce scope of locals - **option.c**: Add get_varp_from and get_varp_scope_from - **option.c**: De-nest set_option_value - **option.c**: Use intermediate for options ref - **option.c**: Add do_set_num - **option.c**: Add do_set_bool - **option.c**: Simplify do_set_string - **option.c**: Factor out common skip check - **option.c**: Factor out loop code from do_set() - **option.c**: Remove goto - **option.c**: Change nextchar to uint8_t - **option.c**: Use skiptowhite_esc - **option.c**: Factor out set op parsing - **option.c**: Factor out option prefix parsing - **option.c**: Factor out option name parsing - **option.c**: Factor out opt_idx validation - **option.c**: De-nest code in do_set_option - **option.c**: Move bool prefix check - **option.c**: Add do_set_option_value - **option.c**: Factor out some nextchar checks - **option.c**: Factor out string option special case handling - **options**: Don't pass negative number to illegal_char() (#21999) - **optionstr.c**: Reduce scope of locals - **optionstr.c**: Break up did_set_string_option 1-52 - **optionstr.c**: Remove some simple did_set_* functions - **optionstr.c**: Add did_set_string_option_for - **optionstr.c**: Break up did_option_listflags - **optionstr.c**: Remove some redundant parens - **optionstr.c**: Break up did_set_expropt - **optionstr.c**: Move handling of formatlistpat - **optionstr.c**: Align comments (#22070) - **params**: Open -s and -w script files after parsing commands - **pty**: Remove old logic for inheriting termios from host terminal - **redraw**: No type argument in update_screen() - **redraw**: Various simplifications - **redraw**: Make cursor position redraw use the "redraw later" pattern - **runtime**: Use vim.version to compare versions #22550 - **runtime.c**: Factor out find_script_by_name() (#22620) - **screen**: Screen.c delenda est - **sleep**: Simplify rube goldberg implementation of :sleep - **spell**: Use uint8_t for "byts" variables (#22519) - **statusline**: Move statusline defs to statusline_defs.h - **tag**: Remove return type from do_tag() - **test**: Create an lsp-specific helpers.lua file - **tests**: Lift retry() into assert_log() - **tests**: Run unittests using main nvim binary in interpreter mode - **tests**: Move lua-client into core and use it for functionaltests - **treesitter**: Add vim.treesitter.get_node() (#22360) - **treesitter**: Use string.format to create lines - **treesitter**: Simplify some range functions - **treesitter**: Delegate region calculation to treesitter (#22553) - **treesitter**: Use byte ranges from treesitter (#22589) - **treesitter**: Add Range type aliase for Range4|Range6 - **treesitter**: Delegate region calculation to treesitter (#22576) - **treesitter**: Move inspect_tree impl - **tui**: Use nvim_echo() for verbose terminfo - **tui/input.c**: Remove unused multithreading code (#22342) - **ui**: Statusbar invalidation to win_set_inner_size() - **ui**: Devirtualize the ui layer - **ui**: Cleanup 'redrawdebug', introduce "flush" mode - **ui**: Don't reimplement redrawing in focus gained handling - **ui**: Remove some superfluous ui_flush() calls - **ui**: Ui_log() can now just be a function - **uncrustify**: Move macros definitions to enable formatting - **uncrustify**: Improved formatting rules - **vim.gsplit**: Remove "keepsep" - **vim.version**: Cleanup - **vim.version**: Use lazy.nvim semver module - **vim.version**: Use lazy.nvim semver module - **win_close**: Remove "force", don't pass on "free_buf" (#21921) - **win_line**: Rename attr to vi_attr (#21487) - **win_line**: Move some variables into a struct (#22490) - **window**: Remove aucmd_win check from one_window() (#21972) - **window.c**: Reduce scope of locals (#20301) - **windows**: Move os_icon_xx functions TESTING - Introduce skip() #21010 - Remove skip for 32-bit MSVC (#21030) - Don't skip parser_spec on windows (#20294) - Add a Lua test for swap file created before boot - Fix failing tui_spec.lua tests (#21117) - Use isCI to simplify CI detection (#21134) - Simplify platform detection (#21020) - Adding/removing winbar should not cause win_pos events (#21226) - Use luv.os_uname for fast platform detection (#21157) - Add more tests for float window bufpos (#21318) - Convert another test in test_matchadd_conceal.vim to Lua (#21353) - Remove unused variable (#21552) - Add test cases for command line issues - Add more tests for Unicode - Avoid consecutive mouse input at different positions (#21781) - Align Test_shell_options, Test_shellslash with Nvim default - Avoid noise in NVIM_LOG_FILE - Exepath() returns correct path with cmd.exe, powershell #21928 - Remove unused field ext_float (#22243) - Make expect_unchanged() less confusing (#22255) - Make {MATCH:} behave less unexpectedly in screen:expect() - Don't search entire repo for files - Move oldtests to test directory (#22536) - Use a wider screen in the rightleft winhl test (#22641) - Unskip working Windows tests (#22537) - Re-bundle cat on windows (#21255) - Windows not detected in msys shells #22671 - Use exec_capture() in more places (#22787) - Fix flaky watchfiles tests (#22637) - Replace lfs with luv and vim.fs - Improve editor/fold_spec.lua and editor/put_spec.lua (#22916) - **Windows**: Normalize paths for test summary - **api**: Migrate screenchar() test in in window API to screen test - **editorconfig**: Add editorconfig tests - **exit_spec**: Make sure that autocommands are triggered (#22188) - **fileio_spec**: Avoid expect_exit() without calling clear() (#21810) - **float_spec**: Add missing sum_scroll_delta #22648 - **help**: Drop treesitter parse error to 0 - **highlight_spec**: Fix warning in Visual highlight test (#22719) - **legacy/prompt_buffer_spec**: Align script with oldtest more (#22354) - **lsp**: Call clear() before willSave tests (#21336) - **lsp**: Add a screen:expect() between insert() and feed_command() (#21577) - **lua/diagnostic_spec**: Remove unnecessary after_each() - **lua/fs_spec**: Fix vim.fs.dir() test (#21503) - **lua/ui_spec**: Fix Ctrl-C test flakiness (#21039) - **old**: Test_lambda.vim garbagecollect() -> test_garbagecollect_now() - **old**: Remove stray test42 files (#20966) - **old**: Make Test_help_tagjump() test order match upstream - **old**: Add missing lines from Vim patch 8.2.0522 (#21048) - **old**: Make ":h local-additions" work properly in test_help.vim - **old**: Skip Vim9 script with less divergence - **old**: Change $TMPDIR from Xtest-tmpdir to X-test-tmpdir (#21346) - **old**: Make test_signs.vim closer to upstream (#21479) - **old**: Run some part of 'cpoptions' tests - **old**: Make getting an unused PID work (#22529) - **old**: Move memfile_test.c to test/old/ (#22567) - **old**: Unskip working tests on Windows (#22650) - **shada**: Fix shada syntax definitions test - **statuscolumn**: Add more tests for wrapped lines (#21718) - **statuscolumn**: %l should follow default wrap behavior (#21766) - **statuscolumn_spec**: Remove unnecessary feed('lh') - **statusline**: UI elements are not redrawn on K_EVENT unnecessarily - **syn_attr_spec**: Add more information (#21912) - **termxx_spec**: Fix TermClose bdelete test flakiness (#22463) - **treesitter/parser_spec**: Correct time unit (#22471) - **tui_spec**: Don't use nested terminal for resize at startup (#21583) - **tui_spec**: Avoid race between nvim_paste and nvim_input (#21639) - **tui_spec**: Improve cursor_address test (#21700) - **tui_spec**: Doesn't use Unicode in cursor_address test (#21703) - **tui_spec**: Make rapid resize test test what it wants to test (#21933) - **tui_spec**: Don't expect exact screen in rapid resize test (#21935) - **tui_spec**: Remove unnecessary arguments for remote UI - **tui_spec**: Use RPC request to setup autocommands - **ui**: Wait for another success with failure after success - **undo_spec**: Add more tests for writing in Insert mode - **unit**: Use file:close() properly (#21505) - **vim.fs.normalize**: Enable test on Windows
2023-04-07 04:26:29 -07:00
<release date="2023-04-07" version="0.9.0"/>
2023-02-02 06:37:44 -07:00
<release date="2023-02-02" version="0.8.3"/>
<release date="2022-12-29" version="0.8.2"/>
<release date="2022-11-14" version="0.8.1"/>
NVIM v0.8.0 BREAKING CHANGES - Remove 'insertmode' 'remap' and 'terse' options - highlight: Rename attributes to match Vim (#19159) - highlight: Error on invalid names and allow '.' and '@' - terminal: Drop winpty, require Windows 10 #18253 - treesitter: Use @foo.bar style highlight groups - treesitter: Do not merge queries by default (#20105) FEATURES - runtime: Enable filetype.lua by default (#19216) - Add `undo!` - Add "prerelease" to version dict - Click support for 'statusline', 'winbar' #18650 - Add preview functionality to user commands - allow cmdheight=0 (EXPERIMENTAL) #16251 - Stdpath('run'), /tmp/nvim.user/ #18993 - Add 'mousescroll' option (#12355) - Allow :wincmd to accept a count (#19815) - Multibuffer preview support for inccommand - Man: Port to Lua (#19912) - api: Ui options relevant for remote TUI - api: Add `nvim_parse_cmd` And `nvim_cmd` - api: Support handling stdin stream in remote ui - api: Add `group_name` to `nvim_get_autocmds` - api: Enable nvim_exec_autocmds to pass arbitrary data (#18613) - api: Support pattern array for exec_autocmds - api: Add `unsilent` to command APIs - api: Add replace_keycodes to nvim_set_keymap (#19598) - api: Add support for :horizontal modifier - api: Add "move" to nvim_input_mouse - api/ui: "ui_watched" option for ui-side extmarks - build: Add_glob_target runs only on changed files #19070 - checkhealth: Check for slow shell #17829 - defaults: Session data in $XDG_STATE_HOME #15583 - defaults: Search selection by * and # in visual mode (#18538) - defaults: Nnoremap & :&&<CR> #19365 - defaults: enable mouse by default (set mouse=nvi) #19290 - diagnostic: Pass diagnostics as data to DiagnosticChanged autocmd (#20173) - docs: Gen_help_html.lua - edit: Insert an unsimplified key using CTRL-SHIFT-V - treesitter: Full support for spelling - filetype: Convert more patterns to filetype.lua - filetype: Remove side effects from vim.filetype.match (#18894) - filetype: Expand environment variables in filetype patterns (#20145) - fs: Add vim.fs functions: parents() dirname() basename() dir() find() normalize() - highlight: Implement CurSearch highlight - highlight: Support scoped @spam.eggs.baked_beans groups - input: Delay all simplifications - l10n: Turkish translations #19441 - l10n: Improve zh_CN translations (#19483) - lsp: Remove capabilities sanitization (#17814) - lsp: Show feedback on empty hover response (#18308) - lsp: Options to filter and auto-apply code actions (#18221) - lsp: Add vim.lsp.buf.format (#18193) - lsp: Add logging level "OFF" (#18379) - lsp: Add LspAttach and LspDetach autocommands - lsp: Add filter to vim.lsp.get_active_clients() - lsp: Option to reuse_win for jump actions (#18577) - lsp: Add a start function (#18631) - lsp: Send didChangeConfiguration after init (#18847) - lsp: Defaults: tagfunc, omnifunc, formatexpr (#19003, #19677) - lsp: Allow passing custom list handler to LSP functions that return lists (#19213) - lsp: Provide feedback if server can't compute rename result (#19546) - lsp: Add range option to code_action; deprecate range_code_action (#19551) - lsp: Disable exit_timeout by default (#19672) - lsp: Add tcp support - lua: Vim.deprecate() #18320 - lua: Vim.cmd() with kwargs acts like nvim_cmd() #18523 - lua: Allow some vim script functions to run in fast callbacks - lua: Measure require in --startuptime - lua: Allow vim.cmd to be indexed (#19238) - lua: Print source locations of lua callbacks (#19597) - lua: Add vim.iconv (#18286) - lua: Vim.ui_attach to get ui events from lua (EXPERIMENTAL) - man.vim: List command flags in "gO" outline #17558 - mappings: Do not replace existing mapping for simplified form - mappings: Allow special keys and modifiers in <Cmd> mapping - mapset: Support restoring "replace_keycodes" and "desc" - mapset: Support restoring Lua callback (#20024) - marks: Restore viewport on jump #15831 - nvim_create_user_command: Pass structured modifiers to commands - pum: Pretend 'mousemoveevent' is set when showing right-click menu - server: Set $NVIM, unset $NVIM_LISTEN_ADDRESS #11009 - server: Instance "name", store pipes in stdpath(state) - term: Add support for libvterm >= 0.2 - terminal: Implement <c-\><c-o> for terminal mode - terminal: Recognize underdouble and undercurl - terminfo: Bump built-in terminfo entries (#18570) - treesitter: Allow customizing language symbol name - treesitter: Add ability to retreive a tree/node given a range - treesitter: Upstream node methods from nvim-treesitter - treesitter: Include language in invalid query error (#14053) - treesitter: Bundle Lua parser and queries - treesitter: Add viml parser and queries - treesitter: Add injections - treesitter: Add vim.treesitter.start(), enable for Lua - treesitter: Bundle :help parser and queries - tui: Query terminal for CSI u support (#18181) - tui: Recognize keypad keys when using kitty keyboard protocol - tui: Try terminfo for [re]set_cursor_color OSC #19255 - tui: Allow grid and host to disagree on ambiguous-width chars (#19686) - tui: Recognize sidescroll events (#19992) - tui: Support 'mousemoveevent' - ui: Add `'winbar'` - ui: Clear message history explicitly with msg_history_clear event - ui: Make right-click menu work properly with ext_multigrid - ui: Allow to set the highlight namespace per window - ui: Use msg_grid based implementation for cmdheight=0 - ui-ext: Make 'mousemoveevent' a ui_option - eval: Make Lua Funcref work as method and in substitute() (#20217) - eval: Input() support any type for "cancelreturn" in a dict (#19357) BUG FIXES - Show autocmd output when F is in shortmess (#18251) - Has() should preserve v:shell_error #18280 - Suppress "is a directory" messages with shortmess 'F' (#18296) - Display global statusline correctly with ext_messages - Correct nlua_wait error message #18867 - Right-click in clickable statusline #19252 - Remote UI may get invalid 'pumblend' value #19379 - Assertion failure when requiring missing module in autocmd - api: Nvim_eval_statusline should validate input #18347 - api: Check error after getting win/buf handle (#19052) - api: Check for inclusive buffer line index out of bounds correctly (#19056) - api: Change default value of 'pattern' in nvim_exec_autocmds (#19115) - api: Do not switch win/buf if getting option in current win/buf (#19383) - api: Make nvim_set_hl(ns=0, ...) redraw screen properly - api: Nvim_set_hl bail out on invalid group name (#20021) - api: Notify dict watchers on nvim_set_var and vim.g setter - api/command: Fargs behavior when no arguments are passed (#19862) - autocmds: Separate command from desc (#18617) - buffer: Disable buffer-updates before removing from window #18933 - build: Missing definitions for sizeof macros #16393 - build: Only pass -municode if MINGW #19049 - build: Strip trailing newline from variable (#19084) - build: Don't disable byte precompilation on debug builds - build: Fails if git is missing #19366 - charclass: Make behavior with empty str match latest Vim (#19749) - checkhealth: Skip vim.health #18816 - ci: Remove 2000ms blocking wait in many plugin/lsp_spec.lua tests - cmd: Make :-tabmove work with modifiers (#18447) - cmdheight=0: Various issues part3 #19816 - cmdline: Fix passing -1 as char - cmdline: Trigger CmdlineEnter and ModeChanged earlier (#19474) - cmdline: Do not trigger completion at wrong time (#19920) - cmdline: Don't send invalid cursor with incsearch and cmdheight=0 - column: Move sign sentinel after inserting/deleting lines (#20400) - completion: Remove wrong FUNC_ATTR_NONNULL_ALL (#19627) - diagnostic: Use nvim_exec_autocmds to trigger DiagnosticChanged (#18188) - diagnostic: Check for negative column value (#18868) - diagnostic: Remove buf from cache on `BufWipeout` (#20099) - diagnostic: Populate data key in DiagnosticChanged autocmd in reset (#20207) - docs: Correct obsolete note about 'writedelay' in dev docs - docs: Remove internal function from docs - edit.c: Indentkeys double indent after "!" #12894 - eval: Check for v:lua when calling callback (#19855) - eval/f_getmatches: Return empty list for invalid win argument (#18893) - events: Make CursorHold behave as documented - ex_cmds: Correct flags for :const (#19387) - exceptions: Restore `did_throw` (#20000) - exmode: Do not throttle messages when pressing enter to print line - extmarks: Make virt_lines always start at 0 virtcol - filetype: Fix and improve filetype patterns - fillchars: Change fallback after setcellwidths() - float: Make `screen*()` functions respect floating windows - float: Fix glitch when making float window with border a split - float: Fix mouse drag position if float window turned to a split - folds: Fix fold regression with :move (#18685) - folds: Fix fold remains when :delete makes buffer empty (#19673) - ftdetect: Source plugins in autogroup (#18237) - gen_vimdoc.py: Handle missing luajit - getchar: Flush screen before doing a blocking wait - handlers: More specific error messages (#16772) - health: Correct shada file path #18603 - health: Handle non-existent log file #18610 - highlight: Use ctermbg/fg instead of bg/fg when use_rgb=false #18982 - highlight: Add missing 'nocombine' to nvim_get_hl apis (#19586) - highlight: Set the window namespace when redrawing statusline - hl: Set Normal hl group sg_attr value #18820 - hl: Return cterm fg/bg even if they match Normal #18981 - inccommand: Do not try to preview an ambiguous command (#18827) - inccommand: Avoid crash if callback changes inccommand option (#18830) - inccommand: Clear cmdpreview state if preview is not shown (#18923) - inccommand: Skip split window if not enough room #18937 - inccommand: Never preview if parsing command failed (#18944) - inccommand: Parse the command to check if it is previewable - inccommand: Deal with unsynced undo (#20041) - input: Allow Ctrl-C to interrupt a recursive mapping even if mapped (#18885) - input: Fix macro recording with ALT and special key (#18917) - input: Use correct grid when restoring cursor for <expr> mapping (#19047) - input: Do no reinterpret mouse keys with ALT modifiers - input: Use click number of last click for mouse drag (#20300) - inspect: Escape identifiers that are lua keywords (#19898) - keywordprg: Default to :help if set to empty string (#19983) - l10n: Improve zh_CN and zh_TW translations (#19969) - log: Back even again - logging: Skip recursion, fix crash #18764 - logging: Make logmsg() thread-safe again - logging: Try harder to resolve Nvim "name" #19016 - lsp: Unify progress message handling (#18040) - lsp: Fix unnecessary buffers being added on empty diagnostics (#18275) - lsp: Fix infinite loop in resolved_capabilities deprecation message (#18333) - lsp: Add missing bufnr argument (#18382) - lsp: Fix rename capability checks and multi client support (#18441) - lsp: Detach spawned LSP server processes (#18477) - lsp: Perform client side filtering of code actions (#18392) - lsp: Only send diagnostics from current buffer in code_action() (#18639) - lsp: Respect global syntax setting in open float preview (#15225) - lsp: Include cancellable in progress message table (#18809) - lsp: Adjust offset encoding in lsp.buf.rename() (#18829) - lsp: Set buflisted before switching to buffer (#18854) - lsp: Fix multi client handling in code action (#18869) - lsp: Small bugs in snippet-parser #18998 - lsp: Pcall nvim_del_augroup_by_name (#19302) - lsp: Abort pending changes after flush when debouncing (#19314) - lsp: Don't attach a client in lsp.start() if there is none (#19328) - lsp: Account for initializing servers in vim.lsp.start (#19329) - lsp: Move augroup define to if statement (#19406) - lsp: Set workspace.configuration capability (#19548) - lsp: Send didOpen if name changes on write (#19583) - lsp: Prevent unexpected position jumps (#19370) - lsp: Avoid ^M character in hover window on Windows (#19640) - lsp: Set end_col in formatexpr (#19676) - lsp: Handle multiple clients with incremental sync (#19658) - lsp: Fix some type annotations in lsp.rpc (#19714) - lsp: Avoid pipe leaks if lsp cmd isn't executable (#19717) - lsp: Handle nil client in onexit callback (#19722) - lsp: Fix nil value error in get_group (#19735) - lsp: Clean the diagnostic cache when buffer delete (#19449) - lsp: When buffer detach remove buffer from client attached buffers (#20081) - lsp: Schedule removal of client object (#20148) - lsp: Support `false` result in handlers (#20252) - lsp: Out of bounds error in lsp.util.apply_text_edits (#20137) - lsp: Use correct function name in deprecated message (#20308) - lsp: Create missing directory before creating file (#19835) - lua: Don't mutate opts parameter of vim.keymap.del (#18227) - lua: Stop pending highlight.on_yank timer, if any (#18824) - lua: Highlight.on_yank can close timer in twice #18976 - lua: Clear got_int when calling vim.on_key() callback (#18979) - lua: Don't leak memory on error - lua: Double entries in :lua completion #19410 - lua: Make it possible to cancel vim.wait() with Ctrl-C (#19217) - lua: Make ui_attach()/ui_detach() take effect immediately (#20037) - lua: Make vim.str_utfindex and vim.str_byteindex handle NUL bytes - lua: Free vim.ui_attach callback before lua close (#20205) - lua: Fix architecture-dependent behavior in usercmd "reg" (#20384) - mac: Use same $LANG fallback mechanism as Vim - mac: Add CoreServices to flake.nix #18358 - man.vim: Q in "$MANPAGER mode" does not quit #18443 - maparg: Remove double allocation (#20033) - mappings: Fix double-free when unmapping simplifiable Lua mapping - mapset: Remove existing abbreviation of same lhs (#20320) - mark: Set mark fnum from buffer (#19195) - mark: Mark without a view restores at topline #19224 - mark: Fix unexpected cursor movements (#19253) - mark: Give correct error message when mark is in another buffer (#19454) - menu: Make :menu still print header when there are no menus - messages: Add color when showing nvim_echo in :messages history - messages: Do not crash on cmdheight=0 and g< redisplay - messages: Validate msg_grid before silent! message with cmdheight=0 - mksession: Don't store floats in session #18635 - mouse: Click on global statusline with splits (#19390) - mouse: Fix using uninitialized memory with K_MOUSEMOVE (#19480) - mpack: Make sure a `bool` always is a `bool` - normal: Fix segfault with bracket command jumping to a mark - options: Properly free string options (#19510) - options: Mark `winhighlight` as list style (#19477) - packaging: Remove excess forward slash in Wix Patch (#18121) - paste: Ignore mappings in Cmdline mode (#18114) - path: Path_is_url returns false for "foo:/" #19797 - powershell: Filter ":!" commands with args #19268 - pum: Make right drag in anchor grid to select work in multigrid UI (#19382) - query: Fix unnatural order for inherits in treesitter queries (#20298) - redraw: Make sure :redraw! redraws command line - redraw: Handle switching to a tabpage with larger p_ch value - redraw: Avoid unnecessary redraws and glitches with floats+messages - redraw: Make redrawdebug=nodelta handle all the cases - rpc: Break nvim_error_event feedback loop between two nvim instances - runtime/genvimvim: Omit s[ubstitute] from vimCommand #18480 - screen: Restart win_update() if a decor provider changes signcols (#18768) - screen: Check for col instead of vcol when drawing fold (#19572) - session: Respect sessionoptions=terminal #19497 - shared: Avoid indexing unindexable values in vim.tbl_get() (#18337) - signs: Priority of extmark signs (#19718) - source: Make changing 'shellslash' change expand() result - source: Fix expand('<sfile>') no longer works for Lua - spell: Make setting 'encoding' clear word list - spell: Correct spell move behavior without "noplainbuffer" (#20386) - startup: Nvim with --clean should not load user rplugins - substitute: Subtract number of backslashes later - tabpage: Check if ROWS_AVAIL changed for resize (#19620) - terminal: Invalid pointer comparison #18453 - terminal: Do not trim whitespace that is actually in the terminal (#16423) - terminal: Scrollback delete lines immediately #18832 - terminal: Coverity USE_AFTER_FREE #18978 - terminal: Crash if TermClose deletes own buffer #19222 - terminal: Avoid reading over the end of cell.chars (#19580) - terminal: Skip aucmd_win when checking terminal size (#19668) - terminal: Adopt altscreen test for libvterm 0.2 changes - terminfo: Disable smglr for vtpcon and conemu (#18855) - termopen: Avoid ambiguity in URI when CWD is root dir (#16988) - tests: Fix some screen.lua warnings - tests: Fix some issues with ui/inccommand_spec.lua causing slowness - tests: Unreliable parser_spec #18911 - tests: Check for EOF on exit of nvim properly - tests: Missing clear() #18927 - tests: Remove misleading $TEST_PATH segment #19050 - tests: Remove irrelevant usage of display-=msgsep - tests: Use pending_c_parser when needed - tests: Indicate in test logs when nvim exit times out - tmpdir: Invalid tempname() if username has slashes #19323 - treesitter: Create new parser if language is not the same as cached parser (#18149) - treesitter: Bump match limit up - treesitter: Offset directive associates range with capture (#18276) - treesitter: Correct region for string parser (#18794) - treesitter: New iter if folded - treesitter: Don't error when node argument of predicate is nil (#19355) - treesitter: Free memory on removing parser (#19933) - treesitter: More efficient node:root() - treesitter: Make it get_captures_at_position - treesitter: Do not link @error by default - treesitter: Don't support legacy syntax in start() - treesitter: Use the right loading order for base queries (#20117) - treesitter: Prevent endless loop on self-inheritence - treesitter: Return full metadata for get_captures_at_position (#20203) - ts: Do not clobber spelloptions (#20095) - tui: Update modifyOtherKeys reporting (#18158) - tui: Disable extended keys before exiting alternate screen (#18318) - tui: Piping nodejs to nvim breaks input handling #18932 - tui: Resize at startup #17795 - tui: Add fixups for hterm family #19078 - tui: Handle padding requirements for visual bell (#20238) - ui: Require window-local value to show winbar on floating windows (#18773) - ui: Do not call showmode() when setting window height (#18969) - ui: Set redraw_cmdline when setting window height (#19630) - ui: Don't allow decor provider with ns_id==0 - ui: Ui compositor does not correctly free event callbacks - ui: Allow redrawing statusline when msgsep is used (#20337) - ui: Redraw end of buffer if last line is modified (#20354) - unittests: Coredump when running unit tests #18663 - usercmd: Also check for whitespace after escaped character (#19942) - version.c: Mark N/A vim patches #18587 - vim.ui.input: Accept nil or empty "opts" #19109 - window: Close floats first when closing buffer in other tab (#20284) - window: Fix equalization with cmdheight=0 (#20369) - windows: Stdpath("state") => "nvim-data" #18546 - windows: Exepath, stdpath return wrong slashes #19111 - winhl: Do not crash when unsetting winhl in just opened window - Make :undo! notify buffer update callbacks (#20344) - eval: Make Vim functions return inner window width and height (#19743) BUILD SYSTEM - Bump Doxyfile to minimum required version 1.9.0 #18118 - Bump msgpack to 4.0.0 - Enable EXITFREE on Debug builds (#17783) - Add formatting targets for c and lua files (#19488) - clang-format: Align with project style #18192 - clint: Remove all python2-isms with pyupgrade - clint: Remove "function size is too large" warning - clint: Remove rules for includes, whitespace, tabs #18611 - cmake: Simplify and speed up the uninstall target - cmake: Simplify def_cmd_target function - cmake: Use glob_wrapper instead of file(GLOB in main CMakeLists - cmake: Fix static `libintl` test on macOS - deps: Bump LuaJIT, Luv and libuv - deps: Support universal builds on macOS - deps: Bump tree-sitter to v0.20.7 (#20067) - deps: Bump tree-sitter parsers - deps: Bump required libvterm to v0.3 (#20222) - deps: Require libtermkey version 0.22 - deps: update neovim-qt, win32tools.zip PERFORMANCE - Only redraw for CurSearch when it is currently in use - highlight: Allocate permanent names in an arena for fun and cache locality - highlight: Use binary search to lookup RGB color names - map: Visit only one hash bucket instead of all, like an actual hash table - memory: Get rid of extraneous heap allocations - memory: implement arena memory allocation with a shared freelist - memory: Use an arena for RPC decoding and some API return values - messages: Don't call ui_flush() per message line in various places - treesitter: Use a reuse list for query cursors - ui: Reduce allocations when encoding and decoding "redraw" events - ui: Avoid ui_flush() work in headless mode REFACTOR - checkhealth: Rename to vim.health, move logic to Lua #18720 - Add pure attribute to pure functions - Replace char_u variables and functions with char - Enable -Wconversion warning for all Nvim source files - Add warnings for deprecated functions (#18662) - Change type of linenr_T from long to int32_t - Use nvim_get/set_option_value for vim.{b,w}o - Remove functions marked for deprecation in 0.8 (#19299) - Rename function prefix mb to the more accurate utf_cp (#19590) - Remove some unused includes - Change remaining sourcing_name/sourcing_lnum to exestack - Change FALSE/TRUE to false/true - api: Use a hashy hash for looking up api method and event names - api: Use a unpacker based on libmpack instead of msgpack-c - api: restructure api/vim.c and api/private/helpers.c code in separate files - api: Remove redundant fields of CmdParseInfo - aucmd: Call define_autocmd() directly for default autocmds - ci: Cleanup release.yml #19132 - cmd: Format do_one_cmd() - cmd: Hoist out some code into functions - cmd: Unify execute_cmd with do_one_cmd - decor: Use decor levels properly - drawline.c: Factor out utf8 multibyte check - eval: Use Hashy McHashFace instead of gperf - eval.c: Resolve all clint issues (#19774) - eval/funcs.c: Resolve all clint errors - events: Remove unnecessary fudging of updating_screen - ex_cd: Add an early return to fix clint warning - ex_docmd.c: Resolve most clint errors (#19775) - filetype: Allow vim.filetype.match to accept buf and filename (#19114) - highlight: Make hlattrs2dict always use pre-allocated dict - log: Simplify log_path_init #18898 - log: Use msg_schedule_semsg #18950 - lsp: Remove redundant client cleanup (#18744) - lsp: Make the use of local aliases more consistent - lsp: Use autocmd api (#19407) - lsp: Factor out read_loop function - lsp: Encapsulate rpc uv handle - lsp: Extract rpc client from rpc.start - lua: Replace hard-coded gsub with vim.pesc() (#18407) - lua: Reformat with stylua 0.14.0 (#19264) - lua: Git-blame-ignore stylua update PR (#19273) - lua: Replace vim.cmd use with API calls (#19283) - map: Simplify free_all_mem handling - map: Statically initialize maphash array - map: Simplify add_map params - normal: Convert function comments to doxygen format - object: Get rid of redundant FIXED_TEMP_ARRAY - ops: Doxygen docstrings #17743 - option: DRY get/set option value #19038 - plines: Use a struct for chartabsize state - provider: Use list comprehension #19027 - regexp_nfa.c: Match where Vim calls fopen() (#18778) - runtime: Convert dist#ft functions to lua (#18247) - runtime: Convert more dist#ft functions to lua (#18430) - runtime: Convert the remaining dist#ft functions to lua (#18623) - runtime: Port remaining patterns from filetype.vim to filetype.lua (#18814) - runtime: Refactor filetype.lua (#18813) - runtime: Port scripts.vim to lua (#18710) - setcellwidths: Use TV_LIST_ITEM_NEXT properly - signs: Handle non-sign attrs separately (#19784) - tests: Introduce testprg() - treesitter: Get_{nodes,captures}_at_{position,cursor} - typval: Change FC_CFUNC abstraction into FC_LUAREF - ui: Simplify stdin handling - uncrustify: Format all c code under /src/nvim/ - vim.opt: Remove del arg - vim.opt: Unify vim.bo/wo building - vim.opt: Optimize append/prepend/remove - Format runtime with stylua
2022-09-30 08:09:47 -07:00
<release date="2022-09-30" version="0.8.0"/>
2023-02-02 06:37:44 -07:00
<release date="2022-06-26" version="0.7.2"/>
<release date="2022-06-26" version="0.7.1"/>
NVIM 0.7 BREAKING CHANGES * Support for Python 2 is dropped. For Python 3, the minimum supported version is 3.6. Legacy `:pythonx` commands are still available, and always uses the python 3 provider. * api: Existing usages of `nvim_buf_set_text` that use negative line numbers will be off-by-one. * highlight: signature of `vim.highlight.range` was changed. * input: distinguish between some input keys which previously were synonyms. This will break some exiting mappings. - `<cr>`, `<tab>` and `<esc>` are no longer considered equivalent to `<c-m>`, `<c-i>` and `<c-[`> respectively. In case the terminal or GUI supports distinguishing these keys, these can now be mapped separately. But even if the terminal only can send one code you might still need to change what variant is used in the config. FEATURES Core APIs: * api: add support for lua function & description in keymap * api: add api and lua autocmds * api: nvim_clear_autocmd * api: pass args table to autocommand callbacks * api: remove Lua autocommand callbacks when they return true * api: implement nvim_{add,del}_user_command * api: implement nvim_buf_get_text * api: add nvim_get_option_value * highlight: ns=0 to set :highlight namespace * highlight: support for blend in nvim_set_hl * api: add strikethrough, nocombine to set_hl * api: relax statusline fillchar width check Lua: * lua: add vim.keymap * lua: add vim.spell * lua: add proper support of luv threads * lua: make :lua =expr print result of expr * lua: handle lazy submodules in `:lua vim.` wildmenu completion * lua: add notify_once() * lua: add support for multiple optional types in vim.validate * lua: show proper verbose output for lua configuration * lua: more conversions between LuaRef and Vim Funcref * lua: support converting nested Funcref back to LuaRef * call __tostring on lua errors if possible before reporting to user * filetype.lua * filetype.lua: add support for files under .git * filetype.lua: add support for patch files * filetype.lua: add support for tmux.conf files * filetype.lua: add support for txt files * filetype.lua: Add typescript extension to filetype detection * filetype.lua: fix .cc file not detected * filetype.lua: fix .env file not detected * filetype: convert patterns for mail buffers * filetype: support scripts.vim with filetype.lua UI and decorations: * decorations: support signs * extmarks: add strict option * api: expose extmark more details * api: expose extmark right_gravity and end_right_gravity * use nvim_buf_set_extmark for vim.highlight * statusline: support multibyte fillchar * add support for global statusline Treesitter: * ui: allow conceal to be defined in decorations and tree-sitter queries * tree-sitter: allow Atom-style capture fallbacks * treesitter: add more default groups to highlight map * treesitter: multiline match predicates * treesitter: set allocator when possible * ts: add support for multiline nodes in get_node_text * ts: expose minimum language version to lua * runtime: add query filetype LSP and diagnostic: * diagnostic: add "code" to the diagnostic structure * diagnostic: allow retrieving current diagnostic config * lsp,diagnostic: open folds in jump-related functions * lsp: add buf_detach_client * lsp: add handler for workspace/workspaceFolders * lsp: dynamically generate list title in response_to_list * lsp: enable default debounce of 150 ms * lsp: skip or reduce debounce after idle * lsp: use `vim.ui.select` for selecting lsp client Initial work to support remote TUI (and ui client library): * ui_client: connect to remote ui * ui_client: implement event handlers * ui_client: handle resize events * ui_client: implement async paste handling * ui_client: pass user input to remote server * --headless: add on_print callback to stdioopen * add autocommand event when search wraps around * add vim.tbl_get * autocmd: add Recording autocmds * autocmd: populate v:event in RecordingLeave * completion: support selecting item via API from Lua mapping * eval/method: partially port v8.1.1993 * eval/method: partially port v8.1.1996 * eval/method: partially port v8.1.2004 * eval: partially port v8.2.0878 * eval: port emsg from v8.2.3284 * events: add DirChangedPre * events: support SIGWINCH for Signal event * hardcopy: check gui colours for highlights first * highlight: support color names for cterm * ignore nore on <Plug> maps * input: delay some conversions to vgetc() * input: enable <tab>/<c-i>, <cr>/<c-m>, <esc>/<c-[> pairs unconditionally * keymap: add F38-F63 keys * keymap: return nil from an expr keymap * mappings: considering map description when filtering * provider: remove support for python2 and python3.[3-5] * remote: add basic --remote support * runtime: import cleanadd.vim from Vim * runtime: include Lua in C++ ftplugin * runtime: new checkhealth filetype * term: use vterm_output_set_callback() * test: use nvim_exec in helpers.source() * trigger ModeChanged for terminal modes * tui: add error logging * tui: add support for `CSI 4 : [2,4,5] m` * tui: enable CSI u keys * vim-patch.sh: support additional args for -s Performance Improvements * lsp: request only changed portions of the buffer in changetracking * only redraw concealed line if cursor has moved horizontally * pre-compile embedded Lua source into bytecode * screen: reduce cursorline redrawing when jumping around * treesitter: cache query parsing * api: elide luaref copy when setting 'callback' in nvim_set_keymap BUG FIXES * --headless: do not block on press-enter prompts when no UI * <Nop> not shown in :map commands * add forkpty for SunOS variants * add STRNLEN compatability macro * anonymous sid not working * api, lua: return NIL on failure to find converted function * api/nvim_win_call: share common win_execute logic * api: allow empty list for cterm in nvim_set_hl * api: allow nvim_buf_set_extmark to accept end_row key * api: convert blob to NUL-terminated API string * api: correctly handle negative line numbers for nvim_buf_set_text * api: correctly pass f-args for nvim_create_user_command * api: delete all autocmds with the same ID * api: force redefinition of user commands by default * api: highlight attribute for underline * api: improve autocmd error handling * api: include event in get_autocmds * api: make nil value in nvim_set_option_value clear local value * api: nvim__set_hl_ns causes extra redraws * api: nvim_win_set_cursor() redraw for cursorline and statusline * api: re-route nvim_get_runtime_file errors * api: use changedir_func() in nvim_set_current_dir() * api: validate command names in nvim_add_user_command * api: validate user_command name * append test for checking zero width node range * aucmd_win: always make aucmd_win the last window * aucmd_win: ensure aucmd_win stays floating * autocmd: clean up autocmds only when needed * autocmd: restore autocmd showing behavior * autoload variables not loaded with vim.g & nvim_get_var * bounds check for underdot * build: check for empty value of LUAC_PRG * build: check that LuaJIT has required modules for compilation * build: install luajit modules on windows * channel: fix channel consistency * check for interrupt in nvim_echo, write_msg and nlua_print * checkhealth: make provider checkhealth output more consistent * ci/backport: check for event_name == "pull_request_target" * ci: provide necessary permissions for calling workflow * clang/'Dead store': do not assign endcol * close floating windows when calling win_close() * completion: prevent K_LUA from closing pum * completion: update submode message when selecting from API * correct vertical dragging room calculation with global statusline * coverity/175977: big parameter passed by value * coverity/188749: nullify pointer to fix use-after-free * coverity/340720: error if nvim_eval_statusline given invalid winid * coverity: dead code and operands don't affect result * decorations: do not put empty virt_text * define NAME_MAX from _XOPEN_NAME_MAX * diagnostic: allow setting arbitrary config values * diagnostic: assert that diagnostics have line number and column * diagnostic: clamp diagnostics on negative line numbers * diagnostic: escape special chars in file names * diagnostic: improve validation for list arguments * diagnostic: make `open_float` respect global diagnostic options * diagnostic: only set default handler config if unset * diagnostic: resolve nil opts tables * diagnostic: respect "if_many" source option for virtual text * diagnostic: set effective buffer number for DiagnosticChanged autocmd * diagnostic: set effective buffer number in autocmd (again) * diagnostic: use botright copen for qflist * diff: make algorithm work for vim.diff * do not cast offset to char_u * do not pass aucmd to the callback * do not save K_EVENT as lastc in Insert mode * docs: add bufnr and user_data to diagnostic-structure * docs: spelling in new underlines docs * don't include pty.h on SunOS * don't use cfsetspeed, use i and o variants * enable filetype detection and syntax highlighting with --clean * eval/method: add missing method support for existing built-ins * eval: v:lua support for `-` in module names * event-loop: call vpeekc() directly first to check for character * event-loop: check if executed register has ended * event-loop: duplicate display updating logic in vgetorpeek() * events: make v:event readonly in more events * ex_normal: spam \n in Ex mode only if in Cmdline mode * extmarks: fix signs * extmarks: splice extmarks on accepting spell * filetype.lua: always return a string in getline helper function * filetype: expand tildes in filetype patterns * filetype: fix foam pattern detection * filetype: match negative priority patterns after extensions * filetype: match on <afile> rather than <abuf> * filetype: normalize slashes in file paths * filetype: set default ft_ignore_pat in filetype.lua * float: do not switch window before deleting last listed buffer * float: don't always switch window when deleting last listed buffer * float: handle buffer deletion with floating windows * float: make laststatus=1 behave consistently with floating windows * healthcheck: handle empty reports * health: do not run external processes in a shell * highlight: accept NONE as a color name * highlight: allow globals to be cleared * highlight: always update window highlight if highlight changed * inccommand: do not change reg_prev_sub when previewing * input: do not translate scroll keys into multiclicks * input: fix clearing of reg_executing * input: never escape CSI bytes * input: put modifiers back into typeahead buffer when needed * input: remove reinterpreted ALT/META chords from recorded macro * keymap: don't coerce false to '' * keywordprg: retain terminal buffer after K * line continuation: set growsize to correct value * lsp and diagnostic highlight priority * lsp: always split text edits on \r, \r\n, and \n * lsp: always use target bufnr in location handler * lsp: avoid attaching to unloaded buffers * lsp: avoid nil workspace/symbol query * lsp: call config on_exit handler before context is cleared * lsp: correct prefix when filterText is present * lsp: correctly align start and end range to codepoints during incremental sync * lsp: create lsp requests with position offsets considering client encoding * lsp: ensure pending changes are flushed on skipped debounce * lsp: explicitly pass bufnr in didSave handler * lsp: fetch offset_encoding from client in references * lsp: fix `nil`-index behavior for UTF-8 in `_str_*index_enc` methods * lsp: fix applying multiple out-of-range TextEdits * lsp: fix lookup of boolean values in workspace/configuration * lsp: forward offset_encoding in rename handler * lsp: forward offset_encoding to apply_text_edits * lsp: handle insertion of previous line * lsp: handle negative activeSignature in signatureHelp * lsp: only send valid params in executeCommand * lsp: pass offset_encoding in formatexpr() * lsp: progress handlers should return vim.NIL on error * lsp: resolve bufnr for get_lines * lsp: resolve nil bufnr * lsp: respect all of 'fixeol', 'eol', and 'binary' applying edits * lsp: set tabSize from 'shiftwidth', not 'softtabstop' * lsp: start incremental sync range at previous newline character * lsp: strictly enforce passing offset encoding * lsp: suppress ContentModified errors from UI * lsp: use "text" filetype for plaintext * lsp: use botright copen for all handlers * lua: don't use nlua_error when exiting early * lua: print multiple return values with =expr * lua: restore priority of the preloader * lua: stricter type check when calling API function * make mode() return correct value in ex mode * man.vim: fix search function on some systems * man.vim: support calling :Man without a section again * msgpack#strptime: use calendar.timegm to get seconds since epoch * ops: str_to_reg passing NULL to memcpy * options: disallow empty 'fdc' and 'scl' * paste: avoid edges cases caused by empty chunk * paste: deal with eol and eof in Visual mode * paste: deal with trailing new line in chunk * paste: don't move cursor past the end of pasted text in Normal mode * paste: escape control characters in Cmdline mode * paste: use getcmdtype() to determine whether in cmdline mode * prompt: add missing changes from v8.1.0036 * pty_process_win/wait_eof_timer_cb: also check for proc->out.did_eof * pum_redraw: use grid_puts_len() to truncate the text * PVS/V1019: compound assignment expression is used inside condition * PVS/V560: ignore false "conditional expression is always false" * PVS/V583: the '?:' operator always returns one and the same value * query.lua: check empty table for lines * quickfix: avoid O(N^2) when filling from string typval * remote: make compile again * remote: report connection error, missing return values * remote: report on missing wait commands, typecheck lua results * remote: respect silent in error reporting * remote: use STATIC_CSTR_AS_STRING * resolve nil arguments to API functions * respect os_proc_children rv of pid not found * runtime: add missing release metadata * runtime: add syntax file for query * runtime: check markdownError before syn-clear * screen: do not do syntax highlighting at filler or folded lines * screen: do not draw filler lines post eof if already at last row * screen: do not update syntax_last_parsed when drawing folded line * screen: don't put empty sign text in line number column * screenpos, float: add top and left border adjustment * screen: truncate double-width character correctly * screen: truncate when overwriting right half of a double-width char * set nested before executing callback * set RedrawingDisabled before entering aucmd_win * signcol: always trigger a redraw * signcol: handle edge case with maximum value * signcol: update cursor when signcol changes * skip libutil on SunOS * substitute: properly check for empty command line * syntax.c: correct hunk from Vim patch 8.0.0647 * syntax: remove trailing spaces in vim.vim * tabpage: correct check for failure to close window * termdebug: handle exiting during startup properly * terminal: correctly forward mouse events * terminal: fix resize crash with pending scrollback * terminal: ignore left-release mouse action * terminal: return early if there are no invalid rows * terminal: use coladvance() to calculate buffer cursor position * test: only use buffer completion in popupmenu timer test * tests: update legacy tab switch test to be sane * translation: po file for Russian * translation: po file for Ukrainian * ts: escape lang when loading parsers * tui: avoid using uninitialized memory in kitty * tui: correct CSI sequence * tui: end streamed paste correctly when key buffer is empty * tui: remove `ESC NUL` forced escape * ui: close floating window on BufLeave event * ui: inccomand performance degradation * ui: make window resize commands manage cmdheight * update last cursor on first CursorMoved * uri: change scheme pattern to not include the comma character * use normal! <C-L> in default <C-L> mapping * vim-patch.sh: fix N/A files patterns * win_close: count the window the be closed instead of curwin * win_split_ins: do not fail when oldwin is not valid
2022-04-15 04:38:44 -07:00
<release date="2022-04-15" version="0.7.0"/>
<release date="2021-12-31" version="0.6.1"/>
NVIM 0.6.0 BREAKING CHANGES * 32-bit windows builds are no longer provided. * **build deps**: use libuv 1.42.0 upstream for WIN32 (#15889) (f6c0a37), closes #15889 * removes Windows 7 support * removes support for mouse and alternate buffers in TUI for Windows 8 and 8.1 * **lsp/diagnostic:** highlight groups and signs for LSP diagnostics renamed (e.g. `LspDiagnosticsDefaultWarning` to `DiagnosticWarn`) (a5bbb93) * **diagnostic:** make DiagnosticChanged a first class autocmd (#16098) (150a592), closes #16098 * `au User LspDiagnosticsChanged` autocommands are not supported. Use the new first-class DiagnosticChanged event instead. * **lua**: `register_keystroke_callback` => `on_key` (#15460) (69fe427) * **note**: this breaking change was included in 0.5.1 FEATURES * **:source, nvim_exec:** defer script item creation until s:var access (da9b0ab) * **:source, nvim_exec:** support script-local variables (d4ed51e), closes #13143 #11507 * **lua:** add trimempty optional parameter to vim.split (5fa26e2) * **lua:** add vim.str_utf_{start,end} (#16129) (2230b57) * **lua:** add vim.str_utf_pos function (d752cbc) * **lsp:** aggregate code actions from all clients (#15121) (c36df20) * **api:** add lua C bindings for xdiff (#14536) (3d3c0c6) * **api:** evaluate statusline string #16020 (9086938) * **api:** named marks set, get, delete #15346 (49fdc62) * **api:** nvim_get_chan_info: include "argv" for jobs #15537 (0603eba), closes #15440 * **api:** win_viewport also sends line_count #15613 (086631c) * **api:** support :terminal input callback in lua (9e41e82) * **ci:** add backport PR action (#14766) (6cc456d) * **decorations:** allow more than one stacked highlight in a virt_text (1495d36) * **decorations:** support virtual lines (392c658) (8d7816c) * **diagnostic:** move vim.lsp.diagnostic to vim.diagostic and support other sources (a5bbb93) * **diagnostic:** add 'prefix' option to open_float (#16321) (3c74ba4) * **diagnostic:** add option to include diagnostic source (d43151e) * **diagnostic:** allow 'prefix' option to return highlight (cc48837) * **diagnostic:** allow customized diagnostic messages (#15742) (d999c96) * **diagnostic:** match(), tolist(), fromlist() #15704 (e61ea77) * **diagnostic:** update jumplist on goto_next/prev (#15942) (b55944e) * **diagnostic:** use `scope = 'line'` by default for `open_float()` (#16456) (217f9f8), closes #16453 * **diagnostic:** support severity_sort (32c0631) * **checkhealth:** provide function for command line completion (8b43b07) * **f_chansend:** support Blob data argument (7e9ea08) * **job:** add parameter to close stdin (eb7f24b) * **keywordprg:** use :terminal for external commands #15398 (a90513c), closes #2995 #2761 * **lsp:** add 'focus' option to open_floating_preview (#16465) (fff8827) * **lsp:** add a registry for client side code action commands (6c03601) * **lsp:** add client command support to codelens (#15820) (19a77cd) * **lsp:** add codeAction/resolve support (#15818) (ec4731d) * **lsp:** add exit_timeout flag (#16070) (80456cf) * **lsp:** add formatexpr (#16186) (52fa1d2) * **lsp:** add lsp healthcheck (e268026) * **lsp:** add per-client commands (#16101) (519d8de) * **lsp:** add tagfunc (#16103) (f940e7a) * **lsp:** add warning message for large log size (e6777a7) * **lsp:** allow configuring zindex for floating windows (#15086) (c487a73) * **lsp:** allow diagnostics to be disabled for a buffer (#15134) (1aeb945) * **lsp:** allow root_dir to be nil (#15430) (ff0833c) * **lsp:** highlight active parameter in signature help (#15018) (af26371) * **lsp:** improve vim.lsp.util.apply_text_edits (#15561) (41cfba6) * **lsp:** include original request params in handler ctx (187579f) * **lsp:** jump to diagnostics by position (#14795) (ea39ff5) * **lsp:** Make line diagnostics display prettier (e43dbfd) * **lsp:** make list handlers configurable (#15199) (3e00d4f) * **lsp:** support textDocument/prepareRename (#15514) (c1f573f) * **lsp:** use uv_spawn to check if server executable (#16430) (1a60580) * **lsp:** use vim.ui.select() in codelenses (#16004) (e7ea54a) * **lsp:** utilize textEdit.range for startbyte in omnifunc (#15957) (e9d6f7c) * **lua:** add lua-cjson as vendored dependency (8decc9f) * **lua:** add vim.mpack for msgpack support in lua (eaf661d) * **lua:** allow passing handles to vim.b/w/t (6c5e7bd) * **lua:** convert binary string with NULs to Blob (de9df82) * **lua:** document support of packages with v:lua syntax (9dd371b) * **lua:** enable stack traces in error output (#16228) (03b805a) * **lua:** expose lua-cjson as vim.json (30fed27) * **lua:** make vim.mpack support vim.NIL and vim.empty_dict() (0f59666) * **match:** allow hl group to be defined after :match command (fca52f5) * **msgpack:** convert Blobs to BIN strings (af6f454) * **health:** support lua healthchecks (9249dcd), closes #15632 * **shada:** restore Blob globals properly (ef729fb) * **terminal:** TermClose: set exit code in v:event.status #15406 (50b30de), closes #4713 * **treesitter:** add next, prev sibling method (1400841) * **treesitter:** allow to set highlight priority for queries (242608e) * **ui:** add `opt.kind` to `vim.ui.select` (#15838) (7ae86c1) * **ui:** add vim.ui.input and use in lsp rename (#15959) (16d4af6) * **ui:** add vim.ui.select and use in code actions (#15771) (63fde08) * **vim script:** support calling v:lua as a method (b2994e3) CHANGES * **defaults:** auto-create backup dir (4600193) * **defaults:** inccommand=nosplit #15395 (7215d35) * **defaults:** set undo points in <C-U> and <C-W> (#15400) (2cb8db3) * **defaults:** limit syntax cost on CmdwinEnter #15401 (622a36b), closes #6289 #6399 * **defaults:** map CTRL-L to search highlights, update diffs #15385 (0aa8128) * **defaults:** map Y to y$ #13268 (5a111c1), closes #416 #6289 * **defaults:** remove 'options' from viewoptions #15397 (3954537), closes #6289 * **defaults:** set hidden (f6c72b7) * **defaults:** set nojoinspaces (d417e67) * **defaults:** switchbuf=uselast #15394 (4ba7495) * **runtime:** add packages as `"/pack/*/start/*"` patterns to &rtp (9df7e02) * **startup:** load builtin plugins with --clean #15893 (c7a63f3), closes #15605 * **terminal:** set cursorlineopt=number in terminal mode (#15493) (c61a386) * **window:** skip non-focusable floats for :windo (#15378) (e8631cb) PERFORMANCE IMPROVEMENTS * **api:** avoid spurious allocations when converting small objects (705e8f1) * **highlight:** use a hashtable for highlight group names (bb4b4d7) * **lua:** optimize vim.deep_equal #15236 (4b452d4) * **lua:** don't use regexes inside lua require'mod' (ea2023f), closes #15147 #15497 * **lsp:** improve json deserialization performance (#15854) (912a6e5) * **map:** reduce double pointer indirection to single pointer indirection (9e651a9) * **treesitter:** avoid string lookup of highlight name in hot loop (2460f0a) FIXES * **:source, nvim_exec:** handle Vimscript line continuations #14809 (6188926), closes #14807 * **:source:** copy curbuf lines to memory before sourcing #15111 (afdc9e6) * allow str_utfindex second argument to be an explicit nil (#16448) (512ec46) * **api:** fix crash after set_option_value_for() #15390 (8b0e6cc), closes #14097 #13577 * **api:** fix nvim_buf_set_extmark (2338345) * **autocmd:** fix conditions in block_autocmds, unblock_autocmds #15372 (29712ae), closes #6279 * **buffer_updates:** cleanup test behavior (54b2c68) * **buffer_updates:** handle :delete of the very last line in buffer (8335e26) * **buffer_updates:** handle :sort of already sorted buffer (ef687d3) * **buffer_updates:** make `lockmarks` not affect extmarks and buffer updates. fixes #12861 (7d171b1) * **bufupdates:** send correct updates for visual paste (1423146) * **build:** add an env var to re-enable the colors (5087347) * **build:** call find_package(Threads) before using its variables (f446ab3) * **build:** export symbols on Windows (aa644b7) * **build:** fix build failure in MinGW (0503e17) * **build:** make vendored libmpack and libmpack-lua build properly (2a08aef) * **channel:** throw error if sending to internal channel w/o terminal (3b89fee) * **checkhealth:** duplicate checks if module name has "-" #15935 (a36c6e5) * **checkhealth:** mitigate issues with duplicate healthchecks #15919 (acd5e83), closes #15259 * **ci:** disable broken test on openbsd on all CI due to resource constraints (a3e2636) * **ci:** re-run GHA for ready_for_review events (#15377) (c6ef956) * **decorations:** crash when :bdelete (extmark_free_all) after clear_namespace (cd353aa), closes #15212 * **defaults:** "syntax sync maxlines=1" on CmdwinEnter #15552 (5f8518b), closes #15401 * **defaults:** do not map Y in visual-mode #15387 (54726e8), closes #13268 * **diagnostic:** allow floats to be focusable (#16093) (427bac6) * **diagnostic:** change default severity_sort order (938ed45) * **diagnostic:** clamp line numbers in setqflist and setloclist (5b0d8f8) * **diagnostic:** correctly handle folder level diagnostics (f87779a) * **diagnostic:** deepcopy diagnostics before clamping line numbers (2abc799) * **diagnostic:** do not focus floats in goto functions (#16433) (b5b025f) * **diagnostic:** don't clamp line numbers in setqflist (0341c68) * **diagnostic:** don't return nil when callers expect a table (#15765) (057606e) * **diagnostic:** don't use nil col if missing from qflist (#16357) (5e46f64) * **diagnostic:** error on invalid severity value (#15965) (d5dd0aa) * **diagnostic:** fix navigation with diagnostics placed past end of line (34bb5fa) * **diagnostic:** fix option resolution in open_float (#16229) (fd34784) * **diagnostic:** fix wrong data type in setqflist() (3fd1450) * **diagnostic:** get line count per buffer when clamping (c59f200) * **diagnostic:** handle an unknown or missing client (#16242) (1fdbd29) * **diagnostic:** handle diagnostics placed past the end of line (#16095) (a2994c8) * **diagnostic:** make set() go through cache when calling show() (d93f47d) * **diagnostic:** only update decorations for loaded buffers (#15715) (924e8e4) * **diagnostic:** preserve fields from LSP diagnostics via user_data (#15735) (17b7968) * **diagnostic:** remove useless highlight links (#15683) (c13242c), closes #15585 * disable clipboard when test registers (dd63d93) * **docgen:** add tagfunc.lua (0746f00) * **doc:** various fixes #15604 (4eb1ebb) * **eval:** add the vimscript-1 feature to has() (18b32fc) * **eval:** checking for a non-empty string is too strict (#15987) (1dbbaf8) * **eval:** fix has('wsl') #16153 (16d06fa), closes #12642 #16143 * **eval:** fixup for empty modifier in fnamemodify (#16368) (a7ad509), closes #16367 * **extmark:** fix missing virt_lines when using id param of set_extmark (995dbd2) * **extmarks:** splice extmarks on nv_Undo #15920 (e069361) * **fileio:** replace characters over INT_MAX with U+FFFD (#16354) (a2e5c2f), closes #11877 * **float:** fix potential heap corruption in win_redr_border (de670f3) * **float:** redraw if w_border_adj changed (7ff1bc1) * **heath/provider.vim:** using list as string #16007 (5365f24), closes #15988 * **highlight:** remove syncolor.vim, always include syntax colors (9afa0d2), closes #15176 #12573 #15205 * **inccommand:** ignore trailing commands only for *previewed* command #15638 (1f8c91b), closes #8796 #7494 * include ci/ in exported tarball (d6f03aa), closes #15856 * **input:** never reinterpret unmapped ALT- chrods in Terminal mode (#16222) (5ce35ab) * **input:** resolve isolated (non-ALT/META) mappings #13109 (c4857b6), closes #13042 #13086 #15869 * **jobwait:** always drain process event queues #15402 (3c081d0), closes #15349 * **lsp_spec:** tests depended on previous session (069d1de) * **lsp:** accept file URIs without a hostname (a2c2a08) * **lsp:** add done flag to messages returned in util.get_progress_messages() (#15985) (45fa70a) * **lsp:** add placeholder cancel function (#16189) (4da0351) * **lsp:** add textDocument/prepareRename to capability map (#15961) (fcc11d5), closes #15899 * **lsp:** adjust legacy show diagnostic functions to use correct scope (#16106) (dc6c9fe) * **lsp:** allow diagnostic.clear to accept nil bufnr (#15137) (4ed2d4f) * **lsp:** avoid duplicates in client attached buffers (#16099) (c5525f2) * **lsp:** avoid serializing boolean as key (#15810) (96614f8) * **lsp:** change rpc start notify level to warn (#16467) (04c7b55) * **lsp:** change signature of buf_highlight_references (#16345) (eb3d591) * **lsp:** correctly parse LSP snippets #15579 (516775e), closes #15522 * **lsp:** default to UTF-16 in make_position_params (2e3a474) * **lsp:** do not index nil client in progress (#16262) (8f31b21) * **lsp:** do not invoke handlers for unsupported methods (#15926) (d288daa) * **lsp:** don't update active_clients on exit_timeout (#16192) (98f5782) * **lsp:** enable additional capabilities (#15470) (5d63354) * **lsp:** ensure buffers are re-attached on rename (#16266) (ee3a58d) * **lsp:** Ensure users get feedback on references/symbols errors or empty results (256570a) * **lsp:** expose ContentModified error code to callbacks (#15262) (3f09732) * **lsp:** fix cursor row after textEdits (#16038) (bd2f61c) * **lsp:** gracefully handle nil workspaceFolders (#16284) (0ecc58c) * **lsp:** guard textDocument/codeAction command logic #15769 (433bda4) * **lsp:** improve symbols_to_items performance (#16197) (5ad15c9) * **lsp:** Include client name in handler error messages (#15227) (24f2b9e) * **lsp:** pass bufnr for async formatting (#15084) (c31bc6e) * **lsp:** persist diagnostic config for clients (bcc9ba5) * **lsp:** prevent double <text> for cached plaintext markup (910967e) * **lsp:** restore diagnostics extmarks on buffer changes (#15011) (77b33e4) * **lsp:** rewrite incremental sync (#16252) (2ecf0a4) * **lsp:** send buffer contents joined on fileformat-specific linebreak (#16334) (134a638) * **lsp:** send textDocument/didChange for each buffer (#16431) (3451121) * **lsp:** support duplicate params in signature help (#15032) (9132b76) * **lsp:** update lsp-handler signature in call_hierarchy (#15738) (8164adc) * **lsp:** update workspace/applyEdit handler signature (#15573) (3f526fe) * **lua:** fix vim.deepcopy for metatables & cycled tables (#16435) (eb876a0) * **lua:** preserve argument lists which are not lists (6896d22) * **man.vim:** ensure buftype=nofile after :tag or :stag #15675 (29bc648), closes #15650 * **man.vim:** filetype=man is too eager #15488 (2548a9e), closes #15487 #15487 * **mouse:** fix mouse drag positions on multigrid #12667 (0dcfd0e), closes #15091 * **mouse:** correct dragged position in composed layout (810da1a) * **multigrid:** mouse events crash neovim (28ac6c0) * **nvim_open_win:** crash if autocmds delete buffer/window #15549 (0c06da1), closes #15548 * **options:** using :set fillchars should clear local value (7528bce) * prevent K_EVENT from stopping Select mode CTRL-O #15688 (5f144ef) * **provider:** compare versions as number, not string (python 3.10 support) #15937 (e16adbf), closes #14586 * **screen:** make display_tick monotonic up to 2^64. fixes #16152 (9e88c9c) * **screen:** missing search highlights when redrawing from timer #15380 (db695cc), closes #13074 #14064 * **shared:** do not treat empty tables as list in deep extend (#15094) (526fc60) * **sign:** reset auto sign column with minimum in float win minimal style (c8f57f6) * **startup:** init.lua: set $MYVIMRC to absolute path #15748 (c76cddf) * **termdebug:** replace mapset with nvim_set_keymap (#15699) (4d7dcbe) * **termdebug:** replace term_getline with getbufline #15598 (11289ad) * **terminal:** close without ! if the job is stopped (55defa1), closes #4683 * **terminal:** free terminal if close_buffer() closes a closed terminal (#16264) (14def4d) * **test/dumplog:** tostring(rv) before formatting as string (ddaa0cc) * **tests:** use isolated XDG_DATA_HOME in startup tests (8e663e2) * **treesitter:** do not map hl_group when no mapping is set (f489d98) * **treesitter:** run predicates more often in iter_matches (458f2aa) * **tui:** extend smglr ignores to smglp and smgrp (#16239) (3ba800f) * **tui:** remove obsolete $NVIM detection #15791 (4414584), closes #12937 #11390 * **tutor:** formatting, layout #15098 (c52ec8f), closes #15088 * **ui:** use nowait for q mapping in floating window (#16427) (c132144) * **v:lua:** fix emsg when calling v:lua directly (da9005a) * **vim-patch.sh:** run nvim with -u NONE -n #16179 (97ae0ab) * **vim.opt:** vimL map string values not trimmed (#14982) (4906156) * **window:** win_close from other tabpage #15454 (90b2da1), closes #15313 * **windowing:** positioning of relative floats (9065730)
2021-11-30 10:13:35 -07:00
<release date="2021-11-30" version="0.6.0"/>
<release date="2021-09-26" version="0.5.1"/>
2021-07-02 09:12:11 -07:00
<release date="2021-07-02" version="0.5.0"/>
<release date="2020-08-04" version="0.4.4"/>
2019-11-24 18:53:33 -07:00
<release date="2019-11-06" version="0.4.3"/>
2019-09-15 19:44:11 -07:00
<release date="2019-09-15" version="0.4.2"/>
2019-09-15 17:24:41 -07:00
<release date="2019-09-15" version="0.4.1"/>
2019-09-15 16:19:49 -07:00
<release date="2019-09-15" version="0.4.0"/>
2019-08-25 16:00:52 -07:00
<release date="2019-07-03" version="0.3.8"/>
<release date="2019-04-29" version="0.3.5"/>
<release date="2019-01-13" version="0.3.4"/>
<release date="2019-01-05" version="0.3.3"/>
<release date="2018-12-31" version="0.3.2"/>
<release date="2018-07-19" version="0.3.1"/>
<release date="2018-07-11" version="0.3.0"/>
</releases>
2019-08-25 16:00:52 -07:00
<content_rating type="oars-1.1"/>
<launchable type="desktop-id">nvim.desktop</launchable>
<url type="homepage">https://neovim.io/</url>
<url type="bugtracker">https://github.com/neovim/neovim/issues</url>
<url type="faq">https://neovim.io/doc/user/faq.html</url>
<url type="help">https://neovim.io/doc/</url>
<url type="donation">https://neovim.io/#sponsor</url>
<url type="translate">https://github.com/neovim/neovim/tree/master/src/nvim/po</url>
<provides>
<binary>nvim</binary>
<id>nvim</id>
</provides>
</component>