From 040f1459849ab05b04f6bb1e77b3def16b4c2f2b Mon Sep 17 00:00:00 2001 From: bfredl Date: Fri, 7 Apr 2023 13:26:29 +0200 Subject: [PATCH] NVIM v0.9.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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
{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 `_` (#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 = over -D= (#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:  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
---
 CMakeLists.txt                              |   4 +-
 runtime/doc/news.txt                        | 221 ++++++++++----------
 runtime/nvim.appdata.xml                    |   1 +
 test/functional/fixtures/api_level_11.mpack | Bin 0 -> 31225 bytes
 4 files changed, 113 insertions(+), 113 deletions(-)
 create mode 100644 test/functional/fixtures/api_level_11.mpack

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 262af9ab55..24ef1e9a91 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,12 +107,12 @@ set_default_buildtype()
 set(NVIM_VERSION_MAJOR 0)
 set(NVIM_VERSION_MINOR 9)
 set(NVIM_VERSION_PATCH 0)
-set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
+set(NVIM_VERSION_PRERELEASE "") # for package maintainers
 
 # API level
 set(NVIM_API_LEVEL 11)         # Bump this after any API change.
 set(NVIM_API_LEVEL_COMPAT 0)  # Adjust this after a _breaking_ API change.
-set(NVIM_API_PRERELEASE true)
+set(NVIM_API_PRERELEASE false)
 
 # Default to -O2 on release builds.
 if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt
index 12dc4674af..fea8961dd5 100644
--- a/runtime/doc/news.txt
+++ b/runtime/doc/news.txt
@@ -1,7 +1,7 @@
 *news.txt*    Nvim
 
 
-			    NVIM REFERENCE MANUAL
+                            NVIM REFERENCE MANUAL
 
 
 Notable changes in Nvim 0.9 from 0.8                                     *news*
@@ -48,71 +48,33 @@ The following changes may require adaptations in user config or plugins.
 • 'paste' option is now deprecated and 'pastetoggle' is removed. |paste| works
   automatically in GUI and terminal (TUI) Nvim.  Just Paste It.™
 
-• libiconv and intl are now required build dependencies.
-
-• Unsaved changes are now preserved rather than discarded when |channel-stdio|
-  is closed.
-
 • Changes to |vim.treesitter.get_node_text()|:
   - It now returns `string`, as opposed to `string|string[]|nil`.
   - The `concat` option has been removed as it was not consistently applied.
   - Invalid ranges now cause an error instead of returning `nil`.
 
-• Renamed vim.pretty_print to vim.print. |deprecated|
-
-• |nvim_exec()| is now deprecated in favor of |nvim_exec2()|.
-
 • `help` treesitter parser was renamed to `vimdoc`. The only user-visible
   change is that language-specific highlight groups need to be renamed from
   `@foo.help` to `@foo.vimdoc`.
 
 • The default value of 'commentstring' is now empty instead of "/*%s*/".
 
+• libiconv and intl are now required build dependencies.
+
 ==============================================================================
 NEW FEATURES                                                    *news-features*
 
 The following new APIs or features were added.
 
-• |nvim_eval_statusline()| supports evaluating the |'statuscolumn'| through a
-  new `opts` field: `use_statuscol_lnum`.
-
-• |nvim_buf_get_extmarks()| now accepts a -1 `ns_id` to request extmarks from
-  all namespaces and adds the namespace id to the details array.
-  Other missing properties have been added to the details array and marks can
-  be filtered by type.
-
-• Added a new experimental |lua-loader| that byte-compiles and caches lua files.
-  To enable the new loader, add the following at the top of your |init.lua|: >lua
-    vim.loader.enable()
-
-• Added |lua-version| for parsing and comparing version strings conforming to
-  the semver specification.
-
-• A new environment variable named NVIM_APPNAME enables configuring the
-  directories where Neovim should find its configuration and state files. See
-  `:help $NVIM_APPNAME` .
-
-• |nvim_open_win()| now accepts a relative `mouse` option to open a floating win
-  relative to the mouse. Note that the mouse doesn't update frequently without
-  setting `vim.o.mousemoveevent = true`
-
-• EditorConfig support is now builtin. This is enabled by default and happens
-  automatically. To disable it, users should add >lua
-
-    vim.g.editorconfig = false
+• Treesitter syntax highlighting for `help` files now supports highlighted
+  code examples. To enable, create a `.config/nvim/ftplugin/help.lua` with
+  the contents >lua
+    vim.treesitter.start()
 <
-  (or the Vimscript equivalent) to their |config| file.
-
-• Added support for running Lua scripts from shell using |-l|. >
-      nvim -l foo.lua --arg1 --arg2
-<  Also works with stdin: >
-      echo "print(42)" | nvim -l -
-
-• Added a |vim.lsp.codelens.clear()| function to clear codelenses.
-
-• |vim.inspect_pos()|, |vim.show_pos()| and |:Inspect| allow a user to get or show items
-  at a given buffer position. Currently this includes treesitter captures,
-  semantic tokens, syntax groups and extmarks.
+  Note: Highlighted code examples are only available in the Nvim manual, not
+  in help files taken from Vim. The treesitter `vimdoc` parser is also work in
+  progress and not guaranteed to correctly highlight every help file in the
+  wild.
 
 • Added support for semantic token highlighting to the LSP client. This
   functionality is enabled by default when a client that supports this feature
@@ -122,40 +84,47 @@ The following new APIs or features were added.
 
   See |lsp-semantic-highlight| for more information.
 
+• |vim.inspect_pos()|, |vim.show_pos()| and |:Inspect| allow a user to get or show items
+  at a given buffer position. Currently this includes treesitter captures,
+  LSP semantic tokens, syntax groups and extmarks.
+
 • |vim.treesitter.inspect_tree()| and |:InspectTree| opens a split window
   showing a text representation of the nodes in a language tree for the current
   buffer.
 
-• Added support for the `willSave` and `willSaveWaitUntil` capabilities to the
-  LSP client. `willSaveWaitUntil` allows a server to modify a document before it
-  gets saved. Example use-cases by language servers include removing unused
-  imports, or formatting the file.
+• |'statuscolumn'| option to customize the area to the side of a window,
+  normally containing the fold, sign and number columns. This new option follows
+  the 'statusline' syntax and can be used to transform the line numbers, create
+  mouse click callbacks for |signs|, introduce a custom margin or separator etc.
 
-• Treesitter syntax highlighting for `help` files now supports highlighted
-  code examples. To enable, create a `.config/nvim/ftplugin/help.lua` with
-  the contents >lua
-    vim.treesitter.start()
+• |vim.secure.trust()|, |:trust| allows the user to manage files in trust database.
+  |vim.secure.read()| reads a file and prompts the user if it should be
+  trusted and, if so, returns the file's contents.  Used by 'exrc'
+
+• EditorConfig support is now builtin. This is enabled by default and happens
+  automatically. To disable it, users should add >lua
+
+    vim.g.editorconfig = false
 <
-  Note: Highlighted code examples are only available in the Nvim manual, not
-  in help files taken from Vim. The treesitter `help` parser is also work in
-  progress and not guaranteed to correctly highlight every help file in the
-  wild.
+  (or the Vimscript equivalent) to their |config| file.
 
-• |vim.secure.trust()|, |:trust| allows the user to manage files in trust
-  database.
+• A new environment variable named NVIM_APPNAME enables configuring the
+  directories where Neovim should find its configuration and state files. See
+  `:help $NVIM_APPNAME` .
 
-• |vim.diagnostic.open_float()| (and therefore |vim.diagnostic.config()|) now
-  accepts a `suffix` option which, by default, renders LSP error codes.
-  Similarly, the `virtual_text` configuration in |vim.diagnostic.config()| now
-  has a `suffix` option which does nothing by default.
+• Added support for running Lua scripts from shell using |-l|. >
+      nvim -l foo.lua --arg1 --arg2
+<  Also works with stdin: >
+      echo "print(42)" | nvim -l -
 
-• |vim.fs.dir()| now has a `opts` argument with a depth field to allow
-  recursively searching a directory tree.
+• Added an omnifunc implementation for lua, |vim.lua_omnifunc()|
 
-• |vim.gsplit()| supports all features of |vim.split()|.
+• Added a new experimental |lua-loader| that byte-compiles and caches lua files.
+  To enable the new loader, add the following at the top of your |init.lua|: >lua
+    vim.loader.enable()
 
-• |vim.secure.read()| reads a file and prompts the user if it should be
-  trusted and, if so, returns the file's contents.
+• Added |lua-version| for parsing and comparing version strings conforming to
+  the semver specification.
 
 • When using Nvim inside tmux 3.2 or later, the default clipboard provider
   will now copy to the system clipboard. |provider-clipboard|
@@ -167,34 +136,34 @@ The following new APIs or features were added.
 
 • |'splitkeep'| option to control the scroll behavior of horizontal splits.
 
-• |'statuscolumn'| option to customize the area to the side of a window,
-  normally containing the fold, sign and number columns. This new option follows
-  the 'statusline' syntax and can be used to transform the line numbers, create
-  mouse click callbacks for |signs|, introduce a custom margin or separator etc.
-
-• |nvim_select_popupmenu_item()| now supports |cmdline-completion| popup menu.
-
 • |'diffopt'| now includes a `linematch` option to enable a second-stage diff
   on individual hunks to provide much more accurate diffs. This option is also
   available to |vim.diff()|
 
   See https://github.com/neovim/neovim/pull/14537.
 
-• |vim.diagnostic.is_disabled()| checks if diagnostics are disabled in a given
-  buffer or namespace.
-
 • |--remote-ui| option was added to connect to a remote instance and display
   in it in a |TUI| in the local terminal. This can be used run a headless nvim
   instance in the background and display its UI on demand, which previously
   only was possible using an external UI implementation.
 
-• Several improvements were made to make the code generation scripts more
-  deterministic, and a `LUA_GEN_PRG` build parameter has been introduced to
-  allow for a workaround for some remaining reproducibility problems.
+• Added a |vim.lsp.codelens.clear()| function to clear codelenses.
 
-• |:highlight| now supports an additional attribute "altfont".
+• Added support for the `willSave` and `willSaveWaitUntil` capabilities to the
+  LSP client. `willSaveWaitUntil` allows a server to modify a document before it
+  gets saved. Example use-cases by language servers include removing unused
+  imports, or formatting the file.
 
-• |:Man| manpage viewer supports manpage names containing spaces.
+• Added preliminary support for the `workspace/didChangeWatchedFiles` capability
+  to the LSP client to notify servers of file changes on disk. The feature is
+  disabled by default and can be enabled by setting the
+  `workspace.didChangeWatchedFiles.dynamicRegistration=true` capability.
+
+• |vim.diagnostic| now supports LSP DiagnosticsTag.
+  See: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnosticTag
+
+• |vim.diagnostic.is_disabled()| checks if diagnostics are disabled in a given
+  buffer or namespace.
 
 • Treesitter captures can now be transformed by directives. This will allow
   more complicated dynamic language injections.
@@ -204,8 +173,6 @@ The following new APIs or features were added.
 
 • |vim.treesitter.language.add()| replaces `vim.treesitter.language.require_language`.
 
-• `require'bit'` is now always available |lua-bit|
-
 • |vim.treesitter.foldexpr()| can be used for 'foldexpr' to use treesitter for folding.
 
 • Expanded the TSNode API with:
@@ -216,32 +183,17 @@ The following new APIs or features were added.
 
   Additionally |TSNode:range()| now takes an optional {include_bytes} argument.
 
-• |nvim_list_uis()| reports all |ui-option| fields.
-
-• Vim's `has('gui_running')` is now supported as a way for plugins to check if
-  a GUI (not the |TUI|) is attached to Nvim. |has()|
-
-• Added preliminary support for the `workspace/didChangeWatchedFiles` capability
-  to the LSP client to notify servers of file changes on disk. The feature is
-  disabled by default and can be enabled by setting the
-  `workspace.didChangeWatchedFiles.dynamicRegistration=true` capability.
-
-• Added an omnifunc implementation for lua, |vim.lua_omnifunc()|
-
 • Treesitter injection queries now use the format described at
   https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injection .
   Support for the previous format will be removed in a future release.
 
-• |nvim_get_option_value()| now has a `filetype` option so it can return the
-  default option for a specific filetype.
+• Added |nvim_get_hl()| for getting highlight group definitions in a format
+  compatible with |nvim_set_hl()|.
 
 • |vim.filetype.get_option()| to get the default option value for a specific
   filetype. This is a wrapper around |nvim_get_option_value()| with caching.
 
-• Added |nvim_get_hl()| for getting highlight group definitions in a format compatible with |nvim_set_hl()|.
-
-• |vim.diagnostic| now supports LSP DiagnosticsTag.
-  See: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnosticTag
+• `require'bit'` is now always available |lua-bit|
 
 ==============================================================================
 CHANGED FEATURES                                                 *news-changes*
@@ -259,6 +211,13 @@ The following changes to existing APIs or features add new behavior.
   resulting in a nvim binary which only could be run headless or embedded
   in an external process. As of this version, TUI is always available.
 
+• Vim's `has('gui_running')` is now supported as a way for plugins to check if
+  a GUI (not the |TUI|) is attached to Nvim. |has()|
+
+• |msgsep| is now always enabled even if 'display' doesn't contain the "msgsep"
+  flag. It is no longer possible to scroll the whole screen when showing
+  messages longer than 'cmdheight'.
+
 • API calls now show more information about where an exception happened.
 
 • The `win_viewport` UI event now contains information about virtual lines,
@@ -269,15 +228,51 @@ The following changes to existing APIs or features add new behavior.
   are unchanged. However `:=#` and similar variants using |ex-flags|
   are no longer supported.
 
+• Unsaved changes are now preserved rather than discarded when |channel-stdio|
+  is closed.
+
+• |nvim_open_win()| now accepts a relative `mouse` option to open a floating win
+  relative to the mouse. Note that the mouse doesn't update frequently without
+  setting `vim.o.mousemoveevent = true`
+
+• |nvim_eval_statusline()| supports evaluating the |'statuscolumn'| through a
+  new `opts` field: `use_statuscol_lnum`.
+
+• |nvim_buf_get_extmarks()| now accepts a -1 `ns_id` to request extmarks from
+  all namespaces and adds the namespace id to the details array.
+  Other missing properties have been added to the details array and marks can
+  be filtered by type.
+
+• |vim.diagnostic.open_float()| (and therefore |vim.diagnostic.config()|) now
+  accepts a `suffix` option which, by default, renders LSP error codes.
+  Similarly, the `virtual_text` configuration in |vim.diagnostic.config()| now
+  has a `suffix` option which does nothing by default.
+
+• |vim.fs.dir()| now has a `opts` argument with a depth field to allow
+  recursively searching a directory tree.
+
+• |vim.gsplit()| supports all features of |vim.split()|.
+
+• |:highlight| now supports an additional attribute "altfont".
+
+• |:Man| manpage viewer supports manpage names containing spaces.
+
+• |nvim_select_popupmenu_item()| now supports |cmdline-completion| popup menu.
+
+• |nvim_list_uis()| reports all |ui-option| fields.
+
+• |nvim_get_option_value()| now has a `filetype` option so it can return the
+  default option for a specific filetype.
+
+• build: Several improvements were made to make the code generation scripts more
+  deterministic, and a `LUA_GEN_PRG` build parameter has been introduced to
+  allow for a workaround for some remaining reproducibility problems.
+
 ==============================================================================
 REMOVED FEATURES                                                 *news-removed*
 
 The following deprecated functions or APIs were removed.
 
-• It is no longer possible to scroll the whole screen when showing messages
-  longer than 'cmdheight'. |msgsep| is now always enabled even if 'display'
-  doesn't contain the "msgsep" flag.
-
 • `filetype.vim` is removed in favor of |lua-filetype|
   (Note that filetype logic and tests still align with Vim, so additions or
   changes need to be contributed there first.)
@@ -321,4 +316,8 @@ release.
   `vim.treesitter.query.get_range()`     -> `vim.treesitter.get_range()`
   `vim.treesitter.query.get_node_text()` -> `vim.treesitter.get_node_text()`
 
+• |nvim_exec()| is now deprecated in favor of |nvim_exec2()|.
+
+• Renamed |vim.pretty_print| to |vim.print|.
+
  vim:tw=78:ts=8:sw=2:et:ft=help:norl:
diff --git a/runtime/nvim.appdata.xml b/runtime/nvim.appdata.xml
index 1fe672b80b..29db9d5ee4 100644
--- a/runtime/nvim.appdata.xml
+++ b/runtime/nvim.appdata.xml
@@ -26,6 +26,7 @@
   
 
   
+    
     
     
     
diff --git a/test/functional/fixtures/api_level_11.mpack b/test/functional/fixtures/api_level_11.mpack
new file mode 100644
index 0000000000000000000000000000000000000000..2399854c42fc62c7f266b3185f0445eada74d74f
GIT binary patch
literal 31225
zcmcIN%Z}v8akHz(YPCP%qYe0^FOV0u0RsjE*bD1Ouvx4wYFNbr$(otg%@QnMcY7Z;
zeA9MScUM1VdS)N84WFdn@W0p*8Tp7{W|GNy90t>@BI6yA5s{Is-(5W^+pcOh|9V*G
zziQe?hjq1S+7A!gyf0RdZnkaNmUWqTpDX&Q8ld%XfWK
ztQXy(t2RaX;mtO0;rkv4{OtVZuPX&HZ_oD4w(kVgtH0ayB@?!uXyELm|jc&a!IZqnRU;{|o^|y9t54WYkZH`jvuPJ}Zk6Nzbwl
zqh@U&e^N3ejh^h5SzT>PaGKqwC(7Rw_I>&BZn*>thCAUuLHpImO#>FO5pZ89@)2&{
z_j$1*m_KANKR=f+&kda0uG}m#LNu;o^F##mq6}mHY=BvC^Fl>{Uo8KeRP`4EHYo+U
z!gzoZ)8@~G^~C_Z^{+$M=WTBcGz0a5#_2zGkH@oFodbEpwD6q%n
z**e$j&JP%lC^ze7Q3`SSuIezL6L1VaW*9tQHS$6X=lbHJUUl~G7XBVJkTFs)BZ!gW
z1?Ctj6O216LB@kt5=DgzsLgzyvXm8mw)y%
z8S9)(G1fWKxJ=Wz4=oJ$HtQ?$x=t{R%fH{{|4=S3pdb?-$QadLNX6K5g#Ze#4szAC
zw&kBn?NQ=(0SVQ(yrh>C{A&e20+|tY0k@1p=k89hX-(4w->xfLEK%3_CQyJtTqG{2
z&e5X2()Z6r{GDP7Eq)v;!~up?=!0`Zna2M(RZ|H&4%*$Qt!peFim_AkY9136gU{mF`t-zsqY?
zF?mG(gapEK5N}DeIJ&mrRMM)b`*g)>w|VTR!Gc)k8p2kb8?S0=1bK9RNOVeLF@zo9
zF_fO}eq6MtCrNn8WYAm)FRuA%m_^8p;^o#u3(q|S6lmH&Zvhq^-(=n+E}@xf`aeJ*40&!B=e{*jy16Ep(kGN7G+s@Io@5cvJ2dgzj#wa%pqp_%+@^z-Rh%U(tUwuMPUFoOa
zgk?*?ES^UxnB@8vcf)3I4DpN=6(-Y9v|)v826HxJRCSZ6U}9;&w<;0FB?-3eU`r5I
z$z?+;B5!GoKsGCq$Sx?8*To)MbGL<_xu5rpz>QJt5(o=dmk2ze`c!cLVEUlCHy|4W
z|846hlmoQsu{Xds$G9X?(@EG(94}PGUTdiS(S&H`I1TX?ic(q=IcP1?S8Bh733YOx
zmS`dafmp7rUen|o$P`J&O6GQTOr9rlZATM2N0cUSIWa^GGXLSmuenX&q}@}LL%vvK
zwgMqZ@Uktw8f)cHJh+DRSM9>u0z``D2n{cjOlYfxIuN+s#CNGlW5a66x{2?8sm457
z8wpSI^BU@uV8~pQMbpAe0z{c@+dQcjrQSK=wta5pp|vz>vf8!-v4@2;l`s(VeBWvi
znn&^YY*BI`gC?WK4wY;$Zp$zjgGjtEi6O9`k;Fb?
zb-DnDD`mEH)A#`H^gHkd}R*K=a39Gm)!X5Y269
zh+#}BUKryTWJV$I#d(5MQSIQ5@DxuB1&$a`h+%@KIEE3PY{^GY%XOSWv`I_rs_QeL
zL$9AaM8kl~APp5vg#<@Sj)9F<7TIJQLKf~X(D<^GNKk%3B%gca3nU}rn?k8`&5)I+
z^JQupnj+&_1Q#D@#z!-unBcBv`J{!@>K<>fRuwj~3AQNW0^044s$w!tay^dK
zjTCC@oeTH`CiBebDNh%_I6wR?Z0z@%e7Z0mLRS|!AEp0<3|e3|E+!Hz;tFHD>TzQw
zh&eQI#gUIB6tPt6*4EoAy+O=vpII3d3k-~3ulZ&`(9y;WbWW~Qy-uw~BEe8yK*lA+
z8vv#K_+?oxVAv;+2e{lEzqgC1nmIB-
z=va0|zAdxI2{X+%O1aerb_GMLj}bQ_n-B->HDV(sKc#I$z)(Fl{{(F^wsjr
z2W$=JV%?ou!5-`8lt%FR+U)zSk+ujr#7oz=YIzwmADqGz^xLGEq-~O7k`b*8Dj9BJ
zxVc)FAp3q5P?uaMM}fM6(ZF0*bs#`G1z-TR`o4g|RdC?P7fOXO9u&K_g<0EdQ3d8K
zZ3Mo6uLa1E47sNazSSUlrOHk!cHzXESfWwH`bvR)Hq_
z=X&_!Qt#`V@OZU?QnqQ&#-obQ2CdOBaFRW3D>JCblUgej4A2wmB4B0Pz71e{P{jbN
zgQXx_JOphvGEv_}hC3otg*)igPDVM?yW#5_g&s5|;3baOKr*vMu2Z93(UTY7g!%RP=g&h*SJf_nLV}o|wC|e~)*Wv}wP{
z`&`g(_pv^qT~ulNRAefH&<%@8`!`Jsk&4g;0(SrnZoU%`D85ogK~433OjCdx2qoNG
zs1*VUvQ5&I9BuNkFWP!(bGE~F1*a#4kbV26u~?hca|8Us8R%vk`@+Fv<
zy}VpDb=^Fjz)tqr?M}d=tCK*wV#7EclAHiXv3Iw5O@KicauqWa5KSv9=HQBxzC%q`
zt*lYOwkK3LTp6KQDJu+{SSL_$B-Nb9;`*GJTn(ij)YQV$1uzkt1a<*O-Gr861iP#T
zYf^GQe)vbSZ71OU(>@gL-4+Qy{KDt^tSRjgp`g)s3%8-e!EtHY3Q&PFKJohJcsLuF
zImYn11WncQCX;~kLxLr-1y8WuSR@{zcAIK(WAo+0mczQj(#3({L(;HiP6ZoHxicFu
zr@rkCDv0nKCZ0GlxTt9jaKbIB=>s+~Oq8@>*J^Bw{Q?HR#|7^j0Tt`wSPhR`R_NwHfpF)LiRx+<
zgc9;X6TZr4TUkAZKvB3+er;Yq;ls4j{d&3KClMwIr7o9(j*Dw1QE(@PtdQD$d%V#^
z*fD%DJyI8l4r8GR$`0Su;rp@6L-8(y@vyA()6Tlu(M}XeUUk9b`&NVXiY>FacLP3I
zt{4wJz*+>^C+7zemSr_{+MaszfJ<%L(IdnrM+>?W)!h^xP6n~ZhawQ0PSk)v9~;=R
zz$T@p`R8D1T`^#7F*)#$I85$sM5u#^^^Jwdrw~1vNX-bMZT1#Bzv$GU1hZ?qCfpI7
z!-NB>i?kq6kB<5E9g30()R)OiCcJ3b9F23K}l
zh+wLXkl?X7m=UPH;ZUB4AXhLBN>b&Wu~Dh|;HXuC;EK8lZJK(9Vb{iG(-yMe4f&Cy
z7jq4tUJrikgtt$-i~}%vV9F=H0q(&!20)wa;`oC3N|^IYSf}tX9A>xlx}%g)AW(x|
zQt5Gl$2O_u_M>)IjSnpmads)_;$zA3c;@IUganPgxF0lO7<7{fi%+@FAk6C+CLXII
zftq7gI*zA^6O2Y^PlR3}CLQvH#h62cDwe>8VG71kd+~K)P@pbwwMjvd&XjTSAXg@m
zrJx+;YH}elOrjjIj7`Cq&ZN{F^|D^!StVT!#?GAwPT>KYJls*G@7&FaqX$n5q2*e3c8$Q(*l~IHnHx<|itFD$H5};;8Q?R@EiP#17
zQ1b8{0{4bIQxMrrztHIq(a_g<7D@JSiauJfbUuqKlu33K{`F;WxcH2k+ADFvI`(+t=Xxub8qDk|BzvJ~>IThr*8
zP=*g*c{7__ds7U-aY7h@UEDXu$*n;47j!&HL;`XY5%)aA3~n9^!47;=5`bPq
zd$#YG%XB0jmzDv7G0ofqGaI!H{0?|CI8cMhIHIgk*(^Ad?nhdC&KOHfhCP(LD<%+z
zj7fC*zhT(T_U#)>cCd~UpRX9ES<9^S55b=43ka58Xhie+GZG87U(|2vz>fg^{I|4|
z`2)3h-D5*S&4c2+k9hryp$2|s0#E!e^o-U$MI0EMJFCl10K467;S@ue;WQ!x^{Ke&
z=498M(aVma_Z;;-%{F=q9Cd}0vRSi<-f`4-ESJ$+ZWZ@bn6sO}Aa%E!+BJGe2T#|6
ztQOA%Kl_uiuGzzqTUbjwd^haqO)ws|>sC=1SKST{$!-?W8;vH!_hK`z|SLxVa0yD#U@!5kd8~@aLS1iKI82Yw3V_b#>P0w6G
zG65$BI(GY44g~@<`TGUjX}`Hv6EFOyr|1))$=)++7=-;Eu`lrrE(03=-9jPB>Fh<(
zU>e=|2F_8#aXKxJTe?;+zR@pyxzQiFSHPH06rFm??WkTwgc*&6b@^-95-rWLPPAh3
zjBlGP+YKz=Qe-aldgN+5AsE*P183csxW}|}#QW7STjB$^@J0&s`T>38cCO`cP4)|U
zot7{p1zX&tFu|SH{yU`UNmV}GLJOCXHKsD7qbo3cbU`cVD~S5?16bR{2bb^xw<>xW
zr3&#D%AHksC&9iizvD7Wqo2D|IFKbh
zWw^gI=a=yCjdN!ZHlE(WGtAncJp}d}Wn?jQ1M`yE#RDTt;bVk3L$tI=98lGuYBEa3
z*ppyhpXe7mgSPN}9p?B3JOW#t)FpYYzcasXNWt`q+SMkKk@W817iJWyf$YB0aG|dR
zhZz8kl@<7-G26>!)pmVhFX4REdh2ezMAv4I9@NjK3Qlhg`k0qvzrx}U0QlAb(C@NQ
zUc>}u_kw@#eo*Altty`M_+(kB3{>nC7a--8A?2iQipSYNp!P5wN?Yo{@<0#f+d;)K
z^5_8PfLv*jumsc#by_V(n(`B&AE*>
z*KjUfQ%x|B2y>VO8DY>Z6utp1D2D0H7*iJoU=4YHg;xr|s)o#^FP|d-%-tbwLqTw>b|Te}Aa}nx{>`(ZRIfw-
zXUNGP-TV{&0GoPoFAI$G?`