neovim/runtime/doc/news.txt

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

435 lines
19 KiB
Plaintext
Raw Normal View History

*news.txt* Nvim
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
NVIM REFERENCE MANUAL
Notable changes in Nvim 0.10 from 0.9 *news*
For changes in Nvim 0.9, see |news-0.9|.
Type |gO| to see the table of contents.
==============================================================================
BREAKING CHANGES *news-breaking*
The following changes may require adaptations in user config or plugins.
• In some cases, the cursor in the Nvim |TUI| used to blink even without
configuring 'guicursor' as mentioned in |cursor-blinking|. This was a bug
that has now been fixed. If your cursor has stopped blinking, add the
following (or similar, adapted to user preference) to your |config| file: >vim
set guicursor+=n-v-c:blinkon500-blinkoff500
<
• |vim.tbl_islist()| now checks whether a table is actually list-like (i.e.,
has integer keys without gaps and starting from 1). For the previous
behavior (only check for integer keys, allow gaps or not starting with 1),
use |vim.tbl_isarray()|.
• "#" followed by a digit no longer stands for a function key at the start of
the lhs of a mapping.
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
• `:behave` was removed.
- If you used `:behave xterm`, the following is equivalent: >vim
set mousemodel=extend
<
- If you used `:behave mswin`, the following is equivalent: >vim
set selection=exclusive
set selectmode=mouse,key
set mousemodel=popup
set keymodel=startsel,stopsel
<
• When switching windows, |CursorMoved| autocommands trigger when Nvim is back
in the main loop rather than immediately. This is more compatible with Vim.
• |-l| ensures output ends with a newline if the script prints messages and
doesn't cause Nvim to exit.
• |LspRequest| and LspProgressUpdate (renamed to |LspProgress|) autocmds were
promoted from a |User| autocmd to first class citizen.
• Renamed `vim.treesitter.playground` to `vim.treesitter.dev`.
• Removed functions from the |vim.json| module:
• Unnecessary, undocumented functions which caused global side-effects.
• `vim.json.null` is redundant with `vim.NIL`.
• `vim.json.array_mt` (and related) is redundant with `vim.empty_dict()`.
• Removed some Vim 5.0<= option compatibilities:
• |'backspace'| no longer supports number values. Instead:
• for `backspace=0` set `backspace=` (empty)
• for `backspace=1` set `backspace=indent,eol`
• for `backspace=2` set `backspace=indent,eol,start` (default behavior in Nvim)
• for `backspace=3` set `backspace=indent,eol,nostop`
• |'backupdir'| and |'directory'| will no longer remove a `>` at the start
of the option.
• |LanguageTree:parse()| will no longer parse injections by default and
now requires an explicit range argument to be passed. If injections are
required, provide an explicit range via `parser:parse({ start_row, end_row })`.
• |vim.lsp.util.parse_snippet()| will now strictly follow the snippet grammar
defined by LSP, and hence previously parsed snippets might now be considered
invalid input.
• |OptionSet| autocommand args |v:option_new|, |v:option_old|,
|v:option_oldlocal|, |v:option_oldglobal| now have the type of the option
instead of always being strings. |v:option_old| is now the old global value
for all global-local options, instead of just string global-local options.
• Local value for a global-local number/boolean option is now unset when
the option is set (e.g. using |:set| or |nvim_set_option_value()|) without a
scope, which means they now behave the same way as string options.
• Signs placed through the legacy |sign-commands| are now stored and displayed
as |extmarks| internally. Along with the following changes:
• A sign placed twice in the same group with the same identifier will be moved.
• Legacy signs are always deleted along with the line it is placed on.
• Legacy and extmark signs will show up in both |:sign-place-list| and |nvim_buf_get_extmarks()|.
• Legacy and extmark signs are displayed and listed with the same priority:
line number -> priority -> sign id -> recently placed
• Default color scheme has been updated to be "Nvim branded" and accessible.
feat(highlight): update default color scheme Problem: Default color scheme is suboptimal. Solution: Start using new color scheme. Introduce new `vim` color scheme for opt-in backward compatibility. ------ Main design ideas - Be "Neovim branded". - Be minimal for 256 colors with a bit more shades for true colors. - Be accessible through high enough contrast ratios. - Be suitable for dark and light backgrounds via exchange of dark and light palettes. ------ Palettes - Have dark and light variants. Implemented through exporeted `NvimDark*` and `NvimLight*` hex colors. - Palettes have 4 shades of grey for UI elements and 6 colors (red, yellow, green, cyan, blue, magenta). - Actual values are computed procedurally in Oklch color space based on a handful of hyperparameters. - Each color has a 256 colors variant with perceptually closest color. ------ Highlight groups Use: - Grey shades for general UI according to their design. - Bold text for keywords (`Statement` highlight group). This is an important choice to increase accessibility for people with color deficiencies, as it doesn't rely on actual color. - Green for strings, `DiffAdd` (as background), `DiagnosticOk`, and some minor text UI elements. - Cyan as main syntax color, i.e. for function usage (`Function` highlight group), `DiffText`, `DiagnosticInfo`, and some minor text UI elements. - Red to generally mean high user attention, i.e. errors; in particular for `ErrorMsg`, `DiffDelete`, `DiagnosticError`. - Yellow very sparingly only with true colors to mean mild user attention, i.e. warnings. That is, `DiagnosticWarn` and `WarningMsg`. - Blue very sparingly only with true colors as `DiagnosticHint` and some additional important syntax group (like `Identifier`). - Magenta very carefully (if at all). ------ Notes - To make tests work without relatively larege updates, each one is prepended with an equivalent of the call `:colorscheme vim`. Plus some tests which spawn new Neovim instances also now use 'vim' color scheme. In some cases tests are updated to fit new default color scheme.
2023-11-29 13:16:09 -07:00
Use `:colorscheme vim` to revert to the old legacy color scheme.
Here is a list of Nvim specific highlight groups which are now defined in
a meaningfully different way and might need an update:
• |hl-FloatBorder| is linked to |hl-NormalFloat| instead of |hl-WinSeparator|.
• |hl-NormalFloat| is not linked to |hl-Pmenu|.
• |hl-WinBar| is linked to |hl-StatusLine|.
• |hl-WinBarNC| is linked to |hl-StatusLineNC| instead of |hl-WinBar|.
• |hl-WinSeparator| is linked to |hl-Normal| instead of |hl-VertSplit|.
This also might result into some color schemes looking differently due to
them relying on an implicit assumptions about how highlight groups are
defined by default. To account for this, define all attributes of highlight
groups explicitly. Alternatively, use `:colorscheme vim` or
`:source $VIMRUNTIME/colors/vim.lua` to restore previous definitions.
• 'termguicolors' is enabled by default when Nvim is able to determine that
the host terminal emulator supports 24-bit color.
==============================================================================
BREAKING CHANGES IN HEAD *news-breaking-dev*
The following breaking changes were made during the development cycle to
unreleased features on Nvim HEAD.
• ...
• ...
==============================================================================
NEW FEATURES *news-features*
The following new APIs and features were added.
• Performance:
• 'diffopt' "linematch" scoring algorithm now favours larger and less groups
https://github.com/neovim/neovim/pull/23611
• Treesitter highlighting now parses injections incrementally during
screen redraws only for the line range being rendered. This significantly
improves performance in large files with many injections.
• |vim.iter()| provides a generic iterator interface for tables and Lua
iterators |for-in|.
• |vim.ringbuf()| creates ring buffers.
• |vim.keycode()| translates keycodes in a string.
• |'smoothscroll'| option to scroll by screen line rather than by text line
when |'wrap'| is set.
• |nvim_buf_set_extmark()| supports inline virtual text.
• 'foldtext' now supports virtual text format. |fold-foldtext|
• The terminal buffer now supports reflow (wrapped lines adapt when the buffer
is resized horizontally). Note: Lines that are not visible and kept in
|'scrollback'| are not reflown.
• |vim.system()| for running system commands.
• |vim.lpeg| and |vim.re| expose the bundled Lpeg expression grammar parser
and its regex interface.
• |nvim_win_text_height()| computes the number of screen lines occupied
by a range of text in a given window.
• |nvim_set_keymap()| and |nvim_del_keymap()| now support abbreviations.
• Better cmdline completion for string option value. |complete-set-option|
• Builtin TUI can now recognize "super" (|<D-|) and "meta" (|<T-|) modifiers in a
terminal emulator that supports |tui-csiu|.
• Editor
• By default, the swapfile "ATTENTION" |E325| dialog is skipped if the
swapfile is owned by a running Nvim process, instead of prompting. If you
always want the swapfile dialog, delete the default SwapExists handler:
`autocmd! nvim_swapfile`. |default-autocmds|
• LSP
• LSP method names are available in |vim.lsp.protocol.Methods|.
• Implemented LSP inlay hints: |lsp-inlay_hint|
https://microsoft.github.io/language-server-protocol/specification/#textDocument_inlayHint
• Implemented pull diagnostic textDocument/diagnostic: |vim.lsp.diagnostic.on_diagnostic()|
https://microsoft.github.io/language-server-protocol/specification/#textDocument_diagnostic
• |vim.lsp.status()| consumes the last progress messages as a string.
• LSP client now always saves and restores named buffer marks when applying
text edits.
• LSP client now supports the `positionEncoding` server capability. If a server
responds with the `positionEncoding` capability in its initialization
response, Nvim automatically sets the client's `offset_encoding` field.
• Dynamic registration of LSP capabilities. An implication of this change is
that checking a client's `server_capabilities` is no longer a sufficient
indicator to see if a server supports a feature. Instead use
`client.supports_method(<method>)`. It considers both the dynamic
capabilities and static `server_capabilities`.
• `anchor_bias` option to |lsp-handlers| aids in positioning of floating
windows.
• |vim.lsp.util.locations_to_items()| sets the `user_data` of each item to
the original LSP `Location` or `LocationLink`.
• Treesitter
• Bundled parsers and queries (highlight, folds) for Markdown, Python, and
Bash.
• |vim.treesitter.query.omnifunc()| for treesitter query files (set by
default).
• |Query:iter_matches()| now has the ability to set the maximum start depth
for matches.
• `@injection.language` now has smarter resolution and will fall back to
language aliases (e.g., filetype or custom shorthands) registered via
|vim.treesitter.language.register()| and/or attempt lower case variants of
the text.
• The `#set!` directive now supports `injection.self` and `injection.parent`
for injecting either the current node's language or the parent
|LanguageTree|'s language, respectively.
• |vim.treesitter.query.edit()| allows live editing of treesitter
queries.
• Improved error messages for query parsing.
• |vim.treesitter.foldtext()| applies treesitter highlighting to
foldtext.
• |vim.ui.open()| opens URIs using the system default handler (macOS `open`,
Windows `explorer`, Linux `xdg-open`, etc.)
• |vim.wo| can now be double indexed for |:setlocal| behaviour. Currently only
`0` for the buffer index is currently supported.
• Lua type annotations for:
• `vim.*`
• `vim.fn.*`
• `vim.api.*`
• `vim.v.*`
• Improved messages for type errors in `vim.api.*` calls (including `opts` params)
• Functions that take a severity as an optional parameter (e.g.
|vim.diagnostic.get()|) now also accept a list of severities |vim.diagnostic.severity|
• New RPC client type `msgpack-rpc` is added for |nvim_set_client_info()| to
support fully MessagePack-RPC compliant clients.
• Floating windows can now show footer with new `footer` and `footer_pos`
config fields. Uses |hl-FloatFooter| by default.
• Floating windows can now be hidden by setting `hide` in |nvim_open_win()| or
|nvim_win_set_config()|.
• |:terminal| command now accepts some |:command-modifiers| (specifically
|:horizontal| and those that affect splitting a window).
• |$NVIM_APPNAME| can be set to a relative path instead of only a name.
• |:fclose| command.
2023-10-09 03:47:10 -07:00
• |vim.snippet| handles expansion of snippets in LSP format.
2023-10-20 23:51:26 -07:00
• 'complete' option supports "f" flag for completing buffer names.
• |vim.base64.encode()| and |vim.base64.decode()| encode and decode strings
using Base64 encoding.
• The |TermResponse| autocommand event can be used with |v:termresponse| to
read escape sequence responses from the terminal.
• A clipboard provider which uses OSC 52 to copy the selection to the system
clipboard is now bundled by default and will be automatically enabled under
certain conditions. |clipboard-osc52|
• 'termsync' option asks the terminal emulator to buffer screen updates until
the redraw cycle is complete. Requires support from the terminal.
• |vim.text.hexencode()| and |vim.text.hexdecode()| convert strings to and
from byte representations.
2023-11-16 10:35:54 -07:00
• 'completeopt' option supports "popup" flag to show extra information in a
floating window.
• |nvim_input_mouse()| supports mouse buttons "x1" and "x2".
• |v_Q-default| and |v_@-default| repeat a register for each line of a visual
selection.
==============================================================================
CHANGED FEATURES *news-changed*
The following changes to existing APIs or features add new behavior.
• |vim.tbl_contains()| now works for general tables and allows specifying a
predicate function that is checked for each value. (Use |vim.list_contains()|
for checking list-like tables (integer keys without gaps) for literal values.)
• |vim.region()| can use a string accepted by |getpos()| as position.
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
• |vim.diagnostic.config()| now accepts a function for the virtual_text.prefix
option, which allows for rendering e.g., diagnostic severities differently.
• Defaults:
2023-10-06 03:59:39 -07:00
• On Windows 'isfname' does not include ":". Drive letters are handled
correctly without it. (Use |gF| for filepaths suffixed with ":line:col").
• 'comments' includes "fb:•".
• 'shortmess' includes the "C" flag.
• Automatic linting of treesitter query files (see |ft-query-plugin|).
Can be disabled via: >lua
vim.g.query_lint_on = {}
<
• Enabled treesitter highlighting for treesitter query files.
• Enabled treesitter highlighting for help files.
• The `workspace/didChangeWatchedFiles` LSP client capability is now enabled
by default.
• |LspRequest| autocmd callbacks now contain additional information about the LSP
request status update that occurred.
• |:source| without arguments treats a buffer with its 'filetype' set to "lua"
as Lua code regardless of its extension.
• |:checkhealth| buffer now implements |folding|. The initial folding status is
defined by the 'foldenable' option.
• |:Man| now respects 'wrapmargin'
• |gx| now uses |vim.ui.open()| and not netrw. To customize, you can redefine
`vim.ui.open` or remap `gx`. To continue using netrw (deprecated): >vim
:call netrw#BrowseX(expand(exists("g:netrw_gx")? g:netrw_gx : '<cfile>'), netrw#CheckIfRemote())<CR>
• |vim.lsp.start()| now maps |K| to use |vim.lsp.buf.hover()| if the server
supports it, unless |'keywordprg'| was customized before calling
|vim.lsp.start()|.
• Terminal buffers started with no arguments (and use 'shell') close
automatically if the job exited without error, eliminating the (often
unwanted) "[Process exited 0]" message.
• |vim.diagnostic.config()| now accepts virtual text relevant options to
|nvim_buf_set_extmark()| (e.g. "virt_text_pos" and "hl_mode") in its
"virtual_text" table, which gives users more control over how diagnostic
virtual text is displayed.
feat(extmark): support proper multiline ranges The removes the previous restriction that nvim_buf_set_extmark() could not be used to highlight arbitrary multi-line regions The problem can be summarized as follows: let's assume an extmark with a hl_group is placed covering the region (5,0) to (50,0) Now, consider what happens if nvim needs to redraw a window covering the lines 20-30. It needs to be able to ask the marktree what extmarks cover this region, even if they don't begin or end here. Therefore the marktree needs to be augmented with the information covers a point, not just what marks begin or end there. To do this, we augment each node with a field "intersect" which is a set the ids of the marks which overlap this node, but only if it is not part of the set of any parent. This ensures the number of nodes that need to be explicitly marked grows only logarithmically with the total number of explicitly nodes (and thus the number of of overlapping marks). Thus we can quickly iterate all marks which overlaps any query position by looking up what leaf node contains that position. Then we only need to consider all "start" marks within that leaf node, and the "intersect" set of that node and all its parents. Now, and the major source of complexity is that the tree restructuring operations (to ensure that each node has T-1 <= size <= 2*T-1) also need to update these sets. If a full inner node is split in two, one of the new parents might start to completely overlap some ranges and its ids will need to be moved from its children's sets to its own set. Similarly, if two undersized nodes gets joined into one, it might no longer completely overlap some ranges, and now the children which do needs to have the have the ids in its set instead. And then there are the pivots! Yes the pivot operations when a child gets moved from one parent to another.
2020-11-22 02:10:37 -07:00
• Extmarks now fully support multi-line ranges, and a single extmark can be
used to highlight a range of arbitrary length. The |nvim_buf_set_extmark()|
API function already allowed you to define such ranges, but highlight regions
were not rendered consistently for a range that covers more than one line break.
This has now been fixed. Signs defined as part of a multi-line extmark also
apply to every line in the range, not just the first.
In addition, |nvim_buf_get_extmarks()| has gained an "overlap" option to
return such ranges even if they started before the specified position.
• The following flags were added to |nvim_buf_set_extmark()|:
- "undo_restore": opt-out extmarks of precise undo tracking.
- "invalidate": automatically hide or delete extmarks.
- "virt_text_repeat_linebreak": repeat virtual text on wrapped lines.
• LSP hover and signature help now use Treesitter for highlighting of Markdown
content.
Note that syntax highlighting of code examples requires a matching parser
and may be affected by custom queries.
• Support for rendering multibyte characters using composing characters has been
enhanced. The maximum limit have been increased from 1+6 codepoints to
31 bytes, which is guaranteed to fit all chars from before but often more.
NOTE: the regexp engine still has a hard-coded limit of considering
6 composing chars only.
• |vim.wait()| is no longer allowed to be called in |api-fast|.
• Vimscript function |exists()| supports checking |v:lua| functions.
• Added "force_crlf" option field in |nvim_open_term()|.
• Attempting to set an invalid keycode option (e.g. `set t_foo=123`) no longer
gives an error.
• |:checkhealth| buffer can now be opened in a split window using modifiers like
|:vertical|, |:horizontal| and |:botright|.
==============================================================================
REMOVED FEATURES *news-removed*
The following deprecated functions or APIs were removed.
• Vimball support
- :Vimuntar command
• Support for legacy treesitter injection queries
• 'shortmess' flags:
- |shm-f|. Always uses "(3 of 5)", never "(file 3 of 5)"
- |shm-i|. Always use "[noeol]".
- |shm-x|. Always use "[dos]", "[unix]" and "[mac]"
- |shm-n|. Always use "[New]".
==============================================================================
DEPRECATIONS *news-deprecations*
The following functions are now deprecated and will be removed in a future
release.
• Configuring |diagnostic-signs| using |:sign-define| or |sign_define()|. Use
the "signs" key of |vim.diagnostic.config()| instead.
• Checkhealth functions:
- |health#report_error|, |vim.health.report_error()| Use |vim.health.error()| instead.
- |health#report_info|, |vim.health.report_info()| Use |vim.health.info()| instead.
- |health#report_ok|, |vim.health.report_ok()| Use |vim.health.ok()| instead.
- |health#report_start|, |vim.health.report_start()| Use |vim.health.start()| instead.
- |health#report_warn|, |vim.health.report_warn()| Use |vim.health.warn()| instead.
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
• |API| functions:
- |nvim_buf_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_buf_set_option()| Use |nvim_set_option_value()| instead.
- |nvim_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_set_option()| Use |nvim_set_option_value()| instead.
- |nvim_win_get_option()| Use |nvim_get_option_value()| instead.
- |nvim_win_set_option()| Use |nvim_set_option_value()| instead.
• vim.lsp functions:
- |vim.lsp.util.get_progress_messages()| Use |vim.lsp.status()| instead.
- |vim.lsp.get_active_clients()| Use |vim.lsp.get_clients()| instead.
- |vim.lsp.for_each_buffer_client()| Use |vim.lsp.get_clients()| instead.
2023-09-18 11:04:01 -07:00
- |vim.lsp.util.trim_empty_lines()| Use |vim.split()| with `trimempty` instead.
- |vim.lsp.util.try_trim_markdown_code_blocks()|
- |vim.lsp.util.set_lines()|
- |vim.lsp.util.extract_completion_items()|
- |vim.lsp.util.parse_snippet()|
- |vim.lsp.util.text_document_completion_list_to_complete_items()|
• `vim.loop` has been renamed to |vim.uv|.
• vim.treesitter.languagetree functions:
- |LanguageTree:for_each_child()| Use |LanguageTree:children()| (non-recursive) instead.
• The "term_background" UI option |ui-ext-options| is deprecated and no longer
populated. Background color detection is now performed in Lua by the Nvim
core, not the TUI.
vim:tw=78:ts=8:sw=2:et:ft=help:norl: