Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add .luarc.json #24592

Merged
merged 2 commits into from Aug 7, 2023
Merged

feat: add .luarc.json #24592

merged 2 commits into from Aug 7, 2023

Conversation

lewis6991
Copy link
Member

@lewis6991 lewis6991 commented Aug 7, 2023

Update and promote contrib/luarc.json to .luarc.json.


Adapting LSP configuration

Use something like the following so RTP isn't added to projects with a .luarc.json.

Via nvim-lspconfig
local nvim_lsp = require('lspconfig')

nvim_lsp.lua_ls.setup {
  on_init = function(client)
    local path = client.workspace_folders[1].name
    if not vim.uv.fs_stat(path..'/.luarc.json') then
      -- Make the server aware of Neovim runtime files
      client.config.settings.Lua.workspace.library = { vim.env.VIMRUNTIME }
      -- or for everything:
      -- client.config.settings.Lua.workspace.library = vim.api.nvim_get_runtime_file("", true)
      client.notify("workspace/didChangeConfiguration", {
        settings = client.config.settings
      })
    end
  end
}
Manually
local function find_root(path, markers)
  local match = vim.fs.find(markers, { path = path, upward = true })[1]
  if not match then
    return
  end
  local stat = vim.loop.fs_stat(match)
  local isdir = stat and stat.type == "directory"
  return vim.fn.fnamemodify(match, isdir and ':p:h:h' or ':p:h')
end

vim.api.nvim_create_autocmd('FileType', {
  pattern = 'lua',
  group = vim.api.nvim_create_autocmd('luals', {}),
  callback = function(args)
    vim.lsp.start({
      name = 'luals',
      filetype = 'lua',
      cmd = { 'lua-language-server' },
      root_dir = find_root(args.file, {'.luarc.json', '.git'}),
      on_init = function(client)
        local path = client.workspace_folders[1].name
        if not vim.uv.fs_stat(path..'/.luarc.json') then
          -- Make the server aware of Neovim runtime files
          client.config.settings.Lua.workspace.library = { vim.env.VIMRUNTIME }
          -- or for everything:
          -- client.config.settings.Lua.workspace.library = vim.api.nvim_get_runtime_file("", true)
          client.notify("workspace/didChangeConfiguration", {
            settings = client.config.settings
          })
        end
      end,
    })
  end,
})

.luarc.json Outdated Show resolved Hide resolved
@gpanders
Copy link
Member

gpanders commented Aug 7, 2023

I'm not opposed to this, my only thought is that if I want to modify .luarc.json to add e.g. neodev.nvim to the library paths, is there a way to do that without my worktree constantly being dirty?

@lewis6991
Copy link
Member Author

lewis6991 commented Aug 7, 2023

There's no need for neodev anymore.

Or is there?

I've added meta files for everything now. Anything that's missing should be added as PR's here (via options.lua or eval.lua) instead of relying on third party code.

@gpanders
Copy link
Member

gpanders commented Aug 7, 2023

There's no need for neodev anymore.

Or is there?

I've added meta files for everything now. Anything that's missing should be added as PR's here (via options.lua or eval.lua) instead of relying on third party code.

Good point, you're probably right.

.luarc.json Outdated Show resolved Hide resolved
@lewis6991 lewis6991 merged commit c0beb81 into neovim:master Aug 7, 2023
10 of 12 checks passed
@lewis6991 lewis6991 deleted the feat/luarc branch August 7, 2023 15:27
@github-actions github-actions bot removed the request for review from mfussenegger August 7, 2023 15:28
@MariaSolOs
Copy link
Member

MariaSolOs commented Aug 8, 2023

There's no need for neodev anymore.

@lewis6991 Could you please elaborate on this? I actually struggled recently with duplicate results when using neodev, but when disabling I was unsure of how exactly to configure lua_ls in order to get vim's API support. Should these default settings from nvim-lspconfig be enough?

@clason
Copy link
Member

clason commented Aug 8, 2023

I too would like to know how this should be used in combination with the default config for, say, working on plugins or init.lua. Right know, luals loads everything multiple times...

@lewis6991
Copy link
Member Author

lewis6991 commented Aug 8, 2023

Neodev is half broken right now because it includes $VIMRUNTIME and all its generated types. So you will get duplicate types using it.

neodev should be disabled when working on the Neovim codebase. The neodev README explains how to do this.

Neodev also isn't really needed when working on plugins. You just need a .luarc.json with $VIMRUNTIME included in library.

For the most part neodev isn't really necessary anymore.

@clason
Copy link
Member

clason commented Aug 8, 2023

I'm not using neodev, though; just manual config.

@MariaSolOs
Copy link
Member

@lewis6991 by disabling neodev in this codebase you mean using neoconf? I didn’t find anything else mentioning that in the README, but I might have missed it.

So I’m now confused about whether I need neodev at all, but I’m still unsure of what modifications I need to do to my lua_ls config :/

@lewis6991
Copy link
Member Author

Don't include:

    workspace = {
        -- Make the server aware of Neovim runtime files
        library = vim.api.nvim_get_runtime_file("", true),
      }

When attaching to core.

@clason
Copy link
Member

clason commented Aug 8, 2023

Snippet?

@MariaSolOs
Copy link
Member

Don't include:

    workspace = {
        -- Make the server aware of Neovim runtime files
        library = vim.api.nvim_get_runtime_file("", true),
      }

When attaching to core.

Pardon my ignorance, but wdym by attaching to core?

@lewis6991
Copy link
Member Author

Pardon my ignorance, but wdym by attaching to core?

This repository.

@lewis6991
Copy link
Member Author

lewis6991 commented Aug 8, 2023

Snippet?

Maybe look at my config. https://github.com/lewis6991/dotfiles/blob/main/config/nvim/lua/lewis6991/lsp.lua

Basically, just don't set library.

In fact all my settings aren't required for nvim-core.

@clason
Copy link
Member

clason commented Aug 8, 2023

Well, but if I need library when working on, say, nvim-treesitter? Or my own config?

@lewis6991
Copy link
Member Author

lewis6991 commented Aug 8, 2023

Well, but if I need library when working on, say, nvim-treesitter?

Either add a .luarc.json to nvim-treesitter (like I do). Or dynamically setup library based on the root directory. Or don't set library when root marker is nvim core.

Setting VIMRUNTIME for nvim core is incorrect anyway since it points to a different VIMRUNTIME.

@clason
Copy link
Member

clason commented Aug 8, 2023

So you just made many people's lives more complicated. Color me unimpressed.

@MariaSolOs
Copy link
Member

Pardon my ignorance, but wdym by attaching to core?

This repository.

Does this mean that I need to build neovim from source? I’m confused lol. As someone that just wants to get completions for vim APIs when tweaking my .config/nvim files, it sounds like I can just ditch neodev, make no further changes to my LSP configuration, and it should just work?

Sorry I’m slow. I’m not very smart at 1am.

Anyway I think we should probably talk to Folke when he’s back from vacation because it would be a good idea to make these clarifications in neodev.

@clason
Copy link
Member

clason commented Aug 8, 2023

As someone that just wants to get completions for vim APIs when tweaking my .config/nvim files

In this case, this PR is completely irrelevant, and nothing has changed for you. (The file is only used when editing files in a cloned neovim repo.)

@MariaSolOs
Copy link
Member

As someone that just wants to get completions for vim APIs when tweaking my .config/nvim files

In this case, this PR is completely irrelevant, and nothing has changed for you. (The file is only used when editing files in a cloned neovim repo.)

Oh lol 😂 well sorry then for the spam

@lewis6991
Copy link
Member Author

Added some Lua snippets for LSP configuration to the description.

@lewis6991
Copy link
Member Author

Raised: neovim/nvim-lspconfig#2750

clason pushed a commit to clason/neovim that referenced this pull request Aug 8, 2023
@towry
Copy link

towry commented Aug 8, 2023

@MariaSolOs Seems neodev plugin is not needed.

  1. I have created a .luarc.json file in my neovim config folder with following content:
{
  "$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
  "workspace": {
    "library": [
      "/usr/local/share/nvim/runtime/lua",
      "/Users/towry/.local/share/nvim/lazy/nvim-cmp/lua"
    ]
  }
}
  1. Update neovim to the latest nightly build.
  2. Update nvim-lspconfig plugin.
  3. Remove neodev plugin and setup.

Here are the effects:

截屏2023-08-08 21 12 53

截屏2023-08-08 21 07 50

截屏2023-08-08 21 06 10


@lewis6991
Copy link
Member Author

lewis6991 commented Aug 8, 2023

You can replace /usr/local/share/nvim/runtime/lua with $VIMRUNTIME and the other line can maybe use $XDG_DATA_HOME.

@MariaSolOs
Copy link
Member

@towry @lewis6991 thanks a lot for the clarifications and helpful snippets <3

In this case, this PR is completely irrelevant, and nothing has changed for you. (The file is only used when editing files in a cloned neovim repo.)

Also FWIW I do have a neovim clone and I do want to become an active contributor, so this is still relevant to me :)

catlee pushed a commit to catlee/neovim that referenced this pull request Aug 8, 2023
@zeertzjq zeertzjq added the lua stdlib label Aug 9, 2023
@MariaSolOs
Copy link
Member

@lewis6991 why does your snippet for on_init return true? From what I can see here, the return value is ignored on success.

Sorry if it's a silly question, just making sure I'm not missing something.

@lewis6991
Copy link
Member Author

I think you are right.

I used https://github.com/neovim/nvim-lspconfig/wiki/Project-local-settings as a template, but that must be outdated.

@neovim-discourse
Copy link

This pull request has been mentioned on Neovim Discourse. There might be relevant details there:

https://neovim.discourse.group/t/how-to-configure-lsp-for-editing-init-lua-to-aid-in-setting-up-neovim/4269/1

snelling-a added a commit to snelling-a/nvim that referenced this pull request Aug 18, 2023
snelling-a added a commit to snelling-a/nvim that referenced this pull request Aug 18, 2023
antoineco added a commit to antoineco/dotfiles that referenced this pull request Sep 28, 2023
Neovim ships with a suitable Lua LSP configuration (.luarc.json) since
neovim/neovim#24592
justinmk added a commit to justinmk/neovim that referenced this pull request May 16, 2024
For highlights, see runtime/doc/news.txt (`:help news` in Nvim).
Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 649dd00fe2e5 remove deprecated functions
- 0370e4def0c0 remove neovim qt
- 880f7d12fea3 remove vimballs (#22402)
- c48b1421af28 rename "playground" => "dev" #23919
- 2f85bbe61513 rewrite TOhtml in lua
- abe39f2b243d api: change return type of nvim_win_text_height to Dict (#24365)
- 7180ef690180 api: nvim_open_win: noautocmd blocks all autocmds #28192
- 700cab00680f events: trigger CursorMoved later on switching window (#23711)
- e4a136f71375 ex_cmds: remove :behave
- e5e0bda41b64 lsp: add vim.lsp.status, client.progress and promote LspProgressUpdate (#23958)
- 5a363ccac8ff lsp: deprecate trim_empty_lines
- 5a2536de0c4b lsp: move changetracking to separate file (#26577)
- 58618d208acd lsp: promote LspRequest to a full autocmd and enrich with additional data (#23694)
- 1b9ccd38a12f lsp: rename vim.lsp.get_active_clients to get_clients (#24113)
- eb1f0e8fcca7 lsp: replace snippet parser by lpeg grammar
- 448907f65d67 lsp: vim.lsp.inlay_hint.get(), enable(), is_enabled() #25512
- 7caf0eafd83b lua: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440)
- 747264320c6d mappings: remove #n as a notation for a function key (#17318)
- f7da47225706 options: graduate shortmess+=f flag
- c3d1d9445c70 options: graduate some more shortmess flags
- 5df4fdf253f9 options: make OptionSet `v:` values use typval
- 881d17a11393 options: remove compatible behaviours for vim 5.0 and earlier
- e19cc9c9b715 options: unify `set_option` and `set_string_option`
- db590e96d593 startup: "nvim -l" message does not end with newline #24215
- 2ca076e45fb3 treesitter: incremental injection parsing
- f5dc45310941 treesitter: new standard capture names
- fc0ee871de2f treesitter: remove deprecated legacy injection format
- 6debb1852355 treesitter: remove duplicated diagnostic code (#24976)
- 18da6964cc61 vim.iter: remove vim.iter.map/filter/totable #26138
- 9b028bd64f42 vim.iter: rename xxback() => rxx() #28503
- 8d4a53fe6e20 vim.json: remove global options, "null", "array_mt" #24070
- 40ce8577977f vim.ui: change open() to return `result|nil, errmsg|nil` #28612
- e0d92b9cc20b vim.ui: change open() to return pcall-like values #28502

FEATURES
--------------------------------------------------------------------------------
- a66b0fdfaa35 NVIM_APPNAME supports relative paths #25233
- c0beb8173fe2 add .luarc.json (#24592)
- 14b7ffcf89bc add __call typing for vim.inspect()
- ca7e488cfeb1 add link in issue template to minimal config template
- 4bf47222c973 add vim.text module (#26069)
- 0ebc4de0ff93 allow opting in to builtin clipboard providers (#28083)
- e8d3c4cccb9d generate types and docs for v variables
- 29fe883aa916 ignore swapfile for running Nvim processes #25336
- 28d1640dd604 improve return type annotations for vim.api.*
- 199a990c9e4e report "build" in vim.version() #23925
- e68879325393 tostring(vim.version())
- c559ab0ae6be update unicode tables (#27317)
- ecdb6465e272 vim.version() returns a Version object
- 4b60267f82ef :source: source current ft=lua buffer as Lua code (#23802)
- 428edcde7068 api: add forward and back mouse buttons
- 037ea6e786b5 api: add nvim__redraw for more granular redrawing
- ca9f6f56949d api: add nvim_tabpage_set_win (#27222)
- db8fe63a9398 api: add nvim_win_text_height (#24236)
- 16513b303375 api: allow floats to be opened in non-current tabpage (#28480)
- 6b4970f6e0ac api: allow open_win/win_set_buf in the cmdwin in some cases
- 5d921e28c1cc api: allow win_close in cmdwin to close wins except previous
- 472271199e48 api: allow win_hide to close cmdwin or non-previous windows
- 6bba4becedae api: make nvim_open_win support non-floating windows (#25550)
- b162adbb7ca4 api: pass 0 to nvim_get_chan_info for current channel (#27321)
- 42bbc4fabcf9 api: support abbreviations in nvim_set_keymap
- 98a4ed0a1106 api: support getting abbreviations (#26868)
- d3d7d763f3e1 builtin: improve types
- 748bc4d22d35 clipboard: add OSC 52 clipboard support
- db57df04b6af clipboard: enable OSC 52 clipboard provider by default (#26064)
- 734848dc1a9e colorscheme: add semantic tokens modifiers to builtin color scheme
- 1e0996b57230 colorscheme: update treesitter groups
- 73de98256cf3 comment: add built-in commenting
- ae4ca4edf89e complete: support f flag for complete buffer part
- 01c51a491330 completion: support completing more string options
- ae3685798dea decoration: allow conceal_char to be a composing char
- 30a5c28c8740 decoration_provider: log errors as error messages
- 9711370c2645 defaults: add :Inspect to right-click menu (#28181)
- 2613ba5000d4 defaults: enable 'termguicolors' by default when supported by terminal
- 513fc461957f defaults: improve :grep defaults #28545
- c26dc1f77c79 defaults: map Q and @x to repeat in Visual mode (#26495)
- 8758c6fb875f defaults: set g:netrw_use_errorwindow = 0 #24179
- 1d81d7a268f5 defaults: treat "•" as a list item prefix #24623
- 20b38677c22b defaults: use ripgrep (rg) for 'grepprg' if available
- 61063653b06b defaults: visual CTRL-R for LSP mappings #28537
- 4ee656e4f357 diagnostic: add `vim.diagnostic.count()` (#26807)
- 73034611c25d diagnostic: add default mappings for diagnostics (#16230)
- fc6d713dd806 diagnostic: add support for many namespaces filtering in GetOpts (#28045)
- 5ed9916a28b9 diagnostic: enable(…, opts)
- e7801775060e diagnostic: filter diagnostics by specific severities (#24736)
- b13e63db1dbc diagnostic: goto functions jump to highest severity (#28490)
- 26765e8461c1 diagnostic: is_enabled, enable(…, enable:boolean)
- 9cb7e00b9748 diagnostic: provide more control over virtual text display (#24724)
- ee41153a9458 diagnostic: revert default behaviour of goto_next/prev()
- 07b60efd8058 diagnostic: specify diagnostic virtual text prefix as a function
- a3b39784744f diagnostics: support numhl and linehl for diagnostic signs
- 0381f5af5bdc diff: grouping optimization for linematch algorithm
- 42333ea98dfc docs: generate builtin.txt (#24493)
- 9beb40a4db56 docs: replace lua2dox.lua
- 1d4a5cd18537 eval: exists() function supports checking v:lua functions (#26485)
- 4a1ad676ce0b ex_cmds: no error on :lua with {range} and {code} (#27290)
- c2433589dca0 ex_cmds: ranged :lua #27167
- b04286a187d5 extmark: support proper multiline ranges
- 1c032ad703a1 extmark: window scoped extmark
- 68cb4a7405ea extmarks: add "undo_restore" flag to opt out of undo-restoring
- 4e6f559b8c5f extmarks: add 'invalidate' property to extmarks
- c249058758af extmarks: add sign name to extmark "details" array
- bbd5c6363c25 extmarks: add virt_text_repeat_linebreak flag (#26625)
- 15e77a56b711 extmarks: subpriorities (relative to declaration order) (#27131)
- f0884f21fa0c extmarks: support hl_mode "combine" for inline virt_text (#24099)
- 372aa2eb3db3 float: add fclose command
- 35570e4a11be float: implement footer
- 4200a0f1678c float: support toggle show float window
- 1233ac467de7 fold: transparent foldtext
- 71530cc97257 folds: support virtual text format for 'foldtext' (#25209)
- 38b9c322c97b fs: add vim.fs.root (#28477)
- e3e6fadfd828 fs: expose join_paths as `vim.fs.joinpath` (#23685)
- bc67cf3ccdf9 gen_help_html: add anchors to help tags #25112
- b0cf9c5feeae gen_help_html: ignore pi_netrw.txt errors
- 81d8fce8f9e1 gen_help_html: non-default vimdoc.so parser
- da09f9b551ba gen_lsp.lua: protocol.Methods #24504
- f41496ce74fb gen_lsp.lua: sort by name, handle failure #24504
- 3692fd4c873a gen_lsp.lua: validate CLI args #26514
- 2ff2785c396e health: checkhealth buffer can show in a split window (#26714)
- 4382d2ed564b health: fold successful healthchecks #22866
- d1bc6fca7123 health: list attached buffers in LSP report #23561
- 2877672d70e7 health: make :checkhealth support more split modifiers (#26731)
- ddda5e0a488b help: hide filename of "gO" outline using conceal #27547
- e72c0cd92090 highlight: Allow hyphens (-) in highlight group names (#24714)
- 986bf7e78d09 highlight: add `FloatFooter` highlight group
- 574519d9d68f highlight: tweak default color scheme
- 64a14026d76b highlight: update default color scheme
- a79694a08ede issue_template: instruct not to include a package manager
- 69ffbb76c237 iter: add `Iter.take` (#26525)
- cebc00603ea3 l10n: update Turkish translations #24246
- fec51229c4a0 l10n: update Ukrainian translations (#24882)
- 996dd36c7732 lsp: add actionable advice to lsp client quit error msg (#24510)
- 4ff3217bbd87 lsp: add fswatch watchfunc backend
- 643546b82b4b lsp: add handlers for inlay hints (#23736)
- 317c80f460a7 lsp: add method filter to get_active_clients (#24319)
- 688860741589 lsp: add more LSP defaults (#28500)
- 0fe86f7e2403 lsp: add opts paramater to vim.lsp.codelens.refresh
- 131a1ee82d15 lsp: add original LSP Location as item's user_data in locations_to_items (#23743)
- f1775da07fe4 lsp: add snippet API (#25301)
- db0ec84fb46b lsp: add type annotations for lsp.util.locations_to_items (#26694)
- f190f758ac58 lsp: add vim.lsp.buf.subtypes(), vim.lsp.buf.supertypes() (#28388)
- 451bc50d40ee lsp: deprecate severity_limit
- e9b85acfbb8d lsp: enable workspace/didChangeWatchedFiles by default (#23190)
- 4a09c178a190 lsp: fallback to code-action command on resolve failure (#25464)
- 2f22ed6a00db lsp: handle multiple clients in omnifunc (#24381)
- 63b340855156 lsp: implement textDocument/diagnostic (#24128)
- 5e3cf9fb4bc7 lsp: improve control over placement of floating windows (#24494)
- 15641f38cf4b lsp: include positionEncodings in default client capabilities
- ddd92a70d2aa lsp: initial support for dynamic capabilities (#23681)
- ca5de9306c00 lsp: inlay hints #23984
- 350d81856473 lsp: inlay_hint.is_enabled({filter}) #28523
- 33e1a8cd7042 lsp: map K to hover by default #24331
- 97bea3163a3f lsp: more annotations
- 37079fca58f3 lsp: move inlay_hint() to vim.lsp (#24130)
- 12c2c16acf70 lsp: opt-in to dynamicRegistration for inlay hints (#24102)
- a49924a31852 lsp: remove notify from vim.lsp.buf_detach_client (#25140)
- 8149bd089e15 lsp: report fswatch errors
- fb54e6980ea6 lsp: set client offset_encoding if server supports positionEncoding
- 96e19533f60a lsp: set kind in select call for codelens #23889
- 9af355964306 lsp: set workDoneToken in initialize request (#28182)
- f736b075d371 lsp: snippet parsing using lpeg
- 134b9ec48361 lsp: soft deprecate vim.lsp.for_each_buffer_client (#24104)
- 63f9c2da9aab lsp: support completion itemDefaults
- 3f788e73b345 lsp: support connect via named pipes/unix domain sockets (#26032)
- 7e36c8e972f0 lsp: support for choice snippet nodes
- 5c40f3e86a81 lsp: support vim.lsp.ListOpts.loclist in location_handler()
- abd2352bd8b8 lsp: update LSP protocol 3.18 typings to date (#28730)
- cfd4a9dfaf5f lsp: use treesitter for stylize markdown
- d5063f4b290e lsp: vim.lsp.inlay_hint.enable(nil) applies to all buffers #28543
- c0952e62fd0e lua: add `vim.system()`
- 9248dd77ac58 lua: add hl priority opts on yank (#23509)
- 642586977158 lua: add meta file for vim submodules (#24525)
- 3734519e3b4b lua: add noref to deepcopy
- 7c661207cc43 lua: add ringbuffer (#22894)
- 877d04d0fb83 lua: add vim.func._memoize
- ab1edecfb7c7 lua: add vim.iter (#23029)
- d675bd01b1e7 lua: allow vim.F.if_nil to take multiple arguments (#22903)
- c379d72c4905 lua: allow vim.wo to be double indexed (#20288)
- e52c25b7617a lua: deprecate vim.tbl_add_reverse_lookup
- f1dfe32bf555 lua: enable(enable:boolean, filter:table) #28374
- 5b40a1c09dda lua: implement Iter:join() (#26416)
- c01e624b0762 lua: more specific error messages for vim.api type checking
- e1ff2c51cad7 lua: pass keys before mapping to vim.on_key() callback (#28098)
- 2db719f6c2b6 lua: rename vim.loop -> vim.uv (#22846)
- 6c0812d92e0c lua: specific error messages for type checking `opts` params
- fd089c8e50c2 lua: typing for vim.fn.* (#24473)
- 302d3cfb96d7 lua: use callable table as iterator in vim.iter (#23957)
- 51c754b62e79 lua: use keyset type information
- 8e5c48b08dad lua: vim.fs.normalize() resolves ".", ".." #28203
- 7e70ca0b4808 lua: vim.keycode (#22960)
- 9e86f473e0f4 lua: vim.region accepts getpos() arg (#22635)
- 4d04feb6629c lua: vim.tbl_contains supports general tables and predicates (#23040)
- 48d533272e57 lua-types: types for vim.api.* (#24523)
- 25e729970712 man: allow opening pages in current window (#27861)
- 08db61b19b8f man: respect 'wrapmargin' when wrapping man pages (#24091)
- f9944a78bcd3 meta: add types for vim.lpeg
- deb6fd670479 msgpack-rpc: show actual request id in error message
- 01fe6b9e6a84 msgpack_rpc: support out-of-order responses on `msgpack-rpc`
- 619407eb548c nvim_open_term: convert LF => CRLF (#26384)
- e98decf9a68e quickfix: support -q - to read 'errorfile' from stdin (#27303)
- 7b0123dd6a06 remote: avoid --remote-ui infinite loop (#24465)
- cca6c4c6986a rpc: allow empty string key in msgpack => Vim conversion
- d0d4160dd13f runtime: highlight hl groups in syntax.txt (#25050)
- 5f4895200a49 scripts: add lsp_types.lua (#23750)
- 4e6096a67fe9 server: allow embed with listen (#25709)
- 170c890dca8f shortmess: "q" flag fully hides recording message (#27415)
- d3582e102b7b statuscolumn: re-evaluate for every screen line (#25885)
- 224f303ee54c stdlib: add vim.base64 module (#25843)
- fa131de9adb7 tabline: middle mouse button now closes tab (#27522)
- c855eee919f2 term: enable reflow by default (#21124)
- cd1b14f027f3 termdebug: improve `:Evaluate` floating window (#26621)
- cffdf102d4f0 terminal: allow :terminal to take modifiers (#15427)
- 0c89854da189 terminal: close shell terminals automatically
- 7589336120a2 terminal: respond to OSC background and foreground request (#17197)
- beca827212b1 terminal: trigger TermRequest autocommand events (#22159)
- c6ec7fa8d741 treesitter: add 'injection.self' and 'injection.parent'
- 6cfca21bac6b treesitter: add `@injection.filename`
- 5d8ab32f3871 treesitter: add a query editor (#24703)
- cb0a1a10b224 treesitter: add bash parser and queries
- bb15fa035610 treesitter: add folding for `InspectTree` (#27518)
- 9ce1623837a8 treesitter: add foldtext with treesitter highlighting (#25391)
- 31c4ed26bc27 treesitter: add injection language fallback (#24659)
- 28f54a787823 treesitter: add lang parameter to the query editor (#25181)
- 88c8803aa167 treesitter: add python parser and queries
- c194acbfc479 treesitter: add query_linter from nvim-treesitter/playground (#22784)
- af040c3a079f treesitter: add support for setting query depths
- 11844dde81c4 treesitter: bundle markdown parser and queries (#22481)
- 5e6240ffc24e treesitter: handle quantified fold captures
- f69658bc355e treesitter: highlight Lua files by default (#26824)
- 988b472d902e treesitter: highlight help files by default (#26347)
- 845d5b8b6419 treesitter: improve query error message
- 189fb6203262 treesitter: improved logging (#23638)
- c0b99bb1de8d treesitter: show root nodes in :InspectTree (#26944)
- cb46f6e46726 treesitter: support URLs (#27132)
- ff6092b4ee3c treesitter: update Bash parser and queries to v0.21.0
- 8dda630ae942 treesitter: update C parser and queries to v0.21.0
- 3836eeb90182 treesitter: update C queries from upstream
- aca4ad430bdc treesitter: update Lua parser and queries to v0.1.0
- 5e875ae8d07d treesitter: update Markdown parsers and queries to v0.2.1
- 8a3385dde75f treesitter: update Python parser and queries to v0.21.0
- 20dcbaaaf880 treesitter: update Vim parser and queries to v0.4.0
- 987dff6713af treesitter: update Vimdoc parser and queries to v2.4.0
- 1384bebd5aa3 treesitter: update query parser to v0.2.0
- 668f16bac779 treesitter: upstream query omnifunc from playground (#23394)
- a478bf936b2a treesitter: use 0-based indexing to show ranges in `:InspectTree`
- ac8ed77afb35 tui: add 'termsync' option (#25871)
- 4ee9e58056a9 tui: query extended underline support using DECRQSS (#28052)
- b4b7ca2d548a tui: support DCS responses in TermResponse event (#26061)
- 622ae2f53e77 tui: support Super and Meta modifiers (#24357)
- a14267036076 tui: support undercurl in WezTerm (#28037)
- 56627ca2423e tui: use TermResponse event for OSC responses (#25868)
- 32b49448b227 tutor: add Japanese tutor #27268
- 9c2270b83459 types: add `test/.luarc.json`
- d3a8e9217f39 ui: add chdir UI event (#27093)
- 6ea6b3fee27d ui: add support for OSC 8 hyperlinks (#27109)
- b72931e70407 ui: allow non-zero 'cmdheight' with ext_messages
- 2615ed879e66 ui: allow to get the highlight namespace
- e38027ef69f7 ui: completeopt support popup like vim
- 2e4e12756a69 ui: indicate margins for the area used by win_viewport
- efa9b299a7cb ui: inline virtual text
- dacd34364ff3 ui-ext: make 'mousehide' into proper ui_option (#25532)
- 43ded8d35844 version: unverbose ":version", ":verbose version" #24195
- 0a598c13b186 vim.deprecate: only issue warning if neovim version is high enough
- a767c046f4e6 vim.iter: add Iter:flatten  (#26786)
- af6e6ccf3dee vim.ui: vim.ui.open, "gx" without netrw
- fa4b02fa67e5 vim.version: add `vim.version.le` and `vim.version.ge`
- 27a566f3f8e0 vimdoc: support Markdown code blocks (#25127)

FIXES
--------------------------------------------------------------------------------
- f5573fba3d46 Remove nested for_each_tree in TSTreeView (#26328)
- ae28ef327e02 adjust error message for error in UI event callback (#28200)
- ebe489d8f0ed allow multiline message for echoerr (#25380)
- 592bc831ce4b avoid ui_grid_cursor_goto when drawing window separators
- d6483793e1c3 buffer overrun in lmpack_session_receive
- 3bbb0aa3993f checkhealth warning even if init.lua exists #25306
- 5cb906e91cb5 correct versions in deprecation warnings
- 118fd8367c39 deduplicate gen_cflags
- eb4676c67f5d disallow removing extmarks in on_lines callbacks (#23219)
- 6e9b204afbe5 doc errors
- 77d3526a3d08 explain that user should run nvim with -V1 to see more information
- fd791db0eceb fix ASAN errors on clang 17 (#25469)
- bb38c066a965 fix compiler warning from clang
- 478273a4233d fix iter_matches call in query linter (#27496)
- bb7324292cda flush UI state before blocking in vim.wait (#25938)
- 44d4ae448d0a function was renamed (#23772)
- 1dd700a8d927 gf fails on "foo/bar.txt:1:2" on Windows
- 6e703f778fe7 handle argv not present in nvim_get_chan_info
- 56dc8b9212ef heap-buffer-overflow in file_name_in_line
- 74b2f6c3d956 ignore non-existent properties during header generation
- f5a09f1b0352 invoke changed_bytes when rewriting <Tab> char #25125
- b8273c9a3396 lua annotations
- 69d49727d776 luacheck
- 4ce3159e24e1 missing case in setxattr error handling (#26176)
- 41fb98d6fab5 move fswatch linux check inside of vim.schedule (#27824)
- ba58c6f8a44c only attempt to close timer if not already closing (#26047)
- b400b947f368 prevent child processes from inheriting ui channel file descriptors
- 99b8a343e197 quick update, squash later
- 83b51b36aa46 raise TS min version
- a090d43d61b5 splitting of big UI messages
- 2424c3e6967e support UNC paths in vim.fs.normalize
- 43e76cc3462b tostring(vim.version()) fails if build is NIL #24097
- 8c7a8be27437 transposed xcalloc arguments (#28695)
- 35f453f65df2 type warnings in shared.lua
- f112ac73bd34 unreliable "checkhealth completions" test
- b32b5b2711ed use BEL to terminate OSC 11 request (#26335)
- d95e3a4c9c8f use no_ff instead of ffdos as condition
- a1bec02c1e10 use snprintf instead of sprintf
- ca887b80a911 version-range < and <= #23539
- c1ee187f8214 vim.loop in luv threads (#23924)
- fe4583127f0a vim.validate() order is not deterministic #28377
- be8b15200d70 windows timeouts have exit code 1
- 1f8fb7c00048 :let: fix error when applying operator to boolean option (#24030)
- 5a3752889c5b NVIM_APPNAME: show error message if $NVIM_APPNAME is invalid
- c4ad15ae324f PVS/V009: add top-level message
- 128e194f64b0 PVS/V1001: variable is assigned but is not used
- 1bbbca267d05 PVS/V547: expression is always true/false
- 592e4472da5f PVS/V564: the '|' operator is applied to bool type value
- 30d311ebcf94 PVS/V592: expression is enclosed by parentheses twice
- 3ecd45ded044 api: allow negative column arguments for nvim_buf_set_text (#23501)
- 3ac952d4e27f api: avoid assertion when autocmd group id is 0 (#23210)
- b2a8a9314798 api: avoid immediate TextChanged with nvim_create_buf (#25492)
- ef7ae66eef4e api: avoid integer truncation
- b1e24f240bae api: avoid open_win UAF if target buf deleted by autocmds
- 0a81ec14a4c0 api: better topline adjustments in nvim_buf_set_lines
- c18f3cfcdb8f api: crash after nvim_win_set_config title/footer validation error (#26606)
- aa4e47f704c5 api: disallow some more functions during textlock
- 22d9338afcea api: disallow win_set_buf from changing cmdwin's old curbuf (#24745)
- da979ae04b7a api: do not re-apply win_config.style when missing
- 344906a08f09 api: do not update grid position in nvim_win_set_cursor (#28235)
- 22205f36a621 api: don't change title when setting buffer in a window (#23492)
- 711a2f5ff67d api: don't leak memory with nvim_win_get_ns (#27570)
- 1cf51a07a6bf api: don't set coladd of mark (#26648)
- 5fd1bac65ed0 api: don't use stl 'fillchar' for "use_statuscol_lnum" (#27501)
- a3751f5de22f api: dont change curwin for nvim_win_set_height
- 1ff4562502e1 api: dont change curwin for nvim_win_set_width
- 59fed8bb6457 api: extmark highlight groups not always included in details (#23179)
- 9b9030ff2ca8 api: fix inconsistent behavior of topline touched in recent refactor
- fc2a56fe61a9 api: fix set_lines viewport adjustment, but this time good
- b7763d7f6b7f api: get virtual text with multiple hl properly (#25307)
- b3be7b741386 api: handle NUL in nvim_err_write() and nvim_out_write() (#25354)
- 132bbd1cbd49 api: handle clearing out last line of non-current buffer
- d942c2b9432d api: handle win_split_ins failure properly
- 5cfdaaaeac0f api: ignore 'autochdir' when renaming other buf (#28376)
- 2fc234372883 api: ignore 'autochdir' when setting buf in other win (#28371)
- 7367838359bf api: limit depth of nvim_cmd (#27225)
- 0da27e9bdec1 api: load buffer first on nvim_buf_set_lines (#25823)
- 4e5c633ed487 api: make getting explicit empty hl in virtual text work (#28697)
- d05d63a18ff8 api: make nvim_get_hl not return non-existing groups
- a70eae57bd44 api: make open_win block only enter/leave events if !enter && !noautocmd
- 5d58136cccc7 api: make open_win/win_set_config check if splitting allowed
- 4ec8fd43bfdf api: make width/height for split by nvim_open_win work (#28341)
- b1577d371a6d api: make win_set_config with "win" for splits need "split/vertical"
- 0330dd9e69de api: mark nvim__complete_set as experimental #28579
- d22172f36bbe api: more intuitive cursor updates in nvim_buf_set_text
- b051b131f5ce api: nvim_buf_get_offset in a new buffer with zero or one lines
- e0453d7f5743 api: nvim_cmd{cmd="win_getid"} parsed as :winsize #24181
- 6091df6b7a06 api: nvim_create_buf assert fails if autocmds set &swapfile
- d5c23d72a5e4 api: nvim_create_buf leaks memory if buffer is loaded early
- b7708eac24c2 api: nvim_get_hl should return default flag
- a741c7fd0465 api: nvim_parse_cmd error message in pcall() #23297
- e55a502ed413 api: open_win fire Buf* events when !enter && !noautocmd if entered early
- a873f33993ef api: open_win fire BufWinEnter for other buffer when !enter && !noautocmd
- e7c262f5553c api: patch some cmdwin/textlock holes
- a9968912b741 api: redundant error when using `nvim_cmd` (#24010)
- dbcba26bf1e4 api: revert unintended change of optional bool params
- b25753381c60 api: set script context when using nvim_set_hl (#28123)
- d3ea9a04bc73 api: update "w_scwidth" in nvim_eval_statusline()
- c971f538ab87 api: update grid cursor in nvim_win_set_cursor()
- 130cb4815a5c api: use a conditional stack for nvim_cmd (#26341)
- cf9f002f31c8 api: use correct buffer for "range" in nvim__redraw (#28614)
- 77118d0da8ba api: use text_locked() to check textlock
- bcb70eeac480 api: win_set_config autocmds crash when moving win to other tabpage
- 233649bc7577 api: win_set_config fires unnecessary autocmds
- b52d15853e89 api: win_set_config set tp_curwin of win moved from other tabpage
- 54022a2946ac api: win_set_config update statuslines after removing splits
- a9cd8467cbd5 api: wrong nvim_buf_set_extmark error for invalid hl_mode
- 4d3a38ac074f api, lua: handle setting v: variables properly (#25325)
- 92760a7f42a9 api, lua: make blank lines in a message work properly (#24244)
- 08fc1ebbaa49 api/buffer: fix handling of viewport of non-current buffer
- 24e3ee9d07e1 api/options: validate buf and win
- 139e6f68f937 autocmd: API functions accept garbage after event name #25523
- 02d00cf3eed6 backup: E1509 when writing extended attr to symlink (#28014)
- 746a153bc1a1 base64: only check padding if leftover index is set (#25854)
- 533e01a75b71 base64: properly handle embedded NULLs when decoding (#28349)
- 095bd8d0f834 buffer: do not filter help buffer
- e5d9b15044d5 buffer_updates: correct buffer updates when splitting empty line
- 11865dbe3917 build: better deps for doc
- ffaf74f1477d build: distinguish vim.mpack from global require'mpack'
- f9416470b15b build: include FindPackageHandleStandardArgs
- ade42d531bcc build: teach cmake about vvars
- da7178cbbf4e builtin: fix incorrect optional fields for fn.sign_define
- 6fa0f303d7f0 builtin: parameter mismatch between winsaveview and winrestview
- 3159a2c28f5e change: update fold after on_bytes (#26364)
- 342c7da4bd2c channel: use os_write() instead of fwrite() for stderr (#26689)
- cd6458123fb4 charset: fix wrong display of 0xffff (#24158)
- 603f3b36a4d5 checkhealth: error in node.js check #28348
- b0978fca6b82 checkhealth: fix crash due to incorrect argument type
- 7f94a032e1cf checkhealth: shell_error and cpanm module
- bfdec5b0e719 clang: null pointer dereference in parse_msgpack #25389
- 1027ccac6d0a clangd: check size of array before applying qsort on it
- cdd801746943 clangd: set block pointer to null in case map is empty
- 6851b265ba1d clipboard: don't pass --foreground to wl-copy (#25481)
- c3de6524a53d clipboard: ignore exit caused by signal #23378
- 3128cff6b198 clipboard: increase OSC 52 wait timeout (#25936)
- 46ceefb52be6 clipboard: make getreg() accurate for clipboard registers (#26740)
- d2983dcdb1ca clipboard: make osc52 work with PUC Lua (#26014)
- e51e52417550 cmake: restore previously undocumented workround, now documented
- 3688735c2b63 cmdline: don't redraw 'tabline' in Ex mode (#24123)
- c72d877c3374 cmdline: wrong 'incsearch' highlighting after :redraw (#27947)
- bc67bbe4469b codelens: add buffer and line checks before displaying codelens (#23887)
- 2b1a6e759709 colorscheme: add missing LSP groups
- 0c850add3ece colorscheme: default statusline groups usability #26921
- 8b2365369503 colorscheme: link LSP semantic tokens to treesitter groups
- 62e0e0349c00 colorscheme: try .lua files in 'rtp' before .vim files in 'pp' (#23727)
- eca72def1f08 colorscheme: typo
- d4bd6b1eaab3 colorscheme: use explicit normal foreground in syntax groups
- 3c724fe1f3ef column: 'statuscolumn' not drawn after virt_lines with "n" in 'cpo' (#22967)
- cdc028e97d98 column: add truncated width during estimation for 'statuscolumn'
- e89071522cb0 column: always set b_signcols.max
- c126a3756a09 column: apply numhl signs when 'signcolumn' is "no" (#26167)
- 2ded2e75f4a6 column: avoid exceeding configured 'signcolumn' width
- b50fdcba4a1d column: clear "b_signcols" before moving saved marks
- 13d50c3b13fb column: clear "b_signcols" when marktree is cleared
- ec7453804421 column: correct width after truncated 'statuscolumn' error (#26737)
- 2bdef6dd2a75 column: don't overflow sign column with extmark signs (#23854)
- bab4bcdefbda column: don't reset 'statuscolumn' width after it has been drawn
- c509f4907bf7 column: fill 'statuscolumn' clickdefs with evaluated width (#26891)
- 25e62697c32e column: fix wrong cursor with 'statuscolumn' and cpo+=n (#24268)
- dbf6be296df6 column: full redraw with 'stc, 'rnu' and inserted lines (#27712)
- 7d0a23973b7d column: handle unprintable chars in 'statuscolumn' (#24198)
- 0db6946b39fd column: handle w_redr_statuscol at end filler lines (#27365)
- 97122eaa1cbe column: ignore empty signcols range (#28177)
- 967c7abde3c6 column: keep track of number of lines with number of signs
- f871fee8b699 column: pass kFalse when initializing "b_signcols.count"
- 44d4f0357341 column: rebuild status column when sign column is invalid
- c6864b0d146f column: redraw 'statuscolumn' on wrapped lines with 'relativenumber'
- 35cec0de4acd column: redraw and update signcols for paired extmark
- d88814ef68b3 column: remove sign from line it was previously on with undo
- df399ea0d20e column: reset decor state before starting from top
- 5a4e0b837f90 column: use a single path for sign sorting (#27431)
- a878e02d5de7 column: use maxwidth to allocate/fill 'statuscolumn' click defs #24190
- 783b0aba4116 completion: check that healthcheck name is string (#28458)
- fbeef0d4ef1a completion: don't add backslashes to runtime pattern (#24296)
- cdc8bacc7945 completion: filter results with complete+=f (#26029)
- af8500af6457 completion: improve popup window position (#26739)
- d1b2a5cf5fa5 completion: make sure the buffer name is valid (#25975)
- e9b9a86cd5a5 context: don't crash on invalid arg to nvim_get_context (#25977)
- fdaf6bc5573f context: don't leak memory on multiple invalid objects (#25979)
- 55be4a4e26ea coverity: dead code #25562
- 6d698c86d0bd coverity: unhandled retval for marktree_itr_get_overlap() #26518
- 6f49ed58c3d8 coverity/348240: memory leak in put_view()
- 9d48266bed96 coverity/471380: null dereference in get_local_additions()
- ae48d965d70c coverity/477623,477624: guard null pointer dereference in kv_concat_len (#27022)
- 2b0acacb3c2c decor: allow adding providers during redraw
- 5ca330859cf2 decor: check decor kind before accessing union field (#27205)
- 60d320dea3fe decoration_provider: don't leak memory on error (#24410)
- 65738202f8be decorations: better approximation of botline #24794
- 2accf2480530 decorations: crash with revised mark with changed decoration flags
- a0e9ef09d7af decorations: do not apply sign highlight id as range attr id
- fba17d5b882e decorations: fix imbalanced sign count
- 444f37fe510f decorations: incompletely displayed line should also get decorations
- dc48a98f9ac6 decorations: validate botline for on_win
- 328a2373514a defaults: auto-close terminal for &shell with args (#28276)
- 5aa1ba3efe05 defaults: background detection in tmux (#26557)
- 5e98439f6d8c defaults: diagnostic mappings descriptions #28646
- ccb5a76e5a2c defaults: don't use nvim_feedkeys in default mappings (#24520)
- 85cb0b0ddc59 defaults: make terminal autoclose not block other events (#27581)
- aa1d0ac095dc defaults: only repeat macro for each selected line if linewise (#28289)
- eef2aedff631 defaults: remove tmux background detection passthrough (#27571)
- 5b45efbee6eb defaults: set 'fsync' #26034
- 8df374237814 defaults: use augroup for default autocommands (#26933)
- a8e4ee2f2b43 defaults: validate 'channel' before responding to OSC request (#27594)
- 6318edadc32a defaults: visual hash (#) on text with "?"
- abd380e28d48 defaults: visual mode star (*,#) is fragile
- b9a0e762f1d7 defaults: visual star (*) on text with "?"
- 9b4b23493d69 defaults: wait until VimEnter to set background (#26284)
- 72e3d8c3f949 deps: bump luv to 1.48.0-2
- 87db6d894ad2 deps: make sure --force-config takes effect
- 7aad4643f9a6 deps: remove stray conflict marker
- 8a6716682e6e deps: restore functionality of USE_EXISTING_SRC_DIR
- d4dc884012e8 deps: restore functionality of USE_EXISTING_SRC_DIR
- d27214331815 diagnostic: always return copies of diagnostic items (#25010)
- 29d5ff6ac4ea diagnostic: check for sign namespace instead of sign group
- 3d8f0cb695a5 diagnostic: check if delete failed in `qf_fill_buffer()` (#25932)
- 89ffdebd20fd diagnostic: fix typing on field |diagnostic-severity|
- 83635e4e3db9 diagnostic: get border from config (#28531)
- 96f59e1b9902 diagnostic: invalid col number  compare in next_diagnostic (#28397)
- ad76b050eb2c diagnostic: open_float on multi-line diagnostics #28301
- 37011bc45ef3 diagnostic: rename buffer → bufnr in type annotation (#23042)
- 50284d07b6f0 diagnostic: typing
- a4fc3bb0e68c diagnostic: vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273
- add1b10b7901 diagnostic: virtual_text prefix function should have index and total (#25801)
- 35f475d0a51a diagnostics: if buffer not loaded, skip handlers that set extmark (#25628)
- 5a25dcc5a4c7 diff: filler lines for hunks bigger than linematch limit (#24676)
- 2f9ee9b6cfc6 doc: improve doc generation of types using lpeg
- c4417ae70c03 doc: prevent doxygen confusion
- 67f53323446d docs: clean up non-docstring comments for vimdoc gen
- ae7020c667b5 docs: fix TSNode incorrect signatures
- ab65a98adba4 docs: ignore_invalid #24174
- f40df63bdca3 docs: make lines not overflow in vim docs
- 0a90e4b05ad3 docs: match DocSearch style with site theme
- 0d149bb18639 docs: the runtimepath is not the runtime path
- 957d05d16bc8 docs: too much whitespace around <pre> blocks #24151
- d931b829e926 docs: vimdoc syntax errors
- 036da0d07921 docs: vimdoc syntax errors
- 17c59e417f81 docs: vimdoc syntax errors
- 34b57508a78b drawline: check filler_todo in place of removed draw_state (#27889)
- 455bca1ba86a drawline: combine extmark highligh with area hl correctly
- 329979715063 drawline: consider position in linebuf for foldcolumn (#26803)
- 889f81c65fa4 drawline: don't invoke on_line for filler line (#28219)
- 2b9d3869f8f3 drawline: don't use temporary "v" variable when not needed (#26777)
- 06694203e51e drawline: fix missing Visual hl on double-width fold char (#24308)
- d5488633f68f drawline: initialize linebuf_attr to 0 instead of -1 (#27840)
- e9280a68f7ea drawline: initialize variable
- 2819718873a3 drawline: initialize variable
- 36941942d609 drawline: inline virt_text hl_mode inside syntax/extmark hl (#24273)
- 37b73cf14b11 drawline: make cursorlineopt=screenline work with resized grid
- be1d09c42722 drawline: missing NUL termination when drawing TAB (#27307)
- 5b3144781137 drawline: update prev_ptr after getting syntax attrs (#27072)
- 14839c5d18c2 edit: backspace adds extra spaces for inline virtual text (#28005)
- 267e90f31d18 edit: don't go to Terminal mode when stopping Insert mode (#27033)
- b2e8c0df2062 edit: fix K_EVENT interfering with 'digraph' (#24258)
- 143a17833280 editorconfig: add missing root validation (#23462)
- cbbda3bcd775 editorconfig: check that buffer is valid (#23922)
- abb8c2c453d1 editorconfig: do not set 'endofline'
- df2f5e39127e editorconfig: highlight properties with dashes (#24407)
- dc45fb4655f5 editorconfig: only warn once on errors
- cdbc3e3f3e95 editorconfig: syntax error regression
- bf0c69e50410 eval: correct failure return value for readfile/blob (#27722)
- 5b312cd5f676 eval: make has('pythonx') work properly (#27739)
- 0e4086b74189 eval: prevent double-free in garbage collection (#22990)
- 12d123959f56 eval: properly support checking v:lua function in exists() (#27124)
- b8c34efe3399 eval: skip over v:lua properly (#27517)
- ad2fad9a3b07 event-loop: flush UI when no input is available (#25728)
- 672556525893 event-loop: process input before events (#27358)
- 58a1ef8e6a93 events: avoid unnecessary CursorMoved (#24675)
- bf9e92c81c3c events: check for WinResized/WinScrolled in terminal mode (#27226)
- dd24ea819507 events: don't expand non-file as file name
- 774a32e5fe73 events: null dereference in autocmd functions
- a8cfdf43bc62 events: trigger VimResume on next UI request (#24426)
- a114a21eff58 ex_getln: initialize pointer with NULL
- 9e7c4fe57915 exception: remember whether message is multiline (#25351)
- 4a098b97e535 excmd: append original command to error message
- 75d9c413d492 excmd: make :def unknown rather than unimplemented (#23150)
- f1dd75c2af40 exitfree: don't use ex commands to close windows in free_all_mem()
- 79a558277b1b extmark: fix crash when stepping out from internal node
- a78fd18ed92d extmark: fix cursor position with both left and right gravity inline text
- 320e9c1c2181 extmark: only invalidate unpaired marks on deleted rows
- 8e97edb93f01 extmark: restore extmarks when completing original text
- 2d33a766a17b extmarks: `U` changed_bytes after extmark_splice (#26501)
- 23c21e763074 extmarks: account for rightleft when drawing virt text (#25262)
- d54156ed08b8 extmarks: blending space shouldn't overwrite wide char (#26960)
- 54225bdb021e extmarks: crash with sign after many marks
- 65b1fd00a7aa extmarks: do not remove decor from invalid old marks
- 437d35dbf7d9 extmarks: do not remove invalid marks from decor upon deletion
- a05bbc60eaf2 extmarks: don't position overlay virt_text halfway a char (#24027)
- 4dd43e31db8f extmarks: don't show virt lines for end mark (#23792)
- dfa8b582a64a extmarks: draw TAB in virt_text properly with 'rl' (#25381)
- a6e4793bafa0 extmarks: draw virt_text below diff filler lines properly (#25170)
- 958cc22836f1 extmarks: empty inline virt_text interfering with DiffText (#24101)
- 0534ad8ca57b extmarks: empty inline virt_text interfering with Visual highlight
- 31a51acdc353 extmarks: fix heap buffer overflow caused by inline virtual text (#23851)
- 9c41a81dec15 extmarks: fix virt_text_hide off-by-one hiding (#23795)
- a6dd67f5b66c extmarks: fix virt_text_hide with 'nowrap' and multibyte (#23757)
- 818d7f6daf30 extmarks: fix win_col virt_text drawn on wrong screen line (#25264)
- c4df2f08b689 extmarks: fix wrong highlight after "combine" virt_text (#24281)
- b65cd7ff1a0a extmarks: fix wrong virt_text position after wrapped TAB (#25168)
- 4c7cec4e2934 extmarks: handle inline virt_text with empty chunk (#24005)
- ee3d4f6b90d0 extmarks: handle overwriting right half of wide char (#26951)
- f4f1ce1d167c extmarks: hide inline virt_text properly with 'smoothscroll' (#24106)
- 34a786bc4959 extmarks: inline virt_text support multiple hl groups (#25303)
- 5a6c7c805b8b extmarks: make empty "conceal" respect &conceallevel = 1 (#24785)
- 510e1f131b56 extmarks: make right_align and win_col work on wrapped line (#23759)
- 215244f74950 extmarks: missing "spell" and "conceal" in details (#27116)
- 35e50d79c630 extmarks: overlay virt_text position after 'showbreak' (#25175)
- a0790558c309 extmarks: priority order of inline and non-inline virt_text (#27532)
- b52bd8a2dea8 extmarks: properly handle virt_text on next screen line (#25166)
- a376d979bda1 extmarks: redraw line on adding/removing conceal (#27463)
- 2d9e063a63f8 extmarks: redraw pre-undo position (#27437)
- 2137edbd4f15 extmarks: redraw properly with scoped inline virt_text (#27569)
- 1cc358aed6fd extmarks: restore old position before revalidating
- 0818d655288e extmarks: skip virt_text if it is out of window (#25658)
- 19d63563e1cc extmarks: splice earlier when opening new line (#28108)
- 362df0f7938a extmarks: wrong display when changing text with virt_lines (#24879)
- d5a85d737aa2 f_wait: flush UI before blocking (#25962)
- 81f67b79e8a3 file_search: path with spaces in finddir() and findfile() (#25493)
- a69c72063994 fileio: fix off-by-one in rename_with_tmp (#27780)
- c6c21db82b31 filetype: add typing and dry (#24573)
- 020d1f626a3f filetype: call on_detect before setting buffer filetype
- fdf5013e218c filetype: correctly detect bash-fc-{id} files as "sh"
- d6f406db4527 filetype: don't use fnamemodify() with :e for extension (#27976)
- 670c7609c855 filetype: make sure buffer is valid before call nvim_buf_call (#24922)
- af38b46a2574 filetype: return on_detect function when matching by file contents
- 2955c921ceaf filetype: use unexpanded file name (#27931)
- e32af31ee89c flake: clang-tools moved to nativeBuildInputs (#26955)
- fd08fd3de302 float: add fixd option
- 884470124db3 float: allow floating window in cmdline area
- 9ecb43b6372f float: apply 'winblend' to title/footer highlight (#25999)
- 898371fc9fae float: don't relative flaot win itself
- fcdfbb430377 float: fix some other crashes with :unhide or :all (#25328)
- 3ea124a8d9f0 float: improve error message when reconfig failed (#25076)
- c5abf487f19e float: make "fixed" work with relative=win (#25243)
- 03e8b5fc91f9 float: make bufpos work properly with resized parent grid
- 437ed3cee2d2 float: trigger winnew event when float window create
- f5953edbac14 float: update position of anchored windows first (#25133)
- 9de157bce4b6 float: win_get_bordertext_col returning negative column number (#25752)
- 5f18dd301375 float: wrong position when bufpos is set
- 0e01e815520e folds: allow overlay virtual text on folded line (#23892)
- ee986ee0449b folds: combined Folded and Visual highlights (#23752)
- ded01a819ab0 folds: don't show search or match highlighting on fold (#24084)
- 811140e276a6 folds: fix missing virt_lines above when fold is hidden (#24274)
- 678548a2b446 folds: show Folded highlight in Visual selection (#23741)
- 58f94861442d folds: update folds in Insert mode with fdm=indent (#24402)
- 38e38d1b401e fs: allow backslash characters in unix paths
- 8a7e3353eb5b fs: make `normalize()` work with '/' path (#24047)
- ae5095cac9b2 fs: use generics for better typing
- e4da418ba838 fs.lua: normalize slash truncation (#23753)
- 06fcf71bd095 fswatch: --latency is locale dependent
- 502a7a0558b0 ftplugin: respect runtimepath ordering
- 03a2c5b77200 ftplugin: source Lua files after Vimscript files per directory (#23801)
- be5cf3383622 gen_help_html: type warnings, spell_ignore_files #27254
- 6c35fb421e88 gen_lsp.lua: improve type name, and fix wrong type inheritance
- 214b12513277 gen_lsp.lua: no notifications in lsp.Methods #24530
- 765729a145d3 gen_vimdoc: INCLUDE_DEPRECATED not generating docs for deprecateds
- ccf328172bac gen_vimfn_types: don't include tag before signature's line (#24492)
- 86c9d8b53cd9 gen_vimvim: correctly add aliases to vimAutoEvent (#23429)
- 240c41e1af55 genvimvim: add special abbreviations of :delete (#23172)
- 51ea753747c7 genvimvim: generate prefixed boolean options properly (#27487)
- 9f32deba56ea grid: add start column when getting char on line (#25627)
- 4ed1c2a8afc7 grid: don't draw beyond max column (#26172)
- 9c202b9392f3 grid: handle clearing half a double-width char (#27023)
- 6a486c44e66f gx: move to to _init_default_mappings #24420
- 67b2ed1004ae gx: visual selection, expand env vars
- e39b6d0c5241 health: "attempt to concatenate nil"
- 7ffe450173d2 health: check for _host_prog variables properly (#23014)
- 50cd5ed360ee health: check more "old" files
- f6dcc464f220 health: check unmatching python_glob as empty table (#28215)
- 6818ba271cb4 health: clients may not support watchfiles #28710
- 03a021f378e8 health: combine python and virtualenv healthchecks (#23004)
- c67efe3a9c5b health: correctly expand and resolve PYENV_ROOT (#26953)
- 88eb0ad149d3 health: fix tmux RGB capability detection (#26886)
- cde4892b4955 health: fix typo in function name
- 63a17322dd83 health: improve python executable check error handling (#26954)
- ba88fd886ae8 health: malformed call to warn() #26217
- 8c6f97bef89d health: properly use the value of $PYENV_VERSION (#23109)
- c8ebb04e92c9 health: replace healthFoo with DiagnosticFoo (#23475)
- 843c1bed95d3 health: stop job properly on timeout (#23877)
- 96d0c709b66e healthcheck: expand vimrc variable (#28379)
- 4229bbe514b7 helptags: make multibyte help tags work properly (#23975)
- 7b6d041baed7 heredoc: allow missing end marker for scripts
- a2f17e97ec2d highlight: add `FloatFooter` to 'highlight_defs.h' (#25577)
- 837f26809373 highlight: add `Nvim{Light,Dark}Gray{1,2,3,4}` colors
- 8afb3a49c076 highlight: add create param in nvim_get_hl
- f8ea49cfe1f4 highlight: add force in nvim_set_hl
- 4ce0ada0d4c8 highlight: add missing g: prefix for colors_name (#22952)
- 03ca36d1f8d0 highlight: apply 'winblend' to NormalNC (#23555)
- 6c3e170e5668 highlight: apply 'winblend' to float border (#25981)
- d4872377fef7 highlight: attr set all when normal attr changed
- dcaf2073369c highlight: combine ColorColumn with low-priority CursorLine (#23017)
- 66925f14de81 highlight: consistently spell "Goldenrod"
- 51836517738b highlight: correct hi command output
- ca7dd33fa783 highlight: don't show CursorColumn on current line (#27848)
- 59289fb987bd highlight: make CurSearch work properly with 'winhl' (#24448)
- b11a8c1b5d39 highlight: remove unnecessary assignment to char_attr for 'spell' (#23713)
- 9a2c98087b90 highlight: update `IncSearch` to link to `CurSearch`
- ab9257575387 highlight: winhl receive wrong argument
- b60a2ab4cb7b inccommand: block errors when parsing command line again (#24374)
- bc5b0da84ec4 inccommand: don't crash with "split" and 'n' flag
- 382ea4d40282 inccommand: don't preview in Ex mode (#26587)
- c1c2a1b5dd1d inccommand: don't save information of a buffer twice (#24501)
- ef44e597294e inccommand: don't set an invalid 'undolevels' value (#24575)
- ba9f86a9cee5 inccommand: improve preview buffer number handling (#27087)
- 643bea31b867 inccommand: restrict cmdpreview undo calls (#24289)
- 1dba570e63ed inccommand: save and restore '[ and '] marks (#26442)
- 35ffe58ea4a3 inccommand: update topline after moving cursor (#27341)
- a14c7809181c input: set termkey buffer size to read stream capacity
- b61575ba70f8 intro: clear intro if new buffer is shown in focused float
- 9530a2301680 intro: link showing intro to state at start
- 0570a19c8a84 intro: make intro explicitly stateful
- d1a30221fcb1 intro: redrawing intro exposing pseudo-randomness
- 21360523cd3d intro: still show intro message with floating window
- 6b96122453fd iter: add tag to packed table
- 2ee8ace217b8 iter: make pipeline termination conditions consistent (#24614)
- 94894068794d iter: remove special case totable for map-like tables
- 57ccd8241735 job-control: fix use after free (#25223)
- 1c71c32b2910 job-control: make jobwait() flush UI after hiding cursor (#25927)
- e057b38e7037 json: allow objects with empty keys #25564
- af6537bc66e2 jumplist: Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461
- 017ff93b020e keycodes: recognize <t_xx> as a key (#24700)
- 6709f7f8f130 keycodes: simplify S- properly when D- is present (#27316)
- 4447cefa4815 l10n: update Japanese translations (#27856)
- 7d17ab5b6f07 l10n: update Ukrainian translations (#26819)
- 908843df61fc languagetree: apply `resolve_lang` to `metadata['injection.language']`
- e353c869cea4 languagetree: don't treat unparsed nodes as occupying full range
- 6b5f44817e93 languagetree: remove double recursion in LanguageTree:parse
- f5530bf566f6 linematch: initialize array
- 766f4978d6cb lint: lint warnings #24226
- 5465adcbab29 lint: use tbl_contains
- 0804034c07ad loader: cache path ambiguity #24491
- 89135cff030b loader: remove cyclic dependency on vim.fs (when --luamod-dev)
- 66c66d8db8ab loader: reset hashes when running the loader
- ec80e4cb4d31 log: increase size of buffer for nvim instance name
- 4d0f4c3de9cb lsp: E403 if doc contains multiple codeblocks #24458
- 20c331915f4e lsp: SignatureHelp docstring is not escaped #16702
- 01691c5447d9 lsp: abort callHierarchy on no result (#28102)
- 9abced6ad95f lsp: account for border height in max floating popup height (#25539)
- 3e016fa8d4f7 lsp: actually send diagnostic-tags back to the server
- 37d8e5045936 lsp: add "silent" option to vim.lsp.start (#28478)
- 2e1f5055acde lsp: add assertion for explicit bufnr in apply_text_edits (#27614)
- 542c910a1d3f lsp: add missing LSP semantic token highlight links
- be5e36115410 lsp: add param assert in client_is_stopped (#23857)
- ac0e8323dc82 lsp: add parentheses to generated union array types (#27560)
- 0fcbda59871e lsp: add snippet regression test (#27618)
- e42fdaad21a8 lsp: add spacing for inlay hints separately #24079
- 48bcc7b9710d lsp: advertise workspace.didChangeConfiguration capability (#26028)
- c07dceba335c lsp: allow Lua pattern chars in code action filter (#24041)
- 3bf887f6e08f lsp: always return boolean in lsp.buf_client_attach (#24077)
- 966eb8e0b3be lsp: announce publishDiagnostics.dataSupport (#24442)
- 39fc340276a4 lsp: avoid assertion when `client_hints` do not exist (#28461)
- 47dbda97d2f4 lsp: buffer messages until connected to server (#28507)
- adbe7f368397 lsp: call `on_list()` even for single location (#25830)
- 15983cf2c64c lsp: cancel session when leaving snippet region (#25762)
- 816b56f878f0 lsp: cancel watchers when closing a client
- 9b8a0755390b lsp: change `silent` in lsp.start.Opts to optional (#28524)
- d3e035257473 lsp: check if inlay hints are enabled for a buffer before disabling (#24074)
- fa9a85ae468b lsp: clean up duplicate and unused meta type annotations
- 8bd6f7c20b40 lsp: clear codelens on LspDetach (#24903)
- 97c0a52416b8 lsp: correct deprecation message #28403
- aa62898ae329 lsp: correct the error message's cmd on spawning (#27632)
- 77a9f3395bd1 lsp: create codelens request parameters for each buffer (#27699)
- 9281edb334a3 lsp: create per client params in lsp.buf.code_action
- 39cc38a87b29 lsp: defer writing error msgs (#27688)
- 1b679ac19287 lsp: define LspInlayHint highlight group #24073
- dc8c086c7e73 lsp: directly rename the existing buffers when renaming (#27690)
- c1a95d9653f3 lsp: disable didChangeWatchedFiles on Linux
- 2fde6295df8c lsp: display initialization errors (#25409)
- 94127cb5df0a lsp: do not add extra indentation
- cc87dda31a5b lsp: do not assume client capability exists in watchfiles check (#24550)
- 0fe0cf5adaab lsp: do not cancel snippet when selecting placeholder (#25835)
- 073035a030f5 lsp: don't register didChangeWatchedFiles when capability not set (#23689)
- 5eee633c9705 lsp: don't start additional client if attach failed (#28744)
- 21fa19f3e8c1 lsp: don't use hl_mode = combine for inlay hints #24276
- 96b94f8d7777 lsp: duplicate on_detach, on_reload callbacks #24067
- b95b6ed9753d lsp: empty commands should not be considered executable (#28216)
- c3c673cdeca2 lsp: enable() does not activate inlay hints on open buffers #28629
- b2c26a875b9d lsp: ensure buffer is not attached more than once
- fa0a25dcb3a4 lsp: error in reset_timer on second detach #24117
- 72e64a1afef0 lsp: extra "." when completing with tsserver #24646
- 031088fc0aff lsp: filetype matching to documentSelector in dynamic capabilities (#25425)
- d191bdf9d5e5 lsp: fix attempt to call non existent function (#24212)
- dd3fa6457355 lsp: fix dynamic registration of code actions (#23826)
- ce4ea638c703 lsp: fix incorrect typing and doc for `vim.lsp.rpc`
- f487e5af019c lsp: fix infinite loop on vim.lsp.tagfunc
- 74bd4aba57d2 lsp: fix multi client handling workspace_folder methods (#18839)
- 5e5f5174e3fa lsp: fix off-by-one error for omnifunc word boundary
- ba6761eafe61 lsp: fix omnicomplete in middle of the line (#25787)
- 075a72d5ff9d lsp: fix relative patterns for `workspace/didChangeWatchedFiles` (#23548)
- 840e1864c2de lsp: handle NUL bytes in popup text (#25612)
- 345bd91db28e lsp: handle absence of a trailing newline #25194
- 0e9a33572dc7 lsp: handle adjacent snippet tabstops
- 853f647da618 lsp: handle reverse lookup in capabilities
- 91f67fabe69f lsp: handle stale bufnr on LspRequest autocmd trigger (#24013)
- 849d82b80b85 lsp: handle stale bufnr on LspRequest autocmd trigger (#27981)
- 2eecb1b85dbb lsp: highlight active parameter in signature help #25663
- e55e80d51ca5 lsp: inlay hints: "Failed to delete autocmd" when closing buffer #24469
- 7968322e7a20 lsp: inlay_hint nil reference error #24202
- ba8f19ebb67c lsp: lint warnings, default offset_encoding #24046
- 330444994616 lsp: log unknown diagnostic tags instead of showing a warning (#25705)
- 251ca45ac948 lsp: markdown code fence should allow space before info string #24364
- add7e106d59b lsp: noisy warning about offset_encodings #24441
- c235959fd909 lsp: only disable inlay hints / diagnostics if no other clients are connected (#24535)
- 1dacf2ecee36 lsp: prevent code-lens refresh from becoming a permanent  no-op (#28228)
- 597ecf751603 lsp: re-add client.commands and mark private
- 94a904b453e5 lsp: reapplying already-applied hints #24114
- 4ecc71f6fc73 lsp: reduce diagnostics and add more types (#23948)
- bc7f86209d39 lsp: redundant vim.snippet.jumpable #28560
- ee156ca60ede lsp: refactor escaping snippet text (#25611)
- 2ecba65b4ba7 lsp: remove unknown LSP protocol property (#24345)
- 7311958e1238 lsp: remove unnecessary file load/write when renaming (#27621)
- e14e75099883 lsp: rename LspProgress data.result => data.params #28632
- f0e61e6d92b5 lsp: rename fails on missing parent directory #27291
- b413f5d048ab lsp: rename undofile when renaming (#27684)
- d09957e0a06f lsp: rename: load and list new buffer if attached to window (#27408)
- 7668f89d5be6 lsp: replace @private with @nodoc for public client functions (#24415)
- 52823616bc4d lsp: replace bug-prone ternary operation #28627
- 5282d3299c9b lsp: restore marks after apply_text_edits() #14630
- cf5f1492d702 lsp: revert change to buf.clear_references() #24238
- 917172dd9680 lsp: semantic token defer loading
- 3be2536ca039 lsp: send back diagnostic tags to the server
- a37d568082ad lsp: send empty "added" list when removing workspace folder #24440
- 3c6d971e5488 lsp: set extra info only when it has a value (#23868)
- 5785c32f1115 lsp: set fallback client name properly
- 370232dbefb9 lsp: track snippet deletion
- ca26ec34386d lsp: use only utf-16 in default client positionEncodings (#23903)
- b302da9ad220 lsp: use percentage format on lsp.status (#23971)
- 2c8f36a3b0b6 lsp: use plain loop for non-list-like table of protocol values
- 8addd27504e6 lsp: when renaming directory, check path prefix of buffer names (#27603)
- 597355deae2e lsp: wrong iterator in registerCapability handler (#24971)
- b2d471ab337e lua: allow nil values in serialized Lua arrays (#26329)
- 68f12e7fcb1f lua: annotate that TSNode functions can return nil (#24621)
- 4ffc20c95152 lua: avoid internal error when :luado deletes lines (#27262)
- 319803822420 lua: correct return value for on_key with no arguments (#25911)
- 84bbe4b0ca93 lua: disallow vim.wait() in fast contexts
- 22eb2ba18336 lua: do not schedule events if Nvim is exiting
- 7d279a09e0fb lua: handle array with holes in luaeval() (#26630)
- c43c745a14dc lua: improve annotations for stricter luals diagnostics (#24609)
- 2f779b94e7fe lua: inspect_pos respect bufnr when get syntax info (#23098)
- e2e63bd04549 lua: make highlight.on_yank use win-local highlight (#27349)
- b40170f7a3ca lua: memory leak when using invalid syntax with exists() (#26530)
- 4ab9c5fa4684 lua: not using global value in vim.opt_global (#25196)
- 20ec4c776a07 lua: only disable vim.schedule() when closing main loop (#26090)
- f150b62423d5 lua: only free luarefs when returning from API (#28373)
- 019077171324 lua: remove uri fragment from file paths (#27647)
- 5aa14e1231b7 lua: return after assert returns assert message (#27064)
- 5331d5772ffb lua: show error message when failing to set variable (#25321)
- 1294e221a205 lua: vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate
- 37c58226a8fd lua: vim.fs typing (#24608)
- 5db076c7ccfe lua: vim.region on linewise selection #25467
- 622b1ae38a36 lua: vim.split may trim inner empty items
- a7df0415ab6a lua2dox: filter out the entire `---@alias` block
- 32e69bd3971c luarc.json: ignore test directory to save memory
- 6f936c9d85a0 man: make :Man with a range work (#25922)
- 59aadf33efc2 man: pass modifiers also to :tag (#27878)
- a9b4dc9614a0 man: set the nested flag for the BufReadCmd autocommand (#26285)
- c8d1d8b2546c man.lua: don't continue on command error (#23009)
- a4c4b39d55db man.lua: hardwrapped manpage is not resized #25646
- 209ed16f57a7 man.lua: return support of all sections
- 3a7c30dc93b9 man.vim: q quits after jump to different tag in MANPAGER modified (#28495)
- 3c667d3e0fe4 mappings: fix mapset() not replacing map with backslash (#26719)
- 0451391ec514 mark: properly init mark views (#22996)
- d432bba4e46c marks: handle switching buffer properly (#25763)
- 62306a29add2 marktree: correct qsort usage
- 585549625d8a marktree: off-by-one error in `marktree_move`
- 34be915f6b93 marktree: preserve ordering in `marktree_move`
- b97d5038f16b marktree: some marks counted twice when checking for overlap
- ad5a155b1f4b mbyte: fix bugs in utf_cp_*_off() functions
- b02823399171 memline: more curbuf stuff
- 91ef26dece6d messages: :map output with ext_messages (#26126)
- eabf9de1dc8c messages: allow more prompt in headless mode with UI (#27905)
- 60fb8a6a8bd9 messages: avoid crash with :intro and ch=0 (#28343)
- 61a0aa6c51fb messages: avoid passing negative length to strnlen() (#28753)
- ca258db15668 messages: clear new lines when increasing 'cmdheight' (#27421)
- c9f47fca8b89 messages: ensure msg_grid is at top at more prompt (#23584)
- 2f17ef1fc4b9 messages: use "Vimscript" instead of "VimL" #24111
- 55dbf5c3798c messages: validate msg_grid before using msg_grid_pos (#26189)
- 4db77017fb7a meta: add nil return types to lpeg functions
- 5198a2555de4 meta: cleanup lpeg operators
- dae6770b761a meta: include vim.json
- d31f7648ecaf mkspell: prevent Unicode character overflow (#23760)
- a8a93e517f9e mouse: avoid dragging after click label popupmenu callback (#26187)
- 6a2a37b1e102 mouse: avoid dragging when clicking next to popupmenu (#26201)
- 091eb4c8c720 mouse: click after eol with conceal and virtual text (#27897)
- 2b475cb5cc21 mouse: click on 'statuscolumn' with 'rightleft' (#25090)
- e25cf47ad3e1 mouse: click on empty line with 'foldcolumn'
- 84a4319545ad mouse: cmdline click registered as statuscolumn (#23163)
- bf52fb7193ca mouse: copy the line before syntax matching (#24320)
- 5fb4c397a1da mouse: drag vsep of window with 'statuscolumn' (#24462)
- dc394b9641f9 mouse: fix popup menu position check with winbar (#23456)
- 7c1921e9d69e mouse: fix popup_setpos position check with ext_multigrid (#23436)
- a3fba5cafcf1 mouse: handle folded lines with virt_lines attached to line above (#23912)
- 64aa0f7d0b70 move: check for filler lines properly (#28307)
- 366d0c7887f7 move: check the correct buffer (#25698)
- 780509aedf5c move: fix using the wrong window (#28312)
- 60d1e3e4718a msgpack: store grid line event as a value
- c52dfb6e8408 normal: don't check conceal when pressing 'r' (#27892)
- 088cdf69e3fa normal: make "g$" work properly with resized grid
- a1ded1b113d2 oldtest: always use a 64-bit int for swapfile block number
- 92c59c39c3d9 ops.c: remove duplicate u_save_cursor()
- 9d01385c6ca6 options: `'modified'` showing incorrect value for scratch buffers
- c3e176f6e24e options: correct condition for calling did_set_option() (#25026)
- 9af03bcd4712 options: do not change inccommand during preview (#25462)
- 796df966f3cb options: don't update curswant for 'winhl' or 'winbl' (#27515)
- d956bc63795f options: setting 'scroll' with resized grid (#26628)
- c8a27bae3fae options: use a union for def_val (#27169)
- 804c828e681e optionstr.c: incorrect use of curbuf/curwin
- a9df0c5ce6ca osc52: do not use 'vim.iter' (#27218)
- 5d75d9aef2b6 osc52: enable OSC 52 by default in tmux sessions (#26072)
- 86c2213b5e45 osc52: use `p` for primary selection instead of `s` (#26076)
- 104565909798 osc52: use nvim_chan_send() to stderr for copying (#26690)
- e3bd04f2aff7 pager: handle consecutive newlines properly (#27913)
- 1e7e9ee91f73 path: accept special characters on Windows (#25424)
- f064e72b9b9c path: check return value of append_path() (#28309)
- f5eabaa9407a path: restore space separation in 'path' (#25571)
- 908f247c224d plines: count 'showbreak' for virtual text at eol
- a0cbf1d8d5a6 plines: cursor position with 'showbreak' and resized grid (#28067)
- 317038e7cb11 plines: don't return very large height on very long line (#24260)
- 7955c90621bb plines: folded lines with virt_lines attached to line above
- 35c3275b4896 plines: handle inline virtual text after last char (#24241)
- cbadb39d16c1 plines.c: initialize cts_max_head_vcol (#24855)
- fc14928719df printf: make positional %zd and %zu work (#24722)
- d0b3c8721921 process: avoid potential data race on exit (#27769)
- 3e569d440b8e process: close handles and timer in pty_process_close() (#27760)
- 268066e01400 process: start pty process eof timer on main thread (#27625)
- 49983387ffd5 prompt: emit change event for prompt newline (#28260)
- 7bd6bd1ef721 provider: cannot detect python3.12 #25316
- 61ecb3e16c22 provider/pythonx: import the correct module (#25342)
- 540941ef8320 pum: don't position too far with resized parent grid (#23442)
- f186224dfcf8 pum: fix missing rightmost column with 'rightleft' (#23445)
- 8bc973c6f59c pum: fix missing scrollbar with 'rightleft' (#23448)
- a7550a20e0c3 pum: handle right-click menu repositioning with multigrid (#26975)
- fbaa27877361 pum: make :popup position correctly with float border
- a3dfe1bc89a5 pum: position properly with ext_multigrid (#23336)
- c1331a65dd12 pum: show right-click menu above cmdline area (#23298)
- dd0e77d48a84 query_error: multiline bug
- 5ac2e47acc99 redo: make redo of Lua mappings in op-pending mode work (#23566)
- 60f69014a801 redraw: multibyte characters are wrapped at the end of a line (#23696)
- cb34d0ddd086 redraw: overwrite double-width char with virt_text properly (#23708)
- d184933cdc70 redraw: update Visual selection properly with splits (#27343)
- 54044e6dce2f release.sh: ze version is too big
- cce9460524aa remote: make --remote-expr print to stdout (#23980)
- bde59e81473f remote: restore previous --remote-expr output formatting (#23988)
- 468292dcb743 rpc: "grid_line" event parsing crashes (#25581)
- 4d4092ac9e98 rpc: assertion failure due to invalid msgpack input
- 8921d56053bb rpc: do not crash when no input is consumed
- c422722b2e94 rpc: fix hang with channel closed while waiting for response
- adb225834540 rplugin: dont create data dir if it's a broken symlink #25726
- 65dd3c1180ce ruler: show ruler of curwin with no statusline in cmdline
- f5231d61a541 runtime: add commentstring for C# ftplugin (#23039)
- 3387dc4a463c runtime: add commentstring for D ftplugin (#25362)
- 615b48aca6bd runtime: add more Nvim-only highlight groups to Vim syntax
- aee6f08ce12a runtime: do not allow breakcheck inside runtime path calculation
- df297e3c2bd7 runtime: don't set gx mapping if already mapped (#24262)
- 9176b5e10a6b runtime: respect 'fileignorecase' when sourcing (#24344)
- dbb840da01c7 runtime: respect 'rtp' order for all runtime files (#24335)
- 70a00492962d runtime: source c ftplugins in correct order (#27377)
- d431a4d410f0 runtime: source old color scheme in bundled color schemes (#26641)
- 3ab6f60dc80d runtime: update 'vim' color scheme to use new tree-sitter groups
- 67fba9affa14 runtime/tutor: don't try to close fold when there is none (#24953)
- ee56daebb646 shada: update deleted marks (#24936)
- 517dfdf0fcf5 shada: update marks when using delmarks! (#24978)
- 4d52b0cf6705 showcmd: clear the rest properly (#28420)
- fcd9905291c0 sign: avoid deleting from sign map while looping over it (#27158)
- a84b454ebe66 sign: do not error when defining sign without attributes (#26106)
- a5ade3c63d88 snippet: correct indent with newline
- 4625394a767f snippet: do not add extra indent on newlines (#28538)
- a1bdf2852d6d snippet: remove misleading comment about TM_FILENAME_BASE (#26465)
- 8c044f0862f4 spell: always accept ':' as filename char in 'spellfile' (#27172)
- a803bff89c89 spell: extmark with spell=false should disable spell (#23400)
- eceb2dffce39 spell: splice extmarks on :spellrepall (#23929)
- aa65bd478a98 startup: "nvim -l foo.lua" may not set arg0 #24161
- 628f6cce80de startup: don't truncate when printing with -l (#24216)
- c0fa721adeab startup: make recovery mode work without --headless (#24477)
- 8e739af064de startup: multiprocess startuptime #26790
- 8f10362cdc58 startup: only send one default_colors_set event during startup
- 559c4cfd52e3 startup: run embedded Nvim with real path (#24282)
- b21d96011934 startup: set full_screen when in ex_mode
- 9637b7dae417 startup: stop TUI properly when quitting at swap dialog (#25337)
- d7359a87425d startup: trigger UIEnter for the correct channel (#25860)
- 01e273c340b5 statuscolumn: don't update clicks if current width is 0 (#24459)
- afd0c648a89f statuscolumn: force full redraw when signcolumn is invalid (#24859)
- dc6c11394b73 statuscolumn: update number hl for each screen line (#25277)
- a4b240080435 statusline: also allow right click when 'mousemodel' is "popup*" (#23258)
- 4ecf6fdfd857 statusline: bail out properly on negative row (#23535)
- 70da793c5eda statusline: corrupted screen with minwid sign item in 'statuscolumn' (#23823)
- d7bb19e0138c statusline: fill for double-width char after moving items (#24207)
- 54f560203897 statusline: fix uninitialized variable and possible overflow
- 9f15a18fa57f statusline: missing offset when showing 'keymap' (#27270)
- 7b973c71ea84 statusline: redraw when VIsual_mode changes (#23933)
- dbc0fa9bd683 stdpath: remove duplicate directories (#26653)
- 1907abb4c278 stream: do not close handle if it is already closing (#26537)
- 9dd48f7832f4 substitute: properly check if preview is needed (#23809)
- 9753cda591e2 syntax: use correct diagnostic group for checkhealth (#23538)
- 400b7842a983 termcap: escape escapes in passthrough sequence (#26301)
- e52784221118 termcap: only call callback for requested capabilities (#26546)
- ffeb31c2f962 termcap: set 'nested' on TermResponse autocommand
- b7831c7f996b termcap: use tmux passthrough sequence when running in tmux (#26281)
- e6d3f87dfd71 termdebug: handle partial lines passed to callback (#22950)
- c413b42c456b termdebug: prompt mode breaks with &splitbelow set
- 8aad4b84250a termdebug: send SIGINT when interrupting…
justinmk added a commit that referenced this pull request May 16, 2024
For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim).
Following is a list of fixes/features commits.

BREAKING
--------------------------------------------------------------------------------
- 649dd00fe2e5 remove deprecated functions
- 0370e4def0c0 remove neovim qt
- 880f7d12fea3 remove vimballs (#22402)
- c48b1421af28 rename "playground" => "dev" #23919
- 2f85bbe61513 rewrite TOhtml in lua
- abe39f2b243d api: change return type of nvim_win_text_height to Dict (#24365)
- 7180ef690180 api: nvim_open_win: noautocmd blocks all autocmds #28192
- 700cab00680f events: trigger CursorMoved later on switching window (#23711)
- e4a136f71375 ex_cmds: remove :behave
- e5e0bda41b64 lsp: add vim.lsp.status, client.progress and promote LspProgressUpdate (#23958)
- 5a363ccac8ff lsp: deprecate trim_empty_lines
- 5a2536de0c4b lsp: move changetracking to separate file (#26577)
- 58618d208acd lsp: promote LspRequest to a full autocmd and enrich with additional data (#23694)
- 1b9ccd38a12f lsp: rename vim.lsp.get_active_clients to get_clients (#24113)
- eb1f0e8fcca7 lsp: replace snippet parser by lpeg grammar
- 448907f65d67 lsp: vim.lsp.inlay_hint.get(), enable(), is_enabled() #25512
- 7caf0eafd83b lua: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440)
- 747264320c6d mappings: remove #n as a notation for a function key (#17318)
- f7da47225706 options: graduate shortmess+=f flag
- c3d1d9445c70 options: graduate some more shortmess flags
- 5df4fdf253f9 options: make OptionSet `v:` values use typval
- 881d17a11393 options: remove compatible behaviours for vim 5.0 and earlier
- e19cc9c9b715 options: unify `set_option` and `set_string_option`
- db590e96d593 startup: "nvim -l" message does not end with newline #24215
- 2ca076e45fb3 treesitter: incremental injection parsing
- f5dc45310941 treesitter: new standard capture names
- fc0ee871de2f treesitter: remove deprecated legacy injection format
- 6debb1852355 treesitter: remove duplicated diagnostic code (#24976)
- 18da6964cc61 vim.iter: remove vim.iter.map/filter/totable #26138
- 9b028bd64f42 vim.iter: rename xxback() => rxx() #28503
- 8d4a53fe6e20 vim.json: remove global options, "null", "array_mt" #24070
- 40ce8577977f vim.ui: change open() to return `result|nil, errmsg|nil` #28612
- e0d92b9cc20b vim.ui: change open() to return pcall-like values #28502

FEATURES
--------------------------------------------------------------------------------
- a66b0fdfaa35 NVIM_APPNAME supports relative paths #25233
- c0beb8173fe2 add .luarc.json (#24592)
- 14b7ffcf89bc add __call typing for vim.inspect()
- ca7e488cfeb1 add link in issue template to minimal config template
- 4bf47222c973 add vim.text module (#26069)
- 0ebc4de0ff93 allow opting in to builtin clipboard providers (#28083)
- e8d3c4cccb9d generate types and docs for v variables
- 29fe883aa916 ignore swapfile for running Nvim processes #25336
- 28d1640dd604 improve return type annotations for vim.api.*
- 199a990c9e4e report "build" in vim.version() #23925
- e68879325393 tostring(vim.version())
- c559ab0ae6be update unicode tables (#27317)
- ecdb6465e272 vim.version() returns a Version object
- 4b60267f82ef :source: source current ft=lua buffer as Lua code (#23802)
- 428edcde7068 api: add forward and back mouse buttons
- 037ea6e786b5 api: add nvim__redraw for more granular redrawing
- ca9f6f56949d api: add nvim_tabpage_set_win (#27222)
- db8fe63a9398 api: add nvim_win_text_height (#24236)
- 16513b303375 api: allow floats to be opened in non-current tabpage (#28480)
- 6b4970f6e0ac api: allow open_win/win_set_buf in the cmdwin in some cases
- 5d921e28c1cc api: allow win_close in cmdwin to close wins except previous
- 472271199e48 api: allow win_hide to close cmdwin or non-previous windows
- 6bba4becedae api: make nvim_open_win support non-floating windows (#25550)
- b162adbb7ca4 api: pass 0 to nvim_get_chan_info for current channel (#27321)
- 42bbc4fabcf9 api: support abbreviations in nvim_set_keymap
- 98a4ed0a1106 api: support getting abbreviations (#26868)
- d3d7d763f3e1 builtin: improve types
- 748bc4d22d35 clipboard: add OSC 52 clipboard support
- db57df04b6af clipboard: enable OSC 52 clipboard provider by default (#26064)
- 734848dc1a9e colorscheme: add semantic tokens modifiers to builtin color scheme
- 1e0996b57230 colorscheme: update treesitter groups
- 73de98256cf3 comment: add built-in commenting
- ae4ca4edf89e complete: support f flag for complete buffer part
- 01c51a491330 completion: support completing more string options
- ae3685798dea decoration: allow conceal_char to be a composing char
- 30a5c28c8740 decoration_provider: log errors as error messages
- 9711370c2645 defaults: add :Inspect to right-click menu (#28181)
- 2613ba5000d4 defaults: enable 'termguicolors' by default when supported by terminal
- 513fc461957f defaults: improve :grep defaults #28545
- c26dc1f77c79 defaults: map Q and @x to repeat in Visual mode (#26495)
- 8758c6fb875f defaults: set g:netrw_use_errorwindow = 0 #24179
- 1d81d7a268f5 defaults: treat "•" as a list item prefix #24623
- 20b38677c22b defaults: use ripgrep (rg) for 'grepprg' if available
- 61063653b06b defaults: visual CTRL-R for LSP mappings #28537
- 4ee656e4f357 diagnostic: add `vim.diagnostic.count()` (#26807)
- 73034611c25d diagnostic: add default mappings for diagnostics (#16230)
- fc6d713dd806 diagnostic: add support for many namespaces filtering in GetOpts (#28045)
- 5ed9916a28b9 diagnostic: enable(…, opts)
- e7801775060e diagnostic: filter diagnostics by specific severities (#24736)
- b13e63db1dbc diagnostic: goto functions jump to highest severity (#28490)
- 26765e8461c1 diagnostic: is_enabled, enable(…, enable:boolean)
- 9cb7e00b9748 diagnostic: provide more control over virtual text display (#24724)
- ee41153a9458 diagnostic: revert default behaviour of goto_next/prev()
- 07b60efd8058 diagnostic: specify diagnostic virtual text prefix as a function
- a3b39784744f diagnostics: support numhl and linehl for diagnostic signs
- 0381f5af5bdc diff: grouping optimization for linematch algorithm
- 42333ea98dfc docs: generate builtin.txt (#24493)
- 9beb40a4db56 docs: replace lua2dox.lua
- 1d4a5cd18537 eval: exists() function supports checking v:lua functions (#26485)
- 4a1ad676ce0b ex_cmds: no error on :lua with {range} and {code} (#27290)
- c2433589dca0 ex_cmds: ranged :lua #27167
- b04286a187d5 extmark: support proper multiline ranges
- 1c032ad703a1 extmark: window scoped extmark
- 68cb4a7405ea extmarks: add "undo_restore" flag to opt out of undo-restoring
- 4e6f559b8c5f extmarks: add 'invalidate' property to extmarks
- c249058758af extmarks: add sign name to extmark "details" array
- bbd5c6363c25 extmarks: add virt_text_repeat_linebreak flag (#26625)
- 15e77a56b711 extmarks: subpriorities (relative to declaration order) (#27131)
- f0884f21fa0c extmarks: support hl_mode "combine" for inline virt_text (#24099)
- 372aa2eb3db3 float: add fclose command
- 35570e4a11be float: implement footer
- 4200a0f1678c float: support toggle show float window
- 1233ac467de7 fold: transparent foldtext
- 71530cc97257 folds: support virtual text format for 'foldtext' (#25209)
- 38b9c322c97b fs: add vim.fs.root (#28477)
- e3e6fadfd828 fs: expose join_paths as `vim.fs.joinpath` (#23685)
- bc67cf3ccdf9 gen_help_html: add anchors to help tags #25112
- b0cf9c5feeae gen_help_html: ignore pi_netrw.txt errors
- 81d8fce8f9e1 gen_help_html: non-default vimdoc.so parser
- da09f9b551ba gen_lsp.lua: protocol.Methods #24504
- f41496ce74fb gen_lsp.lua: sort by name, handle failure #24504
- 3692fd4c873a gen_lsp.lua: validate CLI args #26514
- 2ff2785c396e health: checkhealth buffer can show in a split window (#26714)
- 4382d2ed564b health: fold successful healthchecks #22866
- d1bc6fca7123 health: list attached buffers in LSP report #23561
- 2877672d70e7 health: make :checkhealth support more split modifiers (#26731)
- ddda5e0a488b help: hide filename of "gO" outline using conceal #27547
- e72c0cd92090 highlight: Allow hyphens (-) in highlight group names (#24714)
- 986bf7e78d09 highlight: add `FloatFooter` highlight group
- 574519d9d68f highlight: tweak default color scheme
- 64a14026d76b highlight: update default color scheme
- a79694a08ede issue_template: instruct not to include a package manager
- 69ffbb76c237 iter: add `Iter.take` (#26525)
- cebc00603ea3 l10n: update Turkish translations #24246
- fec51229c4a0 l10n: update Ukrainian translations (#24882)
- 996dd36c7732 lsp: add actionable advice to lsp client quit error msg (#24510)
- 4ff3217bbd87 lsp: add fswatch watchfunc backend
- 643546b82b4b lsp: add handlers for inlay hints (#23736)
- 317c80f460a7 lsp: add method filter to get_active_clients (#24319)
- 688860741589 lsp: add more LSP defaults (#28500)
- 0fe86f7e2403 lsp: add opts paramater to vim.lsp.codelens.refresh
- 131a1ee82d15 lsp: add original LSP Location as item's user_data in locations_to_items (#23743)
- f1775da07fe4 lsp: add snippet API (#25301)
- db0ec84fb46b lsp: add type annotations for lsp.util.locations_to_items (#26694)
- f190f758ac58 lsp: add vim.lsp.buf.subtypes(), vim.lsp.buf.supertypes() (#28388)
- 451bc50d40ee lsp: deprecate severity_limit
- e9b85acfbb8d lsp: enable workspace/didChangeWatchedFiles by default (#23190)
- 4a09c178a190 lsp: fallback to code-action command on resolve failure (#25464)
- 2f22ed6a00db lsp: handle multiple clients in omnifunc (#24381)
- 63b340855156 lsp: implement textDocument/diagnostic (#24128)
- 5e3cf9fb4bc7 lsp: improve control over placement of floating windows (#24494)
- 15641f38cf4b lsp: include positionEncodings in default client capabilities
- ddd92a70d2aa lsp: initial support for dynamic capabilities (#23681)
- ca5de9306c00 lsp: inlay hints #23984
- 350d81856473 lsp: inlay_hint.is_enabled({filter}) #28523
- 33e1a8cd7042 lsp: map K to hover by default #24331
- 97bea3163a3f lsp: more annotations
- 37079fca58f3 lsp: move inlay_hint() to vim.lsp (#24130)
- 12c2c16acf70 lsp: opt-in to dynamicRegistration for inlay hints (#24102)
- a49924a31852 lsp: remove notify from vim.lsp.buf_detach_client (#25140)
- 8149bd089e15 lsp: report fswatch errors
- fb54e6980ea6 lsp: set client offset_encoding if server supports positionEncoding
- 96e19533f60a lsp: set kind in select call for codelens #23889
- 9af355964306 lsp: set workDoneToken in initialize request (#28182)
- f736b075d371 lsp: snippet parsing using lpeg
- 134b9ec48361 lsp: soft deprecate vim.lsp.for_each_buffer_client (#24104)
- 63f9c2da9aab lsp: support completion itemDefaults
- 3f788e73b345 lsp: support connect via named pipes/unix domain sockets (#26032)
- 7e36c8e972f0 lsp: support for choice snippet nodes
- 5c40f3e86a81 lsp: support vim.lsp.ListOpts.loclist in location_handler()
- abd2352bd8b8 lsp: update LSP protocol 3.18 typings to date (#28730)
- cfd4a9dfaf5f lsp: use treesitter for stylize markdown
- d5063f4b290e lsp: vim.lsp.inlay_hint.enable(nil) applies to all buffers #28543
- c0952e62fd0e lua: add `vim.system()`
- 9248dd77ac58 lua: add hl priority opts on yank (#23509)
- 642586977158 lua: add meta file for vim submodules (#24525)
- 3734519e3b4b lua: add noref to deepcopy
- 7c661207cc43 lua: add ringbuffer (#22894)
- 877d04d0fb83 lua: add vim.func._memoize
- ab1edecfb7c7 lua: add vim.iter (#23029)
- d675bd01b1e7 lua: allow vim.F.if_nil to take multiple arguments (#22903)
- c379d72c4905 lua: allow vim.wo to be double indexed (#20288)
- e52c25b7617a lua: deprecate vim.tbl_add_reverse_lookup
- f1dfe32bf555 lua: enable(enable:boolean, filter:table) #28374
- 5b40a1c09dda lua: implement Iter:join() (#26416)
- c01e624b0762 lua: more specific error messages for vim.api type checking
- e1ff2c51cad7 lua: pass keys before mapping to vim.on_key() callback (#28098)
- 2db719f6c2b6 lua: rename vim.loop -> vim.uv (#22846)
- 6c0812d92e0c lua: specific error messages for type checking `opts` params
- fd089c8e50c2 lua: typing for vim.fn.* (#24473)
- 302d3cfb96d7 lua: use callable table as iterator in vim.iter (#23957)
- 51c754b62e79 lua: use keyset type information
- 8e5c48b08dad lua: vim.fs.normalize() resolves ".", ".." #28203
- 7e70ca0b4808 lua: vim.keycode (#22960)
- 9e86f473e0f4 lua: vim.region accepts getpos() arg (#22635)
- 4d04feb6629c lua: vim.tbl_contains supports general tables and predicates (#23040)
- 48d533272e57 lua-types: types for vim.api.* (#24523)
- 25e729970712 man: allow opening pages in current window (#27861)
- 08db61b19b8f man: respect 'wrapmargin' when wrapping man pages (#24091)
- f9944a78bcd3 meta: add types for vim.lpeg
- deb6fd670479 msgpack-rpc: show actual request id in error message
- 01fe6b9e6a84 msgpack_rpc: support out-of-order responses on `msgpack-rpc`
- 619407eb548c nvim_open_term: convert LF => CRLF (#26384)
- e98decf9a68e quickfix: support -q - to read 'errorfile' from stdin (#27303)
- 7b0123dd6a06 remote: avoid --remote-ui infinite loop (#24465)
- cca6c4c6986a rpc: allow empty string key in msgpack => Vim conversion
- d0d4160dd13f runtime: highlight hl groups in syntax.txt (#25050)
- 5f4895200a49 scripts: add lsp_types.lua (#23750)
- 4e6096a67fe9 server: allow embed with listen (#25709)
- 170c890dca8f shortmess: "q" flag fully hides recording message (#27415)
- d3582e102b7b statuscolumn: re-evaluate for every screen line (#25885)
- 224f303ee54c stdlib: add vim.base64 module (#25843)
- fa131de9adb7 tabline: middle mouse button now closes tab (#27522)
- c855eee919f2 term: enable reflow by default (#21124)
- cd1b14f027f3 termdebug: improve `:Evaluate` floating window (#26621)
- cffdf102d4f0 terminal: allow :terminal to take modifiers (#15427)
- 0c89854da189 terminal: close shell terminals automatically
- 7589336120a2 terminal: respond to OSC background and foreground request (#17197)
- beca827212b1 terminal: trigger TermRequest autocommand events (#22159)
- c6ec7fa8d741 treesitter: add 'injection.self' and 'injection.parent'
- 6cfca21bac6b treesitter: add `@injection.filename`
- 5d8ab32f3871 treesitter: add a query editor (#24703)
- cb0a1a10b224 treesitter: add bash parser and queries
- bb15fa035610 treesitter: add folding for `InspectTree` (#27518)
- 9ce1623837a8 treesitter: add foldtext with treesitter highlighting (#25391)
- 31c4ed26bc27 treesitter: add injection language fallback (#24659)
- 28f54a787823 treesitter: add lang parameter to the query editor (#25181)
- 88c8803aa167 treesitter: add python parser and queries
- c194acbfc479 treesitter: add query_linter from nvim-treesitter/playground (#22784)
- af040c3a079f treesitter: add support for setting query depths
- 11844dde81c4 treesitter: bundle markdown parser and queries (#22481)
- 5e6240ffc24e treesitter: handle quantified fold captures
- f69658bc355e treesitter: highlight Lua files by default (#26824)
- 988b472d902e treesitter: highlight help files by default (#26347)
- 845d5b8b6419 treesitter: improve query error message
- 189fb6203262 treesitter: improved logging (#23638)
- c0b99bb1de8d treesitter: show root nodes in :InspectTree (#26944)
- cb46f6e46726 treesitter: support URLs (#27132)
- ff6092b4ee3c treesitter: update Bash parser and queries to v0.21.0
- 8dda630ae942 treesitter: update C parser and queries to v0.21.0
- 3836eeb90182 treesitter: update C queries from upstream
- aca4ad430bdc treesitter: update Lua parser and queries to v0.1.0
- 5e875ae8d07d treesitter: update Markdown parsers and queries to v0.2.1
- 8a3385dde75f treesitter: update Python parser and queries to v0.21.0
- 20dcbaaaf880 treesitter: update Vim parser and queries to v0.4.0
- 987dff6713af treesitter: update Vimdoc parser and queries to v2.4.0
- 1384bebd5aa3 treesitter: update query parser to v0.2.0
- 668f16bac779 treesitter: upstream query omnifunc from playground (#23394)
- a478bf936b2a treesitter: use 0-based indexing to show ranges in `:InspectTree`
- ac8ed77afb35 tui: add 'termsync' option (#25871)
- 4ee9e58056a9 tui: query extended underline support using DECRQSS (#28052)
- b4b7ca2d548a tui: support DCS responses in TermResponse event (#26061)
- 622ae2f53e77 tui: support Super and Meta modifiers (#24357)
- a14267036076 tui: support undercurl in WezTerm (#28037)
- 56627ca2423e tui: use TermResponse event for OSC responses (#25868)
- 32b49448b227 tutor: add Japanese tutor #27268
- 9c2270b83459 types: add `test/.luarc.json`
- d3a8e9217f39 ui: add chdir UI event (#27093)
- 6ea6b3fee27d ui: add support for OSC 8 hyperlinks (#27109)
- b72931e70407 ui: allow non-zero 'cmdheight' with ext_messages
- 2615ed879e66 ui: allow to get the highlight namespace
- e38027ef69f7 ui: completeopt support popup like vim
- 2e4e12756a69 ui: indicate margins for the area used by win_viewport
- efa9b299a7cb ui: inline virtual text
- dacd34364ff3 ui-ext: make 'mousehide' into proper ui_option (#25532)
- 43ded8d35844 version: unverbose ":version", ":verbose version" #24195
- 0a598c13b186 vim.deprecate: only issue warning if neovim version is high enough
- a767c046f4e6 vim.iter: add Iter:flatten  (#26786)
- af6e6ccf3dee vim.ui: vim.ui.open, "gx" without netrw
- fa4b02fa67e5 vim.version: add `vim.version.le` and `vim.version.ge`
- 27a566f3f8e0 vimdoc: support Markdown code blocks (#25127)

FIXES
--------------------------------------------------------------------------------
- f5573fba3d46 Remove nested for_each_tree in TSTreeView (#26328)
- ae28ef327e02 adjust error message for error in UI event callback (#28200)
- ebe489d8f0ed allow multiline message for echoerr (#25380)
- 592bc831ce4b avoid ui_grid_cursor_goto when drawing window separators
- d6483793e1c3 buffer overrun in lmpack_session_receive
- 3bbb0aa3993f checkhealth warning even if init.lua exists #25306
- 5cb906e91cb5 correct versions in deprecation warnings
- 118fd8367c39 deduplicate gen_cflags
- eb4676c67f5d disallow removing extmarks in on_lines callbacks (#23219)
- 6e9b204afbe5 doc errors
- 77d3526a3d08 explain that user should run nvim with -V1 to see more information
- fd791db0eceb fix ASAN errors on clang 17 (#25469)
- bb38c066a965 fix compiler warning from clang
- 478273a4233d fix iter_matches call in query linter (#27496)
- bb7324292cda flush UI state before blocking in vim.wait (#25938)
- 44d4ae448d0a function was renamed (#23772)
- 1dd700a8d927 gf fails on "foo/bar.txt:1:2" on Windows
- 6e703f778fe7 handle argv not present in nvim_get_chan_info
- 56dc8b9212ef heap-buffer-overflow in file_name_in_line
- 74b2f6c3d956 ignore non-existent properties during header generation
- f5a09f1b0352 invoke changed_bytes when rewriting <Tab> char #25125
- b8273c9a3396 lua annotations
- 69d49727d776 luacheck
- 4ce3159e24e1 missing case in setxattr error handling (#26176)
- 41fb98d6fab5 move fswatch linux check inside of vim.schedule (#27824)
- ba58c6f8a44c only attempt to close timer if not already closing (#26047)
- b400b947f368 prevent child processes from inheriting ui channel file descriptors
- 99b8a343e197 quick update, squash later
- 83b51b36aa46 raise TS min version
- a090d43d61b5 splitting of big UI messages
- 2424c3e6967e support UNC paths in vim.fs.normalize
- 43e76cc3462b tostring(vim.version()) fails if build is NIL #24097
- 8c7a8be27437 transposed xcalloc arguments (#28695)
- 35f453f65df2 type warnings in shared.lua
- f112ac73bd34 unreliable "checkhealth completions" test
- b32b5b2711ed use BEL to terminate OSC 11 request (#26335)
- d95e3a4c9c8f use no_ff instead of ffdos as condition
- a1bec02c1e10 use snprintf instead of sprintf
- ca887b80a911 version-range < and <= #23539
- c1ee187f8214 vim.loop in luv threads (#23924)
- fe4583127f0a vim.validate() order is not deterministic #28377
- be8b15200d70 windows timeouts have exit code 1
- 1f8fb7c00048 :let: fix error when applying operator to boolean option (#24030)
- 5a3752889c5b NVIM_APPNAME: show error message if $NVIM_APPNAME is invalid
- c4ad15ae324f PVS/V009: add top-level message
- 128e194f64b0 PVS/V1001: variable is assigned but is not used
- 1bbbca267d05 PVS/V547: expression is always true/false
- 592e4472da5f PVS/V564: the '|' operator is applied to bool type value
- 30d311ebcf94 PVS/V592: expression is enclosed by parentheses twice
- 3ecd45ded044 api: allow negative column arguments for nvim_buf_set_text (#23501)
- 3ac952d4e27f api: avoid assertion when autocmd group id is 0 (#23210)
- b2a8a9314798 api: avoid immediate TextChanged with nvim_create_buf (#25492)
- ef7ae66eef4e api: avoid integer truncation
- b1e24f240bae api: avoid open_win UAF if target buf deleted by autocmds
- 0a81ec14a4c0 api: better topline adjustments in nvim_buf_set_lines
- c18f3cfcdb8f api: crash after nvim_win_set_config title/footer validation error (#26606)
- aa4e47f704c5 api: disallow some more functions during textlock
- 22d9338afcea api: disallow win_set_buf from changing cmdwin's old curbuf (#24745)
- da979ae04b7a api: do not re-apply win_config.style when missing
- 344906a08f09 api: do not update grid position in nvim_win_set_cursor (#28235)
- 22205f36a621 api: don't change title when setting buffer in a window (#23492)
- 711a2f5ff67d api: don't leak memory with nvim_win_get_ns (#27570)
- 1cf51a07a6bf api: don't set coladd of mark (#26648)
- 5fd1bac65ed0 api: don't use stl 'fillchar' for "use_statuscol_lnum" (#27501)
- a3751f5de22f api: dont change curwin for nvim_win_set_height
- 1ff4562502e1 api: dont change curwin for nvim_win_set_width
- 59fed8bb6457 api: extmark highlight groups not always included in details (#23179)
- 9b9030ff2ca8 api: fix inconsistent behavior of topline touched in recent refactor
- fc2a56fe61a9 api: fix set_lines viewport adjustment, but this time good
- b7763d7f6b7f api: get virtual text with multiple hl properly (#25307)
- b3be7b741386 api: handle NUL in nvim_err_write() and nvim_out_write() (#25354)
- 132bbd1cbd49 api: handle clearing out last line of non-current buffer
- d942c2b9432d api: handle win_split_ins failure properly
- 5cfdaaaeac0f api: ignore 'autochdir' when renaming other buf (#28376)
- 2fc234372883 api: ignore 'autochdir' when setting buf in other win (#28371)
- 7367838359bf api: limit depth of nvim_cmd (#27225)
- 0da27e9bdec1 api: load buffer first on nvim_buf_set_lines (#25823)
- 4e5c633ed487 api: make getting explicit empty hl in virtual text work (#28697)
- d05d63a18ff8 api: make nvim_get_hl not return non-existing groups
- a70eae57bd44 api: make open_win block only enter/leave events if !enter && !noautocmd
- 5d58136cccc7 api: make open_win/win_set_config check if splitting allowed
- 4ec8fd43bfdf api: make width/height for split by nvim_open_win work (#28341)
- b1577d371a6d api: make win_set_config with "win" for splits need "split/vertical"
- 0330dd9e69de api: mark nvim__complete_set as experimental #28579
- d22172f36bbe api: more intuitive cursor updates in nvim_buf_set_text
- b051b131f5ce api: nvim_buf_get_offset in a new buffer with zero or one lines
- e0453d7f5743 api: nvim_cmd{cmd="win_getid"} parsed as :winsize #24181
- 6091df6b7a06 api: nvim_create_buf assert fails if autocmds set &swapfile
- d5c23d72a5e4 api: nvim_create_buf leaks memory if buffer is loaded early
- b7708eac24c2 api: nvim_get_hl should return default flag
- a741c7fd0465 api: nvim_parse_cmd error message in pcall() #23297
- e55a502ed413 api: open_win fire Buf* events when !enter && !noautocmd if entered early
- a873f33993ef api: open_win fire BufWinEnter for other buffer when !enter && !noautocmd
- e7c262f5553c api: patch some cmdwin/textlock holes
- a9968912b741 api: redundant error when using `nvim_cmd` (#24010)
- dbcba26bf1e4 api: revert unintended change of optional bool params
- b25753381c60 api: set script context when using nvim_set_hl (#28123)
- d3ea9a04bc73 api: update "w_scwidth" in nvim_eval_statusline()
- c971f538ab87 api: update grid cursor in nvim_win_set_cursor()
- 130cb4815a5c api: use a conditional stack for nvim_cmd (#26341)
- cf9f002f31c8 api: use correct buffer for "range" in nvim__redraw (#28614)
- 77118d0da8ba api: use text_locked() to check textlock
- bcb70eeac480 api: win_set_config autocmds crash when moving win to other tabpage
- 233649bc7577 api: win_set_config fires unnecessary autocmds
- b52d15853e89 api: win_set_config set tp_curwin of win moved from other tabpage
- 54022a2946ac api: win_set_config update statuslines after removing splits
- a9cd8467cbd5 api: wrong nvim_buf_set_extmark error for invalid hl_mode
- 4d3a38ac074f api, lua: handle setting v: variables properly (#25325)
- 92760a7f42a9 api, lua: make blank lines in a message work properly (#24244)
- 08fc1ebbaa49 api/buffer: fix handling of viewport of non-current buffer
- 24e3ee9d07e1 api/options: validate buf and win
- 139e6f68f937 autocmd: API functions accept garbage after event name #25523
- 02d00cf3eed6 backup: E1509 when writing extended attr to symlink (#28014)
- 746a153bc1a1 base64: only check padding if leftover index is set (#25854)
- 533e01a75b71 base64: properly handle embedded NULLs when decoding (#28349)
- 095bd8d0f834 buffer: do not filter help buffer
- e5d9b15044d5 buffer_updates: correct buffer updates when splitting empty line
- 11865dbe3917 build: better deps for doc
- ffaf74f1477d build: distinguish vim.mpack from global require'mpack'
- f9416470b15b build: include FindPackageHandleStandardArgs
- ade42d531bcc build: teach cmake about vvars
- da7178cbbf4e builtin: fix incorrect optional fields for fn.sign_define
- 6fa0f303d7f0 builtin: parameter mismatch between winsaveview and winrestview
- 3159a2c28f5e change: update fold after on_bytes (#26364)
- 342c7da4bd2c channel: use os_write() instead of fwrite() for stderr (#26689)
- cd6458123fb4 charset: fix wrong display of 0xffff (#24158)
- 603f3b36a4d5 checkhealth: error in node.js check #28348
- b0978fca6b82 checkhealth: fix crash due to incorrect argument type
- 7f94a032e1cf checkhealth: shell_error and cpanm module
- bfdec5b0e719 clang: null pointer dereference in parse_msgpack #25389
- 1027ccac6d0a clangd: check size of array before applying qsort on it
- cdd801746943 clangd: set block pointer to null in case map is empty
- 6851b265ba1d clipboard: don't pass --foreground to wl-copy (#25481)
- c3de6524a53d clipboard: ignore exit caused by signal #23378
- 3128cff6b198 clipboard: increase OSC 52 wait timeout (#25936)
- 46ceefb52be6 clipboard: make getreg() accurate for clipboard registers (#26740)
- d2983dcdb1ca clipboard: make osc52 work with PUC Lua (#26014)
- e51e52417550 cmake: restore previously undocumented workround, now documented
- 3688735c2b63 cmdline: don't redraw 'tabline' in Ex mode (#24123)
- c72d877c3374 cmdline: wrong 'incsearch' highlighting after :redraw (#27947)
- bc67bbe4469b codelens: add buffer and line checks before displaying codelens (#23887)
- 2b1a6e759709 colorscheme: add missing LSP groups
- 0c850add3ece colorscheme: default statusline groups usability #26921
- 8b2365369503 colorscheme: link LSP semantic tokens to treesitter groups
- 62e0e0349c00 colorscheme: try .lua files in 'rtp' before .vim files in 'pp' (#23727)
- eca72def1f08 colorscheme: typo
- d4bd6b1eaab3 colorscheme: use explicit normal foreground in syntax groups
- 3c724fe1f3ef column: 'statuscolumn' not drawn after virt_lines with "n" in 'cpo' (#22967)
- cdc028e97d98 column: add truncated width during estimation for 'statuscolumn'
- e89071522cb0 column: always set b_signcols.max
- c126a3756a09 column: apply numhl signs when 'signcolumn' is "no" (#26167)
- 2ded2e75f4a6 column: avoid exceeding configured 'signcolumn' width
- b50fdcba4a1d column: clear "b_signcols" before moving saved marks
- 13d50c3b13fb column: clear "b_signcols" when marktree is cleared
- ec7453804421 column: correct width after truncated 'statuscolumn' error (#26737)
- 2bdef6dd2a75 column: don't overflow sign column with extmark signs (#23854)
- bab4bcdefbda column: don't reset 'statuscolumn' width after it has been drawn
- c509f4907bf7 column: fill 'statuscolumn' clickdefs with evaluated width (#26891)
- 25e62697c32e column: fix wrong cursor with 'statuscolumn' and cpo+=n (#24268)
- dbf6be296df6 column: full redraw with 'stc, 'rnu' and inserted lines (#27712)
- 7d0a23973b7d column: handle unprintable chars in 'statuscolumn' (#24198)
- 0db6946b39fd column: handle w_redr_statuscol at end filler lines (#27365)
- 97122eaa1cbe column: ignore empty signcols range (#28177)
- 967c7abde3c6 column: keep track of number of lines with number of signs
- f871fee8b699 column: pass kFalse when initializing "b_signcols.count"
- 44d4f0357341 column: rebuild status column when sign column is invalid
- c6864b0d146f column: redraw 'statuscolumn' on wrapped lines with 'relativenumber'
- 35cec0de4acd column: redraw and update signcols for paired extmark
- d88814ef68b3 column: remove sign from line it was previously on with undo
- df399ea0d20e column: reset decor state before starting from top
- 5a4e0b837f90 column: use a single path for sign sorting (#27431)
- a878e02d5de7 column: use maxwidth to allocate/fill 'statuscolumn' click defs #24190
- 783b0aba4116 completion: check that healthcheck name is string (#28458)
- fbeef0d4ef1a completion: don't add backslashes to runtime pattern (#24296)
- cdc8bacc7945 completion: filter results with complete+=f (#26029)
- af8500af6457 completion: improve popup window position (#26739)
- d1b2a5cf5fa5 completion: make sure the buffer name is valid (#25975)
- e9b9a86cd5a5 context: don't crash on invalid arg to nvim_get_context (#25977)
- fdaf6bc5573f context: don't leak memory on multiple invalid objects (#25979)
- 55be4a4e26ea coverity: dead code #25562
- 6d698c86d0bd coverity: unhandled retval for marktree_itr_get_overlap() #26518
- 6f49ed58c3d8 coverity/348240: memory leak in put_view()
- 9d48266bed96 coverity/471380: null dereference in get_local_additions()
- ae48d965d70c coverity/477623,477624: guard null pointer dereference in kv_concat_len (#27022)
- 2b0acacb3c2c decor: allow adding providers during redraw
- 5ca330859cf2 decor: check decor kind before accessing union field (#27205)
- 60d320dea3fe decoration_provider: don't leak memory on error (#24410)
- 65738202f8be decorations: better approximation of botline #24794
- 2accf2480530 decorations: crash with revised mark with changed decoration flags
- a0e9ef09d7af decorations: do not apply sign highlight id as range attr id
- fba17d5b882e decorations: fix imbalanced sign count
- 444f37fe510f decorations: incompletely displayed line should also get decorations
- dc48a98f9ac6 decorations: validate botline for on_win
- 328a2373514a defaults: auto-close terminal for &shell with args (#28276)
- 5aa1ba3efe05 defaults: background detection in tmux (#26557)
- 5e98439f6d8c defaults: diagnostic mappings descriptions #28646
- ccb5a76e5a2c defaults: don't use nvim_feedkeys in default mappings (#24520)
- 85cb0b0ddc59 defaults: make terminal autoclose not block other events (#27581)
- aa1d0ac095dc defaults: only repeat macro for each selected line if linewise (#28289)
- eef2aedff631 defaults: remove tmux background detection passthrough (#27571)
- 5b45efbee6eb defaults: set 'fsync' #26034
- 8df374237814 defaults: use augroup for default autocommands (#26933)
- a8e4ee2f2b43 defaults: validate 'channel' before responding to OSC request (#27594)
- 6318edadc32a defaults: visual hash (#) on text with "?"
- abd380e28d48 defaults: visual mode star (*,#) is fragile
- b9a0e762f1d7 defaults: visual star (*) on text with "?"
- 9b4b23493d69 defaults: wait until VimEnter to set background (#26284)
- 72e3d8c3f949 deps: bump luv to 1.48.0-2
- 87db6d894ad2 deps: make sure --force-config takes effect
- 7aad4643f9a6 deps: remove stray conflict marker
- 8a6716682e6e deps: restore functionality of USE_EXISTING_SRC_DIR
- d4dc884012e8 deps: restore functionality of USE_EXISTING_SRC_DIR
- d27214331815 diagnostic: always return copies of diagnostic items (#25010)
- 29d5ff6ac4ea diagnostic: check for sign namespace instead of sign group
- 3d8f0cb695a5 diagnostic: check if delete failed in `qf_fill_buffer()` (#25932)
- 89ffdebd20fd diagnostic: fix typing on field |diagnostic-severity|
- 83635e4e3db9 diagnostic: get border from config (#28531)
- 96f59e1b9902 diagnostic: invalid col number  compare in next_diagnostic (#28397)
- ad76b050eb2c diagnostic: open_float on multi-line diagnostics #28301
- 37011bc45ef3 diagnostic: rename buffer → bufnr in type annotation (#23042)
- 50284d07b6f0 diagnostic: typing
- a4fc3bb0e68c diagnostic: vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273
- add1b10b7901 diagnostic: virtual_text prefix function should have index and total (#25801)
- 35f475d0a51a diagnostics: if buffer not loaded, skip handlers that set extmark (#25628)
- 5a25dcc5a4c7 diff: filler lines for hunks bigger than linematch limit (#24676)
- 2f9ee9b6cfc6 doc: improve doc generation of types using lpeg
- c4417ae70c03 doc: prevent doxygen confusion
- 67f53323446d docs: clean up non-docstring comments for vimdoc gen
- ae7020c667b5 docs: fix TSNode incorrect signatures
- ab65a98adba4 docs: ignore_invalid #24174
- f40df63bdca3 docs: make lines not overflow in vim docs
- 0a90e4b05ad3 docs: match DocSearch style with site theme
- 0d149bb18639 docs: the runtimepath is not the runtime path
- 957d05d16bc8 docs: too much whitespace around <pre> blocks #24151
- d931b829e926 docs: vimdoc syntax errors
- 036da0d07921 docs: vimdoc syntax errors
- 17c59e417f81 docs: vimdoc syntax errors
- 34b57508a78b drawline: check filler_todo in place of removed draw_state (#27889)
- 455bca1ba86a drawline: combine extmark highligh with area hl correctly
- 329979715063 drawline: consider position in linebuf for foldcolumn (#26803)
- 889f81c65fa4 drawline: don't invoke on_line for filler line (#28219)
- 2b9d3869f8f3 drawline: don't use temporary "v" variable when not needed (#26777)
- 06694203e51e drawline: fix missing Visual hl on double-width fold char (#24308)
- d5488633f68f drawline: initialize linebuf_attr to 0 instead of -1 (#27840)
- e9280a68f7ea drawline: initialize variable
- 2819718873a3 drawline: initialize variable
- 36941942d609 drawline: inline virt_text hl_mode inside syntax/extmark hl (#24273)
- 37b73cf14b11 drawline: make cursorlineopt=screenline work with resized grid
- be1d09c42722 drawline: missing NUL termination when drawing TAB (#27307)
- 5b3144781137 drawline: update prev_ptr after getting syntax attrs (#27072)
- 14839c5d18c2 edit: backspace adds extra spaces for inline virtual text (#28005)
- 267e90f31d18 edit: don't go to Terminal mode when stopping Insert mode (#27033)
- b2e8c0df2062 edit: fix K_EVENT interfering with 'digraph' (#24258)
- 143a17833280 editorconfig: add missing root validation (#23462)
- cbbda3bcd775 editorconfig: check that buffer is valid (#23922)
- abb8c2c453d1 editorconfig: do not set 'endofline'
- df2f5e39127e editorconfig: highlight properties with dashes (#24407)
- dc45fb4655f5 editorconfig: only warn once on errors
- cdbc3e3f3e95 editorconfig: syntax error regression
- bf0c69e50410 eval: correct failure return value for readfile/blob (#27722)
- 5b312cd5f676 eval: make has('pythonx') work properly (#27739)
- 0e4086b74189 eval: prevent double-free in garbage collection (#22990)
- 12d123959f56 eval: properly support checking v:lua function in exists() (#27124)
- b8c34efe3399 eval: skip over v:lua properly (#27517)
- ad2fad9a3b07 event-loop: flush UI when no input is available (#25728)
- 672556525893 event-loop: process input before events (#27358)
- 58a1ef8e6a93 events: avoid unnecessary CursorMoved (#24675)
- bf9e92c81c3c events: check for WinResized/WinScrolled in terminal mode (#27226)
- dd24ea819507 events: don't expand non-file as file name
- 774a32e5fe73 events: null dereference in autocmd functions
- a8cfdf43bc62 events: trigger VimResume on next UI request (#24426)
- a114a21eff58 ex_getln: initialize pointer with NULL
- 9e7c4fe57915 exception: remember whether message is multiline (#25351)
- 4a098b97e535 excmd: append original command to error message
- 75d9c413d492 excmd: make :def unknown rather than unimplemented (#23150)
- f1dd75c2af40 exitfree: don't use ex commands to close windows in free_all_mem()
- 79a558277b1b extmark: fix crash when stepping out from internal node
- a78fd18ed92d extmark: fix cursor position with both left and right gravity inline text
- 320e9c1c2181 extmark: only invalidate unpaired marks on deleted rows
- 8e97edb93f01 extmark: restore extmarks when completing original text
- 2d33a766a17b extmarks: `U` changed_bytes after extmark_splice (#26501)
- 23c21e763074 extmarks: account for rightleft when drawing virt text (#25262)
- d54156ed08b8 extmarks: blending space shouldn't overwrite wide char (#26960)
- 54225bdb021e extmarks: crash with sign after many marks
- 65b1fd00a7aa extmarks: do not remove decor from invalid old marks
- 437d35dbf7d9 extmarks: do not remove invalid marks from decor upon deletion
- a05bbc60eaf2 extmarks: don't position overlay virt_text halfway a char (#24027)
- 4dd43e31db8f extmarks: don't show virt lines for end mark (#23792)
- dfa8b582a64a extmarks: draw TAB in virt_text properly with 'rl' (#25381)
- a6e4793bafa0 extmarks: draw virt_text below diff filler lines properly (#25170)
- 958cc22836f1 extmarks: empty inline virt_text interfering with DiffText (#24101)
- 0534ad8ca57b extmarks: empty inline virt_text interfering with Visual highlight
- 31a51acdc353 extmarks: fix heap buffer overflow caused by inline virtual text (#23851)
- 9c41a81dec15 extmarks: fix virt_text_hide off-by-one hiding (#23795)
- a6dd67f5b66c extmarks: fix virt_text_hide with 'nowrap' and multibyte (#23757)
- 818d7f6daf30 extmarks: fix win_col virt_text drawn on wrong screen line (#25264)
- c4df2f08b689 extmarks: fix wrong highlight after "combine" virt_text (#24281)
- b65cd7ff1a0a extmarks: fix wrong virt_text position after wrapped TAB (#25168)
- 4c7cec4e2934 extmarks: handle inline virt_text with empty chunk (#24005)
- ee3d4f6b90d0 extmarks: handle overwriting right half of wide char (#26951)
- f4f1ce1d167c extmarks: hide inline virt_text properly with 'smoothscroll' (#24106)
- 34a786bc4959 extmarks: inline virt_text support multiple hl groups (#25303)
- 5a6c7c805b8b extmarks: make empty "conceal" respect &conceallevel = 1 (#24785)
- 510e1f131b56 extmarks: make right_align and win_col work on wrapped line (#23759)
- 215244f74950 extmarks: missing "spell" and "conceal" in details (#27116)
- 35e50d79c630 extmarks: overlay virt_text position after 'showbreak' (#25175)
- a0790558c309 extmarks: priority order of inline and non-inline virt_text (#27532)
- b52bd8a2dea8 extmarks: properly handle virt_text on next screen line (#25166)
- a376d979bda1 extmarks: redraw line on adding/removing conceal (#27463)
- 2d9e063a63f8 extmarks: redraw pre-undo position (#27437)
- 2137edbd4f15 extmarks: redraw properly with scoped inline virt_text (#27569)
- 1cc358aed6fd extmarks: restore old position before revalidating
- 0818d655288e extmarks: skip virt_text if it is out of window (#25658)
- 19d63563e1cc extmarks: splice earlier when opening new line (#28108)
- 362df0f7938a extmarks: wrong display when changing text with virt_lines (#24879)
- d5a85d737aa2 f_wait: flush UI before blocking (#25962)
- 81f67b79e8a3 file_search: path with spaces in finddir() and findfile() (#25493)
- a69c72063994 fileio: fix off-by-one in rename_with_tmp (#27780)
- c6c21db82b31 filetype: add typing and dry (#24573)
- 020d1f626a3f filetype: call on_detect before setting buffer filetype
- fdf5013e218c filetype: correctly detect bash-fc-{id} files as "sh"
- d6f406db4527 filetype: don't use fnamemodify() with :e for extension (#27976)
- 670c7609c855 filetype: make sure buffer is valid before call nvim_buf_call (#24922)
- af38b46a2574 filetype: return on_detect function when matching by file contents
- 2955c921ceaf filetype: use unexpanded file name (#27931)
- e32af31ee89c flake: clang-tools moved to nativeBuildInputs (#26955)
- fd08fd3de302 float: add fixd option
- 884470124db3 float: allow floating window in cmdline area
- 9ecb43b6372f float: apply 'winblend' to title/footer highlight (#25999)
- 898371fc9fae float: don't relative flaot win itself
- fcdfbb430377 float: fix some other crashes with :unhide or :all (#25328)
- 3ea124a8d9f0 float: improve error message when reconfig failed (#25076)
- c5abf487f19e float: make "fixed" work with relative=win (#25243)
- 03e8b5fc91f9 float: make bufpos work properly with resized parent grid
- 437ed3cee2d2 float: trigger winnew event when float window create
- f5953edbac14 float: update position of anchored windows first (#25133)
- 9de157bce4b6 float: win_get_bordertext_col returning negative column number (#25752)
- 5f18dd301375 float: wrong position when bufpos is set
- 0e01e815520e folds: allow overlay virtual text on folded line (#23892)
- ee986ee0449b folds: combined Folded and Visual highlights (#23752)
- ded01a819ab0 folds: don't show search or match highlighting on fold (#24084)
- 811140e276a6 folds: fix missing virt_lines above when fold is hidden (#24274)
- 678548a2b446 folds: show Folded highlight in Visual selection (#23741)
- 58f94861442d folds: update folds in Insert mode with fdm=indent (#24402)
- 38e38d1b401e fs: allow backslash characters in unix paths
- 8a7e3353eb5b fs: make `normalize()` work with '/' path (#24047)
- ae5095cac9b2 fs: use generics for better typing
- e4da418ba838 fs.lua: normalize slash truncation (#23753)
- 06fcf71bd095 fswatch: --latency is locale dependent
- 502a7a0558b0 ftplugin: respect runtimepath ordering
- 03a2c5b77200 ftplugin: source Lua files after Vimscript files per directory (#23801)
- be5cf3383622 gen_help_html: type warnings, spell_ignore_files #27254
- 6c35fb421e88 gen_lsp.lua: improve type name, and fix wrong type inheritance
- 214b12513277 gen_lsp.lua: no notifications in lsp.Methods #24530
- 765729a145d3 gen_vimdoc: INCLUDE_DEPRECATED not generating docs for deprecateds
- ccf328172bac gen_vimfn_types: don't include tag before signature's line (#24492)
- 86c9d8b53cd9 gen_vimvim: correctly add aliases to vimAutoEvent (#23429)
- 240c41e1af55 genvimvim: add special abbreviations of :delete (#23172)
- 51ea753747c7 genvimvim: generate prefixed boolean options properly (#27487)
- 9f32deba56ea grid: add start column when getting char on line (#25627)
- 4ed1c2a8afc7 grid: don't draw beyond max column (#26172)
- 9c202b9392f3 grid: handle clearing half a double-width char (#27023)
- 6a486c44e66f gx: move to to _init_default_mappings #24420
- 67b2ed1004ae gx: visual selection, expand env vars
- e39b6d0c5241 health: "attempt to concatenate nil"
- 7ffe450173d2 health: check for _host_prog variables properly (#23014)
- 50cd5ed360ee health: check more "old" files
- f6dcc464f220 health: check unmatching python_glob as empty table (#28215)
- 6818ba271cb4 health: clients may not support watchfiles #28710
- 03a021f378e8 health: combine python and virtualenv healthchecks (#23004)
- c67efe3a9c5b health: correctly expand and resolve PYENV_ROOT (#26953)
- 88eb0ad149d3 health: fix tmux RGB capability detection (#26886)
- cde4892b4955 health: fix typo in function name
- 63a17322dd83 health: improve python executable check error handling (#26954)
- ba88fd886ae8 health: malformed call to warn() #26217
- 8c6f97bef89d health: properly use the value of $PYENV_VERSION (#23109)
- c8ebb04e92c9 health: replace healthFoo with DiagnosticFoo (#23475)
- 843c1bed95d3 health: stop job properly on timeout (#23877)
- 96d0c709b66e healthcheck: expand vimrc variable (#28379)
- 4229bbe514b7 helptags: make multibyte help tags work properly (#23975)
- 7b6d041baed7 heredoc: allow missing end marker for scripts
- a2f17e97ec2d highlight: add `FloatFooter` to 'highlight_defs.h' (#25577)
- 837f26809373 highlight: add `Nvim{Light,Dark}Gray{1,2,3,4}` colors
- 8afb3a49c076 highlight: add create param in nvim_get_hl
- f8ea49cfe1f4 highlight: add force in nvim_set_hl
- 4ce0ada0d4c8 highlight: add missing g: prefix for colors_name (#22952)
- 03ca36d1f8d0 highlight: apply 'winblend' to NormalNC (#23555)
- 6c3e170e5668 highlight: apply 'winblend' to float border (#25981)
- d4872377fef7 highlight: attr set all when normal attr changed
- dcaf2073369c highlight: combine ColorColumn with low-priority CursorLine (#23017)
- 66925f14de81 highlight: consistently spell "Goldenrod"
- 51836517738b highlight: correct hi command output
- ca7dd33fa783 highlight: don't show CursorColumn on current line (#27848)
- 59289fb987bd highlight: make CurSearch work properly with 'winhl' (#24448)
- b11a8c1b5d39 highlight: remove unnecessary assignment to char_attr for 'spell' (#23713)
- 9a2c98087b90 highlight: update `IncSearch` to link to `CurSearch`
- ab9257575387 highlight: winhl receive wrong argument
- b60a2ab4cb7b inccommand: block errors when parsing command line again (#24374)
- bc5b0da84ec4 inccommand: don't crash with "split" and 'n' flag
- 382ea4d40282 inccommand: don't preview in Ex mode (#26587)
- c1c2a1b5dd1d inccommand: don't save information of a buffer twice (#24501)
- ef44e597294e inccommand: don't set an invalid 'undolevels' value (#24575)
- ba9f86a9cee5 inccommand: improve preview buffer number handling (#27087)
- 643bea31b867 inccommand: restrict cmdpreview undo calls (#24289)
- 1dba570e63ed inccommand: save and restore '[ and '] marks (#26442)
- 35ffe58ea4a3 inccommand: update topline after moving cursor (#27341)
- a14c7809181c input: set termkey buffer size to read stream capacity
- b61575ba70f8 intro: clear intro if new buffer is shown in focused float
- 9530a2301680 intro: link showing intro to state at start
- 0570a19c8a84 intro: make intro explicitly stateful
- d1a30221fcb1 intro: redrawing intro exposing pseudo-randomness
- 21360523cd3d intro: still show intro message with floating window
- 6b96122453fd iter: add tag to packed table
- 2ee8ace217b8 iter: make pipeline termination conditions consistent (#24614)
- 94894068794d iter: remove special case totable for map-like tables
- 57ccd8241735 job-control: fix use after free (#25223)
- 1c71c32b2910 job-control: make jobwait() flush UI after hiding cursor (#25927)
- e057b38e7037 json: allow objects with empty keys #25564
- af6537bc66e2 jumplist: Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461
- 017ff93b020e keycodes: recognize <t_xx> as a key (#24700)
- 6709f7f8f130 keycodes: simplify S- properly when D- is present (#27316)
- 4447cefa4815 l10n: update Japanese translations (#27856)
- 7d17ab5b6f07 l10n: update Ukrainian translations (#26819)
- 908843df61fc languagetree: apply `resolve_lang` to `metadata['injection.language']`
- e353c869cea4 languagetree: don't treat unparsed nodes as occupying full range
- 6b5f44817e93 languagetree: remove double recursion in LanguageTree:parse
- f5530bf566f6 linematch: initialize array
- 766f4978d6cb lint: lint warnings #24226
- 5465adcbab29 lint: use tbl_contains
- 0804034c07ad loader: cache path ambiguity #24491
- 89135cff030b loader: remove cyclic dependency on vim.fs (when --luamod-dev)
- 66c66d8db8ab loader: reset hashes when running the loader
- ec80e4cb4d31 log: increase size of buffer for nvim instance name
- 4d0f4c3de9cb lsp: E403 if doc contains multiple codeblocks #24458
- 20c331915f4e lsp: SignatureHelp docstring is not escaped #16702
- 01691c5447d9 lsp: abort callHierarchy on no result (#28102)
- 9abced6ad95f lsp: account for border height in max floating popup height (#25539)
- 3e016fa8d4f7 lsp: actually send diagnostic-tags back to the server
- 37d8e5045936 lsp: add "silent" option to vim.lsp.start (#28478)
- 2e1f5055acde lsp: add assertion for explicit bufnr in apply_text_edits (#27614)
- 542c910a1d3f lsp: add missing LSP semantic token highlight links
- be5e36115410 lsp: add param assert in client_is_stopped (#23857)
- ac0e8323dc82 lsp: add parentheses to generated union array types (#27560)
- 0fcbda59871e lsp: add snippet regression test (#27618)
- e42fdaad21a8 lsp: add spacing for inlay hints separately #24079
- 48bcc7b9710d lsp: advertise workspace.didChangeConfiguration capability (#26028)
- c07dceba335c lsp: allow Lua pattern chars in code action filter (#24041)
- 3bf887f6e08f lsp: always return boolean in lsp.buf_client_attach (#24077)
- 966eb8e0b3be lsp: announce publishDiagnostics.dataSupport (#24442)
- 39fc340276a4 lsp: avoid assertion when `client_hints` do not exist (#28461)
- 47dbda97d2f4 lsp: buffer messages until connected to server (#28507)
- adbe7f368397 lsp: call `on_list()` even for single location (#25830)
- 15983cf2c64c lsp: cancel session when leaving snippet region (#25762)
- 816b56f878f0 lsp: cancel watchers when closing a client
- 9b8a0755390b lsp: change `silent` in lsp.start.Opts to optional (#28524)
- d3e035257473 lsp: check if inlay hints are enabled for a buffer before disabling (#24074)
- fa9a85ae468b lsp: clean up duplicate and unused meta type annotations
- 8bd6f7c20b40 lsp: clear codelens on LspDetach (#24903)
- 97c0a52416b8 lsp: correct deprecation message #28403
- aa62898ae329 lsp: correct the error message's cmd on spawning (#27632)
- 77a9f3395bd1 lsp: create codelens request parameters for each buffer (#27699)
- 9281edb334a3 lsp: create per client params in lsp.buf.code_action
- 39cc38a87b29 lsp: defer writing error msgs (#27688)
- 1b679ac19287 lsp: define LspInlayHint highlight group #24073
- dc8c086c7e73 lsp: directly rename the existing buffers when renaming (#27690)
- c1a95d9653f3 lsp: disable didChangeWatchedFiles on Linux
- 2fde6295df8c lsp: display initialization errors (#25409)
- 94127cb5df0a lsp: do not add extra indentation
- cc87dda31a5b lsp: do not assume client capability exists in watchfiles check (#24550)
- 0fe0cf5adaab lsp: do not cancel snippet when selecting placeholder (#25835)
- 073035a030f5 lsp: don't register didChangeWatchedFiles when capability not set (#23689)
- 5eee633c9705 lsp: don't start additional client if attach failed (#28744)
- 21fa19f3e8c1 lsp: don't use hl_mode = combine for inlay hints #24276
- 96b94f8d7777 lsp: duplicate on_detach, on_reload callbacks #24067
- b95b6ed9753d lsp: empty commands should not be considered executable (#28216)
- c3c673cdeca2 lsp: enable() does not activate inlay hints on open buffers #28629
- b2c26a875b9d lsp: ensure buffer is not attached more than once
- fa0a25dcb3a4 lsp: error in reset_timer on second detach #24117
- 72e64a1afef0 lsp: extra "." when completing with tsserver #24646
- 031088fc0aff lsp: filetype matching to documentSelector in dynamic capabilities (#25425)
- d191bdf9d5e5 lsp: fix attempt to call non existent function (#24212)
- dd3fa6457355 lsp: fix dynamic registration of code actions (#23826)
- ce4ea638c703 lsp: fix incorrect typing and doc for `vim.lsp.rpc`
- f487e5af019c lsp: fix infinite loop on vim.lsp.tagfunc
- 74bd4aba57d2 lsp: fix multi client handling workspace_folder methods (#18839)
- 5e5f5174e3fa lsp: fix off-by-one error for omnifunc word boundary
- ba6761eafe61 lsp: fix omnicomplete in middle of the line (#25787)
- 075a72d5ff9d lsp: fix relative patterns for `workspace/didChangeWatchedFiles` (#23548)
- 840e1864c2de lsp: handle NUL bytes in popup text (#25612)
- 345bd91db28e lsp: handle absence of a trailing newline #25194
- 0e9a33572dc7 lsp: handle adjacent snippet tabstops
- 853f647da618 lsp: handle reverse lookup in capabilities
- 91f67fabe69f lsp: handle stale bufnr on LspRequest autocmd trigger (#24013)
- 849d82b80b85 lsp: handle stale bufnr on LspRequest autocmd trigger (#27981)
- 2eecb1b85dbb lsp: highlight active parameter in signature help #25663
- e55e80d51ca5 lsp: inlay hints: "Failed to delete autocmd" when closing buffer #24469
- 7968322e7a20 lsp: inlay_hint nil reference error #24202
- ba8f19ebb67c lsp: lint warnings, default offset_encoding #24046
- 330444994616 lsp: log unknown diagnostic tags instead of showing a warning (#25705)
- 251ca45ac948 lsp: markdown code fence should allow space before info string #24364
- add7e106d59b lsp: noisy warning about offset_encodings #24441
- c235959fd909 lsp: only disable inlay hints / diagnostics if no other clients are connected (#24535)
- 1dacf2ecee36 lsp: prevent code-lens refresh from becoming a permanent  no-op (#28228)
- 597ecf751603 lsp: re-add client.commands and mark private
- 94a904b453e5 lsp: reapplying already-applied hints #24114
- 4ecc71f6fc73 lsp: reduce diagnostics and add more types (#23948)
- bc7f86209d39 lsp: redundant vim.snippet.jumpable #28560
- ee156ca60ede lsp: refactor escaping snippet text (#25611)
- 2ecba65b4ba7 lsp: remove unknown LSP protocol property (#24345)
- 7311958e1238 lsp: remove unnecessary file load/write when renaming (#27621)
- e14e75099883 lsp: rename LspProgress data.result => data.params #28632
- f0e61e6d92b5 lsp: rename fails on missing parent directory #27291
- b413f5d048ab lsp: rename undofile when renaming (#27684)
- d09957e0a06f lsp: rename: load and list new buffer if attached to window (#27408)
- 7668f89d5be6 lsp: replace @private with @nodoc for public client functions (#24415)
- 52823616bc4d lsp: replace bug-prone ternary operation #28627
- 5282d3299c9b lsp: restore marks after apply_text_edits() #14630
- cf5f1492d702 lsp: revert change to buf.clear_references() #24238
- 917172dd9680 lsp: semantic token defer loading
- 3be2536ca039 lsp: send back diagnostic tags to the server
- a37d568082ad lsp: send empty "added" list when removing workspace folder #24440
- 3c6d971e5488 lsp: set extra info only when it has a value (#23868)
- 5785c32f1115 lsp: set fallback client name properly
- 370232dbefb9 lsp: track snippet deletion
- ca26ec34386d lsp: use only utf-16 in default client positionEncodings (#23903)
- b302da9ad220 lsp: use percentage format on lsp.status (#23971)
- 2c8f36a3b0b6 lsp: use plain loop for non-list-like table of protocol values
- 8addd27504e6 lsp: when renaming directory, check path prefix of buffer names (#27603)
- 597355deae2e lsp: wrong iterator in registerCapability handler (#24971)
- b2d471ab337e lua: allow nil values in serialized Lua arrays (#26329)
- 68f12e7fcb1f lua: annotate that TSNode functions can return nil (#24621)
- 4ffc20c95152 lua: avoid internal error when :luado deletes lines (#27262)
- 319803822420 lua: correct return value for on_key with no arguments (#25911)
- 84bbe4b0ca93 lua: disallow vim.wait() in fast contexts
- 22eb2ba18336 lua: do not schedule events if Nvim is exiting
- 7d279a09e0fb lua: handle array with holes in luaeval() (#26630)
- c43c745a14dc lua: improve annotations for stricter luals diagnostics (#24609)
- 2f779b94e7fe lua: inspect_pos respect bufnr when get syntax info (#23098)
- e2e63bd04549 lua: make highlight.on_yank use win-local highlight (#27349)
- b40170f7a3ca lua: memory leak when using invalid syntax with exists() (#26530)
- 4ab9c5fa4684 lua: not using global value in vim.opt_global (#25196)
- 20ec4c776a07 lua: only disable vim.schedule() when closing main loop (#26090)
- f150b62423d5 lua: only free luarefs when returning from API (#28373)
- 019077171324 lua: remove uri fragment from file paths (#27647)
- 5aa14e1231b7 lua: return after assert returns assert message (#27064)
- 5331d5772ffb lua: show error message when failing to set variable (#25321)
- 1294e221a205 lua: vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate
- 37c58226a8fd lua: vim.fs typing (#24608)
- 5db076c7ccfe lua: vim.region on linewise selection #25467
- 622b1ae38a36 lua: vim.split may trim inner empty items
- a7df0415ab6a lua2dox: filter out the entire `---@alias` block
- 32e69bd3971c luarc.json: ignore test directory to save memory
- 6f936c9d85a0 man: make :Man with a range work (#25922)
- 59aadf33efc2 man: pass modifiers also to :tag (#27878)
- a9b4dc9614a0 man: set the nested flag for the BufReadCmd autocommand (#26285)
- c8d1d8b2546c man.lua: don't continue on command error (#23009)
- a4c4b39d55db man.lua: hardwrapped manpage is not resized #25646
- 209ed16f57a7 man.lua: return support of all sections
- 3a7c30dc93b9 man.vim: q quits after jump to different tag in MANPAGER modified (#28495)
- 3c667d3e0fe4 mappings: fix mapset() not replacing map with backslash (#26719)
- 0451391ec514 mark: properly init mark views (#22996)
- d432bba4e46c marks: handle switching buffer properly (#25763)
- 62306a29add2 marktree: correct qsort usage
- 585549625d8a marktree: off-by-one error in `marktree_move`
- 34be915f6b93 marktree: preserve ordering in `marktree_move`
- b97d5038f16b marktree: some marks counted twice when checking for overlap
- ad5a155b1f4b mbyte: fix bugs in utf_cp_*_off() functions
- b02823399171 memline: more curbuf stuff
- 91ef26dece6d messages: :map output with ext_messages (#26126)
- eabf9de1dc8c messages: allow more prompt in headless mode with UI (#27905)
- 60fb8a6a8bd9 messages: avoid crash with :intro and ch=0 (#28343)
- 61a0aa6c51fb messages: avoid passing negative length to strnlen() (#28753)
- ca258db15668 messages: clear new lines when increasing 'cmdheight' (#27421)
- c9f47fca8b89 messages: ensure msg_grid is at top at more prompt (#23584)
- 2f17ef1fc4b9 messages: use "Vimscript" instead of "VimL" #24111
- 55dbf5c3798c messages: validate msg_grid before using msg_grid_pos (#26189)
- 4db77017fb7a meta: add nil return types to lpeg functions
- 5198a2555de4 meta: cleanup lpeg operators
- dae6770b761a meta: include vim.json
- d31f7648ecaf mkspell: prevent Unicode character overflow (#23760)
- a8a93e517f9e mouse: avoid dragging after click label popupmenu callback (#26187)
- 6a2a37b1e102 mouse: avoid dragging when clicking next to popupmenu (#26201)
- 091eb4c8c720 mouse: click after eol with conceal and virtual text (#27897)
- 2b475cb5cc21 mouse: click on 'statuscolumn' with 'rightleft' (#25090)
- e25cf47ad3e1 mouse: click on empty line with 'foldcolumn'
- 84a4319545ad mouse: cmdline click registered as statuscolumn (#23163)
- bf52fb7193ca mouse: copy the line before syntax matching (#24320)
- 5fb4c397a1da mouse: drag vsep of window with 'statuscolumn' (#24462)
- dc394b9641f9 mouse: fix popup menu position check with winbar (#23456)
- 7c1921e9d69e mouse: fix popup_setpos position check with ext_multigrid (#23436)
- a3fba5cafcf1 mouse: handle folded lines with virt_lines attached to line above (#23912)
- 64aa0f7d0b70 move: check for filler lines properly (#28307)
- 366d0c7887f7 move: check the correct buffer (#25698)
- 780509aedf5c move: fix using the wrong window (#28312)
- 60d1e3e4718a msgpack: store grid line event as a value
- c52dfb6e8408 normal: don't check conceal when pressing 'r' (#27892)
- 088cdf69e3fa normal: make "g$" work properly with resized grid
- a1ded1b113d2 oldtest: always use a 64-bit int for swapfile block number
- 92c59c39c3d9 ops.c: remove duplicate u_save_cursor()
- 9d01385c6ca6 options: `'modified'` showing incorrect value for scratch buffers
- c3e176f6e24e options: correct condition for calling did_set_option() (#25026)
- 9af03bcd4712 options: do not change inccommand during preview (#25462)
- 796df966f3cb options: don't update curswant for 'winhl' or 'winbl' (#27515)
- d956bc63795f options: setting 'scroll' with resized grid (#26628)
- c8a27bae3fae options: use a union for def_val (#27169)
- 804c828e681e optionstr.c: incorrect use of curbuf/curwin
- a9df0c5ce6ca osc52: do not use 'vim.iter' (#27218)
- 5d75d9aef2b6 osc52: enable OSC 52 by default in tmux sessions (#26072)
- 86c2213b5e45 osc52: use `p` for primary selection instead of `s` (#26076)
- 104565909798 osc52: use nvim_chan_send() to stderr for copying (#26690)
- e3bd04f2aff7 pager: handle consecutive newlines properly (#27913)
- 1e7e9ee91f73 path: accept special characters on Windows (#25424)
- f064e72b9b9c path: check return value of append_path() (#28309)
- f5eabaa9407a path: restore space separation in 'path' (#25571)
- 908f247c224d plines: count 'showbreak' for virtual text at eol
- a0cbf1d8d5a6 plines: cursor position with 'showbreak' and resized grid (#28067)
- 317038e7cb11 plines: don't return very large height on very long line (#24260)
- 7955c90621bb plines: folded lines with virt_lines attached to line above
- 35c3275b4896 plines: handle inline virtual text after last char (#24241)
- cbadb39d16c1 plines.c: initialize cts_max_head_vcol (#24855)
- fc14928719df printf: make positional %zd and %zu work (#24722)
- d0b3c8721921 process: avoid potential data race on exit (#27769)
- 3e569d440b8e process: close handles and timer in pty_process_close() (#27760)
- 268066e01400 process: start pty process eof timer on main thread (#27625)
- 49983387ffd5 prompt: emit change event for prompt newline (#28260)
- 7bd6bd1ef721 provider: cannot detect python3.12 #25316
- 61ecb3e16c22 provider/pythonx: import the correct module (#25342)
- 540941ef8320 pum: don't position too far with resized parent grid (#23442)
- f186224dfcf8 pum: fix missing rightmost column with 'rightleft' (#23445)
- 8bc973c6f59c pum: fix missing scrollbar with 'rightleft' (#23448)
- a7550a20e0c3 pum: handle right-click menu repositioning with multigrid (#26975)
- fbaa27877361 pum: make :popup position correctly with float border
- a3dfe1bc89a5 pum: position properly with ext_multigrid (#23336)
- c1331a65dd12 pum: show right-click menu above cmdline area (#23298)
- dd0e77d48a84 query_error: multiline bug
- 5ac2e47acc99 redo: make redo of Lua mappings in op-pending mode work (#23566)
- 60f69014a801 redraw: multibyte characters are wrapped at the end of a line (#23696)
- cb34d0ddd086 redraw: overwrite double-width char with virt_text properly (#23708)
- d184933cdc70 redraw: update Visual selection properly with splits (#27343)
- 54044e6dce2f release.sh: ze version is too big
- cce9460524aa remote: make --remote-expr print to stdout (#23980)
- bde59e81473f remote: restore previous --remote-expr output formatting (#23988)
- 468292dcb743 rpc: "grid_line" event parsing crashes (#25581)
- 4d4092ac9e98 rpc: assertion failure due to invalid msgpack input
- 8921d56053bb rpc: do not crash when no input is consumed
- c422722b2e94 rpc: fix hang with channel closed while waiting for response
- adb225834540 rplugin: dont create data dir if it's a broken symlink #25726
- 65dd3c1180ce ruler: show ruler of curwin with no statusline in cmdline
- f5231d61a541 runtime: add commentstring for C# ftplugin (#23039)
- 3387dc4a463c runtime: add commentstring for D ftplugin (#25362)
- 615b48aca6bd runtime: add more Nvim-only highlight groups to Vim syntax
- aee6f08ce12a runtime: do not allow breakcheck inside runtime path calculation
- df297e3c2bd7 runtime: don't set gx mapping if already mapped (#24262)
- 9176b5e10a6b runtime: respect 'fileignorecase' when sourcing (#24344)
- dbb840da01c7 runtime: respect 'rtp' order for all runtime files (#24335)
- 70a00492962d runtime: source c ftplugins in correct order (#27377)
- d431a4d410f0 runtime: source old color scheme in bundled color schemes (#26641)
- 3ab6f60dc80d runtime: update 'vim' color scheme to use new tree-sitter groups
- 67fba9affa14 runtime/tutor: don't try to close fold when there is none (#24953)
- ee56daebb646 shada: update deleted marks (#24936)
- 517dfdf0fcf5 shada: update marks when using delmarks! (#24978)
- 4d52b0cf6705 showcmd: clear the rest properly (#28420)
- fcd9905291c0 sign: avoid deleting from sign map while looping over it (#27158)
- a84b454ebe66 sign: do not error when defining sign without attributes (#26106)
- a5ade3c63d88 snippet: correct indent with newline
- 4625394a767f snippet: do not add extra indent on newlines (#28538)
- a1bdf2852d6d snippet: remove misleading comment about TM_FILENAME_BASE (#26465)
- 8c044f0862f4 spell: always accept ':' as filename char in 'spellfile' (#27172)
- a803bff89c89 spell: extmark with spell=false should disable spell (#23400)
- eceb2dffce39 spell: splice extmarks on :spellrepall (#23929)
- aa65bd478a98 startup: "nvim -l foo.lua" may not set arg0 #24161
- 628f6cce80de startup: don't truncate when printing with -l (#24216)
- c0fa721adeab startup: make recovery mode work without --headless (#24477)
- 8e739af064de startup: multiprocess startuptime #26790
- 8f10362cdc58 startup: only send one default_colors_set event during startup
- 559c4cfd52e3 startup: run embedded Nvim with real path (#24282)
- b21d96011934 startup: set full_screen when in ex_mode
- 9637b7dae417 startup: stop TUI properly when quitting at swap dialog (#25337)
- d7359a87425d startup: trigger UIEnter for the correct channel (#25860)
- 01e273c340b5 statuscolumn: don't update clicks if current width is 0 (#24459)
- afd0c648a89f statuscolumn: force full redraw when signcolumn is invalid (#24859)
- dc6c11394b73 statuscolumn: update number hl for each screen line (#25277)
- a4b240080435 statusline: also allow right click when 'mousemodel' is "popup*" (#23258)
- 4ecf6fdfd857 statusline: bail out properly on negative row (#23535)
- 70da793c5eda statusline: corrupted screen with minwid sign item in 'statuscolumn' (#23823)
- d7bb19e0138c statusline: fill for double-width char after moving items (#24207)
- 54f560203897 statusline: fix uninitialized variable and possible overflow
- 9f15a18fa57f statusline: missing offset when showing 'keymap' (#27270)
- 7b973c71ea84 statusline: redraw when VIsual_mode changes (#23933)
- dbc0fa9bd683 stdpath: remove duplicate directories (#26653)
- 1907abb4c278 stream: do not close handle if it is already closing (#26537)
- 9dd48f7832f4 substitute: properly check if preview is needed (#23809)
- 9753cda591e2 syntax: use correct diagnostic group for checkhealth (#23538)
- 400b7842a983 termcap: escape escapes in passthrough sequence (#26301)
- e52784221118 termcap: only call callback for requested capabilities (#26546)
- ffeb31c2f962 termcap: set 'nested' on TermResponse autocommand
- b7831c7f996b termcap: use tmux passthrough sequence when running in tmux (#26281)
- e6d3f87dfd71 termdebug: handle partial lines passed to callback (#22950)
- c413b42c456b termdebug: prompt mode breaks with &splitbelow set
- 8aad4b84250a termdebug: send SIGINT when inte…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lua stdlib
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants