neovim/CMakeLists.txt

328 lines
11 KiB
CMake
Raw Normal View History

# CMAKE REFERENCE
# - intro: https://codingnest.com/basic-cmake/
# - best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
# - pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/
# - troubleshooting:
# - variable_watch https://cmake.org/cmake/help/latest/command/variable_watch.html
# Version should match the tested CMAKE_URL in .github/workflows/build.yml.
cmake_minimum_required(VERSION 3.13)
# Can be removed once minimum version is at least 3.15
if(POLICY CMP0092)
cmake_policy(SET CMP0092 NEW)
endif()
project(nvim C)
if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW)
endif()
if(XCODE)
message(FATAL_ERROR [[Xcode generator is not supported. Use "Ninja" or "Unix Makefiles" instead]])
endif()
2014-02-24 13:54:45 -07:00
# Point CMake at any custom modules we may ship
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
2014-02-24 13:54:45 -07:00
include(CheckCCompilerFlag)
include(CheckCSourceCompiles)
include(CheckLibraryExists)
include(ExternalProject)
include(FindPackageHandleStandardArgs)
include(GNUInstallDirs)
include(Deps)
include(Find)
include(InstallHelpers)
include(PreventInTreeBuilds)
include(Util)
#-------------------------------------------------------------------------------
# User settings
#-------------------------------------------------------------------------------
set(DEPS_IGNORE_SHA FALSE)
#-------------------------------------------------------------------------------
# Variables
#-------------------------------------------------------------------------------
set(FUNCS_DATA ${PROJECT_BINARY_DIR}/funcs_data.mpack)
set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches)
file(GLOB DOCFILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
if(NOT CI_BUILD)
set(CMAKE_INSTALL_MESSAGE NEVER)
endif()
if(${CMAKE_VERSION} VERSION_LESS 3.20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.26)
set(COPY_DIRECTORY copy_directory_if_different)
else()
set(COPY_DIRECTORY copy_directory)
endif()
# Prefer our bundled versions of dependencies.
if(DEFINED ENV{DEPS_BUILD_DIR})
set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies")
else()
set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/usr" CACHE PATH "Path prefix for finding dependencies")
# When running from within CLion or Visual Studio,
# build bundled dependencies automatically.
if(NOT EXISTS ${DEPS_PREFIX}
AND (DEFINED ENV{CLION_IDE}
OR DEFINED ENV{VisualStudioEdition}))
message(STATUS "Building dependencies...")
set(DEPS_BUILD_DIR ${PROJECT_BINARY_DIR}/.deps)
file(MAKE_DIRECTORY ${DEPS_BUILD_DIR})
execute_process(
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
-D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-D CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-D CMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-D CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
-D CMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
-D CMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
-D CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
-D CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
${PROJECT_SOURCE_DIR}/cmake.deps
WORKING_DIRECTORY ${DEPS_BUILD_DIR})
execute_process(
COMMAND ${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}
--config ${CMAKE_BUILD_TYPE})
set(DEPS_PREFIX ${DEPS_BUILD_DIR}/usr)
endif()
endif()
list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX})
if(APPLE)
# If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET),
# fall back to local system version. Needs to be done both here and in cmake.deps.
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
execute_process(COMMAND sw_vers -productVersion
OUTPUT_VARIABLE MACOS_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "${MACOS_VERSION}")
endif()
message(STATUS "Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}")
2017-01-17 08:32:41 -07:00
endif()
if(WIN32 OR APPLE)
# Ignore case when comparing filenames on Windows and Mac.
set(CASE_INSENSITIVE_FILENAME TRUE)
2017-01-17 08:32:41 -07:00
# Enable fixing case-insensitive filenames for Windows and Mac.
set(USE_FNAME_CASE TRUE)
endif()
if (MINGW)
# Disable LTO by default as it may not compile
# See https://github.com/Alexpux/MINGW-packages/issues/3516
# and https://github.com/neovim/neovim/pull/8654#issuecomment-402316672
option(ENABLE_LTO "enable link time optimization" OFF)
else()
option(ENABLE_LTO "enable link time optimization" ON)
endif()
option(ENABLE_LIBINTL "enable libintl" ON)
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
set_default_buildtype(Debug)
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT isMultiConfig)
# Unlike build dependencies in cmake.deps, we assume we want dev dependencies
# such as Uncrustify to always be built with Release.
list(APPEND DEPS_CMAKE_ARGS -D CMAKE_BUILD_TYPE=Release)
endif()
# If not in a git repo (e.g., a tarball) these tokens define the complete
# version string, else they are combined with the result of `git describe`.
set(NVIM_VERSION_MAJOR 0)
2024-05-16 05:36:13 -07:00
set(NVIM_VERSION_MINOR 11)
2018-12-30 16:44:49 -07:00
set(NVIM_VERSION_PATCH 0)
2024-05-16 05:36:13 -07:00
set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
# API level
set(NVIM_API_LEVEL 12) # Bump this after any API change.
set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change.
NVIM v0.10.0 For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- - 649dd00fe2e5 remove deprecated functions - 0370e4def0c0 remove neovim qt - 880f7d12fea3 remove vimballs (#22402) - c48b1421af28 rename "playground" => "dev" #23919 - 2f85bbe61513 rewrite TOhtml in lua - abe39f2b243d api: change return type of nvim_win_text_height to Dict (#24365) - 7180ef690180 api: nvim_open_win: noautocmd blocks all autocmds #28192 - 700cab00680f events: trigger CursorMoved later on switching window (#23711) - e4a136f71375 ex_cmds: remove :behave - e5e0bda41b64 lsp: add vim.lsp.status, client.progress and promote LspProgressUpdate (#23958) - 5a363ccac8ff lsp: deprecate trim_empty_lines - 5a2536de0c4b lsp: move changetracking to separate file (#26577) - 58618d208acd lsp: promote LspRequest to a full autocmd and enrich with additional data (#23694) - 1b9ccd38a12f lsp: rename vim.lsp.get_active_clients to get_clients (#24113) - eb1f0e8fcca7 lsp: replace snippet parser by lpeg grammar - 448907f65d67 lsp: vim.lsp.inlay_hint.get(), enable(), is_enabled() #25512 - 7caf0eafd83b lua: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440) - 747264320c6d mappings: remove #n as a notation for a function key (#17318) - f7da47225706 options: graduate shortmess+=f flag - c3d1d9445c70 options: graduate some more shortmess flags - 5df4fdf253f9 options: make OptionSet `v:` values use typval - 881d17a11393 options: remove compatible behaviours for vim 5.0 and earlier - e19cc9c9b715 options: unify `set_option` and `set_string_option` - db590e96d593 startup: "nvim -l" message does not end with newline #24215 - 2ca076e45fb3 treesitter: incremental injection parsing - f5dc45310941 treesitter: new standard capture names - fc0ee871de2f treesitter: remove deprecated legacy injection format - 6debb1852355 treesitter: remove duplicated diagnostic code (#24976) - 18da6964cc61 vim.iter: remove vim.iter.map/filter/totable #26138 - 9b028bd64f42 vim.iter: rename xxback() => rxx() #28503 - 8d4a53fe6e20 vim.json: remove global options, "null", "array_mt" #24070 - 40ce8577977f vim.ui: change open() to return `result|nil, errmsg|nil` #28612 - e0d92b9cc20b vim.ui: change open() to return pcall-like values #28502 FEATURES -------------------------------------------------------------------------------- - a66b0fdfaa35 NVIM_APPNAME supports relative paths #25233 - c0beb8173fe2 add .luarc.json (#24592) - 14b7ffcf89bc add __call typing for vim.inspect() - ca7e488cfeb1 add link in issue template to minimal config template - 4bf47222c973 add vim.text module (#26069) - 0ebc4de0ff93 allow opting in to builtin clipboard providers (#28083) - e8d3c4cccb9d generate types and docs for v variables - 29fe883aa916 ignore swapfile for running Nvim processes #25336 - 28d1640dd604 improve return type annotations for vim.api.* - 199a990c9e4e report "build" in vim.version() #23925 - e68879325393 tostring(vim.version()) - c559ab0ae6be update unicode tables (#27317) - ecdb6465e272 vim.version() returns a Version object - 4b60267f82ef :source: source current ft=lua buffer as Lua code (#23802) - 428edcde7068 api: add forward and back mouse buttons - 037ea6e786b5 api: add nvim__redraw for more granular redrawing - ca9f6f56949d api: add nvim_tabpage_set_win (#27222) - db8fe63a9398 api: add nvim_win_text_height (#24236) - 16513b303375 api: allow floats to be opened in non-current tabpage (#28480) - 6b4970f6e0ac api: allow open_win/win_set_buf in the cmdwin in some cases - 5d921e28c1cc api: allow win_close in cmdwin to close wins except previous - 472271199e48 api: allow win_hide to close cmdwin or non-previous windows - 6bba4becedae api: make nvim_open_win support non-floating windows (#25550) - b162adbb7ca4 api: pass 0 to nvim_get_chan_info for current channel (#27321) - 42bbc4fabcf9 api: support abbreviations in nvim_set_keymap - 98a4ed0a1106 api: support getting abbreviations (#26868) - d3d7d763f3e1 builtin: improve types - 748bc4d22d35 clipboard: add OSC 52 clipboard support - db57df04b6af clipboard: enable OSC 52 clipboard provider by default (#26064) - 734848dc1a9e colorscheme: add semantic tokens modifiers to builtin color scheme - 1e0996b57230 colorscheme: update treesitter groups - 73de98256cf3 comment: add built-in commenting - ae4ca4edf89e complete: support f flag for complete buffer part - 01c51a491330 completion: support completing more string options - ae3685798dea decoration: allow conceal_char to be a composing char - 30a5c28c8740 decoration_provider: log errors as error messages - 9711370c2645 defaults: add :Inspect to right-click menu (#28181) - 2613ba5000d4 defaults: enable 'termguicolors' by default when supported by terminal - 513fc461957f defaults: improve :grep defaults #28545 - c26dc1f77c79 defaults: map Q and @x to repeat in Visual mode (#26495) - 8758c6fb875f defaults: set g:netrw_use_errorwindow = 0 #24179 - 1d81d7a268f5 defaults: treat "•" as a list item prefix #24623 - 20b38677c22b defaults: use ripgrep (rg) for 'grepprg' if available - 61063653b06b defaults: visual CTRL-R for LSP mappings #28537 - 4ee656e4f357 diagnostic: add `vim.diagnostic.count()` (#26807) - 73034611c25d diagnostic: add default mappings for diagnostics (#16230) - fc6d713dd806 diagnostic: add support for many namespaces filtering in GetOpts (#28045) - 5ed9916a28b9 diagnostic: enable(…, opts) - e7801775060e diagnostic: filter diagnostics by specific severities (#24736) - b13e63db1dbc diagnostic: goto functions jump to highest severity (#28490) - 26765e8461c1 diagnostic: is_enabled, enable(…, enable:boolean) - 9cb7e00b9748 diagnostic: provide more control over virtual text display (#24724) - ee41153a9458 diagnostic: revert default behaviour of goto_next/prev() - 07b60efd8058 diagnostic: specify diagnostic virtual text prefix as a function - a3b39784744f diagnostics: support numhl and linehl for diagnostic signs - 0381f5af5bdc diff: grouping optimization for linematch algorithm - 42333ea98dfc docs: generate builtin.txt (#24493) - 9beb40a4db56 docs: replace lua2dox.lua - 1d4a5cd18537 eval: exists() function supports checking v:lua functions (#26485) - 4a1ad676ce0b ex_cmds: no error on :lua with {range} and {code} (#27290) - c2433589dca0 ex_cmds: ranged :lua #27167 - b04286a187d5 extmark: support proper multiline ranges - 1c032ad703a1 extmark: window scoped extmark - 68cb4a7405ea extmarks: add "undo_restore" flag to opt out of undo-restoring - 4e6f559b8c5f extmarks: add 'invalidate' property to extmarks - c249058758af extmarks: add sign name to extmark "details" array - bbd5c6363c25 extmarks: add virt_text_repeat_linebreak flag (#26625) - 15e77a56b711 extmarks: subpriorities (relative to declaration order) (#27131) - f0884f21fa0c extmarks: support hl_mode "combine" for inline virt_text (#24099) - 372aa2eb3db3 float: add fclose command - 35570e4a11be float: implement footer - 4200a0f1678c float: support toggle show float window - 1233ac467de7 fold: transparent foldtext - 71530cc97257 folds: support virtual text format for 'foldtext' (#25209) - 38b9c322c97b fs: add vim.fs.root (#28477) - e3e6fadfd828 fs: expose join_paths as `vim.fs.joinpath` (#23685) - bc67cf3ccdf9 gen_help_html: add anchors to help tags #25112 - b0cf9c5feeae gen_help_html: ignore pi_netrw.txt errors - 81d8fce8f9e1 gen_help_html: non-default vimdoc.so parser - da09f9b551ba gen_lsp.lua: protocol.Methods #24504 - f41496ce74fb gen_lsp.lua: sort by name, handle failure #24504 - 3692fd4c873a gen_lsp.lua: validate CLI args #26514 - 2ff2785c396e health: checkhealth buffer can show in a split window (#26714) - 4382d2ed564b health: fold successful healthchecks #22866 - d1bc6fca7123 health: list attached buffers in LSP report #23561 - 2877672d70e7 health: make :checkhealth support more split modifiers (#26731) - ddda5e0a488b help: hide filename of "gO" outline using conceal #27547 - e72c0cd92090 highlight: Allow hyphens (-) in highlight group names (#24714) - 986bf7e78d09 highlight: add `FloatFooter` highlight group - 574519d9d68f highlight: tweak default color scheme - 64a14026d76b highlight: update default color scheme - a79694a08ede issue_template: instruct not to include a package manager - 69ffbb76c237 iter: add `Iter.take` (#26525) - cebc00603ea3 l10n: update Turkish translations #24246 - fec51229c4a0 l10n: update Ukrainian translations (#24882) - 996dd36c7732 lsp: add actionable advice to lsp client quit error msg (#24510) - 4ff3217bbd87 lsp: add fswatch watchfunc backend - 643546b82b4b lsp: add handlers for inlay hints (#23736) - 317c80f460a7 lsp: add method filter to get_active_clients (#24319) - 688860741589 lsp: add more LSP defaults (#28500) - 0fe86f7e2403 lsp: add opts paramater to vim.lsp.codelens.refresh - 131a1ee82d15 lsp: add original LSP Location as item's user_data in locations_to_items (#23743) - f1775da07fe4 lsp: add snippet API (#25301) - db0ec84fb46b lsp: add type annotations for lsp.util.locations_to_items (#26694) - f190f758ac58 lsp: add vim.lsp.buf.subtypes(), vim.lsp.buf.supertypes() (#28388) - 451bc50d40ee lsp: deprecate severity_limit - e9b85acfbb8d lsp: enable workspace/didChangeWatchedFiles by default (#23190) - 4a09c178a190 lsp: fallback to code-action command on resolve failure (#25464) - 2f22ed6a00db lsp: handle multiple clients in omnifunc (#24381) - 63b340855156 lsp: implement textDocument/diagnostic (#24128) - 5e3cf9fb4bc7 lsp: improve control over placement of floating windows (#24494) - 15641f38cf4b lsp: include positionEncodings in default client capabilities - ddd92a70d2aa lsp: initial support for dynamic capabilities (#23681) - ca5de9306c00 lsp: inlay hints #23984 - 350d81856473 lsp: inlay_hint.is_enabled({filter}) #28523 - 33e1a8cd7042 lsp: map K to hover by default #24331 - 97bea3163a3f lsp: more annotations - 37079fca58f3 lsp: move inlay_hint() to vim.lsp (#24130) - 12c2c16acf70 lsp: opt-in to dynamicRegistration for inlay hints (#24102) - a49924a31852 lsp: remove notify from vim.lsp.buf_detach_client (#25140) - 8149bd089e15 lsp: report fswatch errors - fb54e6980ea6 lsp: set client offset_encoding if server supports positionEncoding - 96e19533f60a lsp: set kind in select call for codelens #23889 - 9af355964306 lsp: set workDoneToken in initialize request (#28182) - f736b075d371 lsp: snippet parsing using lpeg - 134b9ec48361 lsp: soft deprecate vim.lsp.for_each_buffer_client (#24104) - 63f9c2da9aab lsp: support completion itemDefaults - 3f788e73b345 lsp: support connect via named pipes/unix domain sockets (#26032) - 7e36c8e972f0 lsp: support for choice snippet nodes - 5c40f3e86a81 lsp: support vim.lsp.ListOpts.loclist in location_handler() - abd2352bd8b8 lsp: update LSP protocol 3.18 typings to date (#28730) - cfd4a9dfaf5f lsp: use treesitter for stylize markdown - d5063f4b290e lsp: vim.lsp.inlay_hint.enable(nil) applies to all buffers #28543 - c0952e62fd0e lua: add `vim.system()` - 9248dd77ac58 lua: add hl priority opts on yank (#23509) - 642586977158 lua: add meta file for vim submodules (#24525) - 3734519e3b4b lua: add noref to deepcopy - 7c661207cc43 lua: add ringbuffer (#22894) - 877d04d0fb83 lua: add vim.func._memoize - ab1edecfb7c7 lua: add vim.iter (#23029) - d675bd01b1e7 lua: allow vim.F.if_nil to take multiple arguments (#22903) - c379d72c4905 lua: allow vim.wo to be double indexed (#20288) - e52c25b7617a lua: deprecate vim.tbl_add_reverse_lookup - f1dfe32bf555 lua: enable(enable:boolean, filter:table) #28374 - 5b40a1c09dda lua: implement Iter:join() (#26416) - c01e624b0762 lua: more specific error messages for vim.api type checking - e1ff2c51cad7 lua: pass keys before mapping to vim.on_key() callback (#28098) - 2db719f6c2b6 lua: rename vim.loop -> vim.uv (#22846) - 6c0812d92e0c lua: specific error messages for type checking `opts` params - fd089c8e50c2 lua: typing for vim.fn.* (#24473) - 302d3cfb96d7 lua: use callable table as iterator in vim.iter (#23957) - 51c754b62e79 lua: use keyset type information - 8e5c48b08dad lua: vim.fs.normalize() resolves ".", ".." #28203 - 7e70ca0b4808 lua: vim.keycode (#22960) - 9e86f473e0f4 lua: vim.region accepts getpos() arg (#22635) - 4d04feb6629c lua: vim.tbl_contains supports general tables and predicates (#23040) - 48d533272e57 lua-types: types for vim.api.* (#24523) - 25e729970712 man: allow opening pages in current window (#27861) - 08db61b19b8f man: respect 'wrapmargin' when wrapping man pages (#24091) - f9944a78bcd3 meta: add types for vim.lpeg - deb6fd670479 msgpack-rpc: show actual request id in error message - 01fe6b9e6a84 msgpack_rpc: support out-of-order responses on `msgpack-rpc` - 619407eb548c nvim_open_term: convert LF => CRLF (#26384) - e98decf9a68e quickfix: support -q - to read 'errorfile' from stdin (#27303) - 7b0123dd6a06 remote: avoid --remote-ui infinite loop (#24465) - cca6c4c6986a rpc: allow empty string key in msgpack => Vim conversion - d0d4160dd13f runtime: highlight hl groups in syntax.txt (#25050) - 5f4895200a49 scripts: add lsp_types.lua (#23750) - 4e6096a67fe9 server: allow embed with listen (#25709) - 170c890dca8f shortmess: "q" flag fully hides recording message (#27415) - d3582e102b7b statuscolumn: re-evaluate for every screen line (#25885) - 224f303ee54c stdlib: add vim.base64 module (#25843) - fa131de9adb7 tabline: middle mouse button now closes tab (#27522) - c855eee919f2 term: enable reflow by default (#21124) - cd1b14f027f3 termdebug: improve `:Evaluate` floating window (#26621) - cffdf102d4f0 terminal: allow :terminal to take modifiers (#15427) - 0c89854da189 terminal: close shell terminals automatically - 7589336120a2 terminal: respond to OSC background and foreground request (#17197) - beca827212b1 terminal: trigger TermRequest autocommand events (#22159) - c6ec7fa8d741 treesitter: add 'injection.self' and 'injection.parent' - 6cfca21bac6b treesitter: add `@injection.filename` - 5d8ab32f3871 treesitter: add a query editor (#24703) - cb0a1a10b224 treesitter: add bash parser and queries - bb15fa035610 treesitter: add folding for `InspectTree` (#27518) - 9ce1623837a8 treesitter: add foldtext with treesitter highlighting (#25391) - 31c4ed26bc27 treesitter: add injection language fallback (#24659) - 28f54a787823 treesitter: add lang parameter to the query editor (#25181) - 88c8803aa167 treesitter: add python parser and queries - c194acbfc479 treesitter: add query_linter from nvim-treesitter/playground (#22784) - af040c3a079f treesitter: add support for setting query depths - 11844dde81c4 treesitter: bundle markdown parser and queries (#22481) - 5e6240ffc24e treesitter: handle quantified fold captures - f69658bc355e treesitter: highlight Lua files by default (#26824) - 988b472d902e treesitter: highlight help files by default (#26347) - 845d5b8b6419 treesitter: improve query error message - 189fb6203262 treesitter: improved logging (#23638) - c0b99bb1de8d treesitter: show root nodes in :InspectTree (#26944) - cb46f6e46726 treesitter: support URLs (#27132) - ff6092b4ee3c treesitter: update Bash parser and queries to v0.21.0 - 8dda630ae942 treesitter: update C parser and queries to v0.21.0 - 3836eeb90182 treesitter: update C queries from upstream - aca4ad430bdc treesitter: update Lua parser and queries to v0.1.0 - 5e875ae8d07d treesitter: update Markdown parsers and queries to v0.2.1 - 8a3385dde75f treesitter: update Python parser and queries to v0.21.0 - 20dcbaaaf880 treesitter: update Vim parser and queries to v0.4.0 - 987dff6713af treesitter: update Vimdoc parser and queries to v2.4.0 - 1384bebd5aa3 treesitter: update query parser to v0.2.0 - 668f16bac779 treesitter: upstream query omnifunc from playground (#23394) - a478bf936b2a treesitter: use 0-based indexing to show ranges in `:InspectTree` - ac8ed77afb35 tui: add 'termsync' option (#25871) - 4ee9e58056a9 tui: query extended underline support using DECRQSS (#28052) - b4b7ca2d548a tui: support DCS responses in TermResponse event (#26061) - 622ae2f53e77 tui: support Super and Meta modifiers (#24357) - a14267036076 tui: support undercurl in WezTerm (#28037) - 56627ca2423e tui: use TermResponse event for OSC responses (#25868) - 32b49448b227 tutor: add Japanese tutor #27268 - 9c2270b83459 types: add `test/.luarc.json` - d3a8e9217f39 ui: add chdir UI event (#27093) - 6ea6b3fee27d ui: add support for OSC 8 hyperlinks (#27109) - b72931e70407 ui: allow non-zero 'cmdheight' with ext_messages - 2615ed879e66 ui: allow to get the highlight namespace - e38027ef69f7 ui: completeopt support popup like vim - 2e4e12756a69 ui: indicate margins for the area used by win_viewport - efa9b299a7cb ui: inline virtual text - dacd34364ff3 ui-ext: make 'mousehide' into proper ui_option (#25532) - 43ded8d35844 version: unverbose ":version", ":verbose version" #24195 - 0a598c13b186 vim.deprecate: only issue warning if neovim version is high enough - a767c046f4e6 vim.iter: add Iter:flatten (#26786) - af6e6ccf3dee vim.ui: vim.ui.open, "gx" without netrw - fa4b02fa67e5 vim.version: add `vim.version.le` and `vim.version.ge` - 27a566f3f8e0 vimdoc: support Markdown code blocks (#25127) FIXES -------------------------------------------------------------------------------- - f5573fba3d46 Remove nested for_each_tree in TSTreeView (#26328) - ae28ef327e02 adjust error message for error in UI event callback (#28200) - ebe489d8f0ed allow multiline message for echoerr (#25380) - 592bc831ce4b avoid ui_grid_cursor_goto when drawing window separators - d6483793e1c3 buffer overrun in lmpack_session_receive - 3bbb0aa3993f checkhealth warning even if init.lua exists #25306 - 5cb906e91cb5 correct versions in deprecation warnings - 118fd8367c39 deduplicate gen_cflags - eb4676c67f5d disallow removing extmarks in on_lines callbacks (#23219) - 6e9b204afbe5 doc errors - 77d3526a3d08 explain that user should run nvim with -V1 to see more information - fd791db0eceb fix ASAN errors on clang 17 (#25469) - bb38c066a965 fix compiler warning from clang - 478273a4233d fix iter_matches call in query linter (#27496) - bb7324292cda flush UI state before blocking in vim.wait (#25938) - 44d4ae448d0a function was renamed (#23772) - 1dd700a8d927 gf fails on "foo/bar.txt:1:2" on Windows - 6e703f778fe7 handle argv not present in nvim_get_chan_info - 56dc8b9212ef heap-buffer-overflow in file_name_in_line - 74b2f6c3d956 ignore non-existent properties during header generation - f5a09f1b0352 invoke changed_bytes when rewriting <Tab> char #25125 - b8273c9a3396 lua annotations - 69d49727d776 luacheck - 4ce3159e24e1 missing case in setxattr error handling (#26176) - 41fb98d6fab5 move fswatch linux check inside of vim.schedule (#27824) - ba58c6f8a44c only attempt to close timer if not already closing (#26047) - b400b947f368 prevent child processes from inheriting ui channel file descriptors - 99b8a343e197 quick update, squash later - 83b51b36aa46 raise TS min version - a090d43d61b5 splitting of big UI messages - 2424c3e6967e support UNC paths in vim.fs.normalize - 43e76cc3462b tostring(vim.version()) fails if build is NIL #24097 - 8c7a8be27437 transposed xcalloc arguments (#28695) - 35f453f65df2 type warnings in shared.lua - f112ac73bd34 unreliable "checkhealth completions" test - b32b5b2711ed use BEL to terminate OSC 11 request (#26335) - d95e3a4c9c8f use no_ff instead of ffdos as condition - a1bec02c1e10 use snprintf instead of sprintf - ca887b80a911 version-range < and <= #23539 - c1ee187f8214 vim.loop in luv threads (#23924) - fe4583127f0a vim.validate() order is not deterministic #28377 - be8b15200d70 windows timeouts have exit code 1 - 1f8fb7c00048 :let: fix error when applying operator to boolean option (#24030) - 5a3752889c5b NVIM_APPNAME: show error message if $NVIM_APPNAME is invalid - c4ad15ae324f PVS/V009: add top-level message - 128e194f64b0 PVS/V1001: variable is assigned but is not used - 1bbbca267d05 PVS/V547: expression is always true/false - 592e4472da5f PVS/V564: the '|' operator is applied to bool type value - 30d311ebcf94 PVS/V592: expression is enclosed by parentheses twice - 3ecd45ded044 api: allow negative column arguments for nvim_buf_set_text (#23501) - 3ac952d4e27f api: avoid assertion when autocmd group id is 0 (#23210) - b2a8a9314798 api: avoid immediate TextChanged with nvim_create_buf (#25492) - ef7ae66eef4e api: avoid integer truncation - b1e24f240bae api: avoid open_win UAF if target buf deleted by autocmds - 0a81ec14a4c0 api: better topline adjustments in nvim_buf_set_lines - c18f3cfcdb8f api: crash after nvim_win_set_config title/footer validation error (#26606) - aa4e47f704c5 api: disallow some more functions during textlock - 22d9338afcea api: disallow win_set_buf from changing cmdwin's old curbuf (#24745) - da979ae04b7a api: do not re-apply win_config.style when missing - 344906a08f09 api: do not update grid position in nvim_win_set_cursor (#28235) - 22205f36a621 api: don't change title when setting buffer in a window (#23492) - 711a2f5ff67d api: don't leak memory with nvim_win_get_ns (#27570) - 1cf51a07a6bf api: don't set coladd of mark (#26648) - 5fd1bac65ed0 api: don't use stl 'fillchar' for "use_statuscol_lnum" (#27501) - a3751f5de22f api: dont change curwin for nvim_win_set_height - 1ff4562502e1 api: dont change curwin for nvim_win_set_width - 59fed8bb6457 api: extmark highlight groups not always included in details (#23179) - 9b9030ff2ca8 api: fix inconsistent behavior of topline touched in recent refactor - fc2a56fe61a9 api: fix set_lines viewport adjustment, but this time good - b7763d7f6b7f api: get virtual text with multiple hl properly (#25307) - b3be7b741386 api: handle NUL in nvim_err_write() and nvim_out_write() (#25354) - 132bbd1cbd49 api: handle clearing out last line of non-current buffer - d942c2b9432d api: handle win_split_ins failure properly - 5cfdaaaeac0f api: ignore 'autochdir' when renaming other buf (#28376) - 2fc234372883 api: ignore 'autochdir' when setting buf in other win (#28371) - 7367838359bf api: limit depth of nvim_cmd (#27225) - 0da27e9bdec1 api: load buffer first on nvim_buf_set_lines (#25823) - 4e5c633ed487 api: make getting explicit empty hl in virtual text work (#28697) - d05d63a18ff8 api: make nvim_get_hl not return non-existing groups - a70eae57bd44 api: make open_win block only enter/leave events if !enter && !noautocmd - 5d58136cccc7 api: make open_win/win_set_config check if splitting allowed - 4ec8fd43bfdf api: make width/height for split by nvim_open_win work (#28341) - b1577d371a6d api: make win_set_config with "win" for splits need "split/vertical" - 0330dd9e69de api: mark nvim__complete_set as experimental #28579 - d22172f36bbe api: more intuitive cursor updates in nvim_buf_set_text - b051b131f5ce api: nvim_buf_get_offset in a new buffer with zero or one lines - e0453d7f5743 api: nvim_cmd{cmd="win_getid"} parsed as :winsize #24181 - 6091df6b7a06 api: nvim_create_buf assert fails if autocmds set &swapfile - d5c23d72a5e4 api: nvim_create_buf leaks memory if buffer is loaded early - b7708eac24c2 api: nvim_get_hl should return default flag - a741c7fd0465 api: nvim_parse_cmd error message in pcall() #23297 - e55a502ed413 api: open_win fire Buf* events when !enter && !noautocmd if entered early - a873f33993ef api: open_win fire BufWinEnter for other buffer when !enter && !noautocmd - e7c262f5553c api: patch some cmdwin/textlock holes - a9968912b741 api: redundant error when using `nvim_cmd` (#24010) - dbcba26bf1e4 api: revert unintended change of optional bool params - b25753381c60 api: set script context when using nvim_set_hl (#28123) - d3ea9a04bc73 api: update "w_scwidth" in nvim_eval_statusline() - c971f538ab87 api: update grid cursor in nvim_win_set_cursor() - 130cb4815a5c api: use a conditional stack for nvim_cmd (#26341) - cf9f002f31c8 api: use correct buffer for "range" in nvim__redraw (#28614) - 77118d0da8ba api: use text_locked() to check textlock - bcb70eeac480 api: win_set_config autocmds crash when moving win to other tabpage - 233649bc7577 api: win_set_config fires unnecessary autocmds - b52d15853e89 api: win_set_config set tp_curwin of win moved from other tabpage - 54022a2946ac api: win_set_config update statuslines after removing splits - a9cd8467cbd5 api: wrong nvim_buf_set_extmark error for invalid hl_mode - 4d3a38ac074f api, lua: handle setting v: variables properly (#25325) - 92760a7f42a9 api, lua: make blank lines in a message work properly (#24244) - 08fc1ebbaa49 api/buffer: fix handling of viewport of non-current buffer - 24e3ee9d07e1 api/options: validate buf and win - 139e6f68f937 autocmd: API functions accept garbage after event name #25523 - 02d00cf3eed6 backup: E1509 when writing extended attr to symlink (#28014) - 746a153bc1a1 base64: only check padding if leftover index is set (#25854) - 533e01a75b71 base64: properly handle embedded NULLs when decoding (#28349) - 095bd8d0f834 buffer: do not filter help buffer - e5d9b15044d5 buffer_updates: correct buffer updates when splitting empty line - 11865dbe3917 build: better deps for doc - ffaf74f1477d build: distinguish vim.mpack from global require'mpack' - f9416470b15b build: include FindPackageHandleStandardArgs - ade42d531bcc build: teach cmake about vvars - da7178cbbf4e builtin: fix incorrect optional fields for fn.sign_define - 6fa0f303d7f0 builtin: parameter mismatch between winsaveview and winrestview - 3159a2c28f5e change: update fold after on_bytes (#26364) - 342c7da4bd2c channel: use os_write() instead of fwrite() for stderr (#26689) - cd6458123fb4 charset: fix wrong display of 0xffff (#24158) - 603f3b36a4d5 checkhealth: error in node.js check #28348 - b0978fca6b82 checkhealth: fix crash due to incorrect argument type - 7f94a032e1cf checkhealth: shell_error and cpanm module - bfdec5b0e719 clang: null pointer dereference in parse_msgpack #25389 - 1027ccac6d0a clangd: check size of array before applying qsort on it - cdd801746943 clangd: set block pointer to null in case map is empty - 6851b265ba1d clipboard: don't pass --foreground to wl-copy (#25481) - c3de6524a53d clipboard: ignore exit caused by signal #23378 - 3128cff6b198 clipboard: increase OSC 52 wait timeout (#25936) - 46ceefb52be6 clipboard: make getreg() accurate for clipboard registers (#26740) - d2983dcdb1ca clipboard: make osc52 work with PUC Lua (#26014) - e51e52417550 cmake: restore previously undocumented workround, now documented - 3688735c2b63 cmdline: don't redraw 'tabline' in Ex mode (#24123) - c72d877c3374 cmdline: wrong 'incsearch' highlighting after :redraw (#27947) - bc67bbe4469b codelens: add buffer and line checks before displaying codelens (#23887) - 2b1a6e759709 colorscheme: add missing LSP groups - 0c850add3ece colorscheme: default statusline groups usability #26921 - 8b2365369503 colorscheme: link LSP semantic tokens to treesitter groups - 62e0e0349c00 colorscheme: try .lua files in 'rtp' before .vim files in 'pp' (#23727) - eca72def1f08 colorscheme: typo - d4bd6b1eaab3 colorscheme: use explicit normal foreground in syntax groups - 3c724fe1f3ef column: 'statuscolumn' not drawn after virt_lines with "n" in 'cpo' (#22967) - cdc028e97d98 column: add truncated width during estimation for 'statuscolumn' - e89071522cb0 column: always set b_signcols.max - c126a3756a09 column: apply numhl signs when 'signcolumn' is "no" (#26167) - 2ded2e75f4a6 column: avoid exceeding configured 'signcolumn' width - b50fdcba4a1d column: clear "b_signcols" before moving saved marks - 13d50c3b13fb column: clear "b_signcols" when marktree is cleared - ec7453804421 column: correct width after truncated 'statuscolumn' error (#26737) - 2bdef6dd2a75 column: don't overflow sign column with extmark signs (#23854) - bab4bcdefbda column: don't reset 'statuscolumn' width after it has been drawn - c509f4907bf7 column: fill 'statuscolumn' clickdefs with evaluated width (#26891) - 25e62697c32e column: fix wrong cursor with 'statuscolumn' and cpo+=n (#24268) - dbf6be296df6 column: full redraw with 'stc, 'rnu' and inserted lines (#27712) - 7d0a23973b7d column: handle unprintable chars in 'statuscolumn' (#24198) - 0db6946b39fd column: handle w_redr_statuscol at end filler lines (#27365) - 97122eaa1cbe column: ignore empty signcols range (#28177) - 967c7abde3c6 column: keep track of number of lines with number of signs - f871fee8b699 column: pass kFalse when initializing "b_signcols.count" - 44d4f0357341 column: rebuild status column when sign column is invalid - c6864b0d146f column: redraw 'statuscolumn' on wrapped lines with 'relativenumber' - 35cec0de4acd column: redraw and update signcols for paired extmark - d88814ef68b3 column: remove sign from line it was previously on with undo - df399ea0d20e column: reset decor state before starting from top - 5a4e0b837f90 column: use a single path for sign sorting (#27431) - a878e02d5de7 column: use maxwidth to allocate/fill 'statuscolumn' click defs #24190 - 783b0aba4116 completion: check that healthcheck name is string (#28458) - fbeef0d4ef1a completion: don't add backslashes to runtime pattern (#24296) - cdc8bacc7945 completion: filter results with complete+=f (#26029) - af8500af6457 completion: improve popup window position (#26739) - d1b2a5cf5fa5 completion: make sure the buffer name is valid (#25975) - e9b9a86cd5a5 context: don't crash on invalid arg to nvim_get_context (#25977) - fdaf6bc5573f context: don't leak memory on multiple invalid objects (#25979) - 55be4a4e26ea coverity: dead code #25562 - 6d698c86d0bd coverity: unhandled retval for marktree_itr_get_overlap() #26518 - 6f49ed58c3d8 coverity/348240: memory leak in put_view() - 9d48266bed96 coverity/471380: null dereference in get_local_additions() - ae48d965d70c coverity/477623,477624: guard null pointer dereference in kv_concat_len (#27022) - 2b0acacb3c2c decor: allow adding providers during redraw - 5ca330859cf2 decor: check decor kind before accessing union field (#27205) - 60d320dea3fe decoration_provider: don't leak memory on error (#24410) - 65738202f8be decorations: better approximation of botline #24794 - 2accf2480530 decorations: crash with revised mark with changed decoration flags - a0e9ef09d7af decorations: do not apply sign highlight id as range attr id - fba17d5b882e decorations: fix imbalanced sign count - 444f37fe510f decorations: incompletely displayed line should also get decorations - dc48a98f9ac6 decorations: validate botline for on_win - 328a2373514a defaults: auto-close terminal for &shell with args (#28276) - 5aa1ba3efe05 defaults: background detection in tmux (#26557) - 5e98439f6d8c defaults: diagnostic mappings descriptions #28646 - ccb5a76e5a2c defaults: don't use nvim_feedkeys in default mappings (#24520) - 85cb0b0ddc59 defaults: make terminal autoclose not block other events (#27581) - aa1d0ac095dc defaults: only repeat macro for each selected line if linewise (#28289) - eef2aedff631 defaults: remove tmux background detection passthrough (#27571) - 5b45efbee6eb defaults: set 'fsync' #26034 - 8df374237814 defaults: use augroup for default autocommands (#26933) - a8e4ee2f2b43 defaults: validate 'channel' before responding to OSC request (#27594) - 6318edadc32a defaults: visual hash (#) on text with "?" - abd380e28d48 defaults: visual mode star (*,#) is fragile - b9a0e762f1d7 defaults: visual star (*) on text with "?" - 9b4b23493d69 defaults: wait until VimEnter to set background (#26284) - 72e3d8c3f949 deps: bump luv to 1.48.0-2 - 87db6d894ad2 deps: make sure --force-config takes effect - 7aad4643f9a6 deps: remove stray conflict marker - 8a6716682e6e deps: restore functionality of USE_EXISTING_SRC_DIR - d4dc884012e8 deps: restore functionality of USE_EXISTING_SRC_DIR - d27214331815 diagnostic: always return copies of diagnostic items (#25010) - 29d5ff6ac4ea diagnostic: check for sign namespace instead of sign group - 3d8f0cb695a5 diagnostic: check if delete failed in `qf_fill_buffer()` (#25932) - 89ffdebd20fd diagnostic: fix typing on field |diagnostic-severity| - 83635e4e3db9 diagnostic: get border from config (#28531) - 96f59e1b9902 diagnostic: invalid col number compare in next_diagnostic (#28397) - ad76b050eb2c diagnostic: open_float on multi-line diagnostics #28301 - 37011bc45ef3 diagnostic: rename buffer → bufnr in type annotation (#23042) - 50284d07b6f0 diagnostic: typing - a4fc3bb0e68c diagnostic: vim.diagnostic.get(…,{lnum=…}) on multi-line diagnostic #28273 - add1b10b7901 diagnostic: virtual_text prefix function should have index and total (#25801) - 35f475d0a51a diagnostics: if buffer not loaded, skip handlers that set extmark (#25628) - 5a25dcc5a4c7 diff: filler lines for hunks bigger than linematch limit (#24676) - 2f9ee9b6cfc6 doc: improve doc generation of types using lpeg - c4417ae70c03 doc: prevent doxygen confusion - 67f53323446d docs: clean up non-docstring comments for vimdoc gen - ae7020c667b5 docs: fix TSNode incorrect signatures - ab65a98adba4 docs: ignore_invalid #24174 - f40df63bdca3 docs: make lines not overflow in vim docs - 0a90e4b05ad3 docs: match DocSearch style with site theme - 0d149bb18639 docs: the runtimepath is not the runtime path - 957d05d16bc8 docs: too much whitespace around <pre> blocks #24151 - d931b829e926 docs: vimdoc syntax errors - 036da0d07921 docs: vimdoc syntax errors - 17c59e417f81 docs: vimdoc syntax errors - 34b57508a78b drawline: check filler_todo in place of removed draw_state (#27889) - 455bca1ba86a drawline: combine extmark highligh with area hl correctly - 329979715063 drawline: consider position in linebuf for foldcolumn (#26803) - 889f81c65fa4 drawline: don't invoke on_line for filler line (#28219) - 2b9d3869f8f3 drawline: don't use temporary "v" variable when not needed (#26777) - 06694203e51e drawline: fix missing Visual hl on double-width fold char (#24308) - d5488633f68f drawline: initialize linebuf_attr to 0 instead of -1 (#27840) - e9280a68f7ea drawline: initialize variable - 2819718873a3 drawline: initialize variable - 36941942d609 drawline: inline virt_text hl_mode inside syntax/extmark hl (#24273) - 37b73cf14b11 drawline: make cursorlineopt=screenline work with resized grid - be1d09c42722 drawline: missing NUL termination when drawing TAB (#27307) - 5b3144781137 drawline: update prev_ptr after getting syntax attrs (#27072) - 14839c5d18c2 edit: backspace adds extra spaces for inline virtual text (#28005) - 267e90f31d18 edit: don't go to Terminal mode when stopping Insert mode (#27033) - b2e8c0df2062 edit: fix K_EVENT interfering with 'digraph' (#24258) - 143a17833280 editorconfig: add missing root validation (#23462) - cbbda3bcd775 editorconfig: check that buffer is valid (#23922) - abb8c2c453d1 editorconfig: do not set 'endofline' - df2f5e39127e editorconfig: highlight properties with dashes (#24407) - dc45fb4655f5 editorconfig: only warn once on errors - cdbc3e3f3e95 editorconfig: syntax error regression - bf0c69e50410 eval: correct failure return value for readfile/blob (#27722) - 5b312cd5f676 eval: make has('pythonx') work properly (#27739) - 0e4086b74189 eval: prevent double-free in garbage collection (#22990) - 12d123959f56 eval: properly support checking v:lua function in exists() (#27124) - b8c34efe3399 eval: skip over v:lua properly (#27517) - ad2fad9a3b07 event-loop: flush UI when no input is available (#25728) - 672556525893 event-loop: process input before events (#27358) - 58a1ef8e6a93 events: avoid unnecessary CursorMoved (#24675) - bf9e92c81c3c events: check for WinResized/WinScrolled in terminal mode (#27226) - dd24ea819507 events: don't expand non-file as file name - 774a32e5fe73 events: null dereference in autocmd functions - a8cfdf43bc62 events: trigger VimResume on next UI request (#24426) - a114a21eff58 ex_getln: initialize pointer with NULL - 9e7c4fe57915 exception: remember whether message is multiline (#25351) - 4a098b97e535 excmd: append original command to error message - 75d9c413d492 excmd: make :def unknown rather than unimplemented (#23150) - f1dd75c2af40 exitfree: don't use ex commands to close windows in free_all_mem() - 79a558277b1b extmark: fix crash when stepping out from internal node - a78fd18ed92d extmark: fix cursor position with both left and right gravity inline text - 320e9c1c2181 extmark: only invalidate unpaired marks on deleted rows - 8e97edb93f01 extmark: restore extmarks when completing original text - 2d33a766a17b extmarks: `U` changed_bytes after extmark_splice (#26501) - 23c21e763074 extmarks: account for rightleft when drawing virt text (#25262) - d54156ed08b8 extmarks: blending space shouldn't overwrite wide char (#26960) - 54225bdb021e extmarks: crash with sign after many marks - 65b1fd00a7aa extmarks: do not remove decor from invalid old marks - 437d35dbf7d9 extmarks: do not remove invalid marks from decor upon deletion - a05bbc60eaf2 extmarks: don't position overlay virt_text halfway a char (#24027) - 4dd43e31db8f extmarks: don't show virt lines for end mark (#23792) - dfa8b582a64a extmarks: draw TAB in virt_text properly with 'rl' (#25381) - a6e4793bafa0 extmarks: draw virt_text below diff filler lines properly (#25170) - 958cc22836f1 extmarks: empty inline virt_text interfering with DiffText (#24101) - 0534ad8ca57b extmarks: empty inline virt_text interfering with Visual highlight - 31a51acdc353 extmarks: fix heap buffer overflow caused by inline virtual text (#23851) - 9c41a81dec15 extmarks: fix virt_text_hide off-by-one hiding (#23795) - a6dd67f5b66c extmarks: fix virt_text_hide with 'nowrap' and multibyte (#23757) - 818d7f6daf30 extmarks: fix win_col virt_text drawn on wrong screen line (#25264) - c4df2f08b689 extmarks: fix wrong highlight after "combine" virt_text (#24281) - b65cd7ff1a0a extmarks: fix wrong virt_text position after wrapped TAB (#25168) - 4c7cec4e2934 extmarks: handle inline virt_text with empty chunk (#24005) - ee3d4f6b90d0 extmarks: handle overwriting right half of wide char (#26951) - f4f1ce1d167c extmarks: hide inline virt_text properly with 'smoothscroll' (#24106) - 34a786bc4959 extmarks: inline virt_text support multiple hl groups (#25303) - 5a6c7c805b8b extmarks: make empty "conceal" respect &conceallevel = 1 (#24785) - 510e1f131b56 extmarks: make right_align and win_col work on wrapped line (#23759) - 215244f74950 extmarks: missing "spell" and "conceal" in details (#27116) - 35e50d79c630 extmarks: overlay virt_text position after 'showbreak' (#25175) - a0790558c309 extmarks: priority order of inline and non-inline virt_text (#27532) - b52bd8a2dea8 extmarks: properly handle virt_text on next screen line (#25166) - a376d979bda1 extmarks: redraw line on adding/removing conceal (#27463) - 2d9e063a63f8 extmarks: redraw pre-undo position (#27437) - 2137edbd4f15 extmarks: redraw properly with scoped inline virt_text (#27569) - 1cc358aed6fd extmarks: restore old position before revalidating - 0818d655288e extmarks: skip virt_text if it is out of window (#25658) - 19d63563e1cc extmarks: splice earlier when opening new line (#28108) - 362df0f7938a extmarks: wrong display when changing text with virt_lines (#24879) - d5a85d737aa2 f_wait: flush UI before blocking (#25962) - 81f67b79e8a3 file_search: path with spaces in finddir() and findfile() (#25493) - a69c72063994 fileio: fix off-by-one in rename_with_tmp (#27780) - c6c21db82b31 filetype: add typing and dry (#24573) - 020d1f626a3f filetype: call on_detect before setting buffer filetype - fdf5013e218c filetype: correctly detect bash-fc-{id} files as "sh" - d6f406db4527 filetype: don't use fnamemodify() with :e for extension (#27976) - 670c7609c855 filetype: make sure buffer is valid before call nvim_buf_call (#24922) - af38b46a2574 filetype: return on_detect function when matching by file contents - 2955c921ceaf filetype: use unexpanded file name (#27931) - e32af31ee89c flake: clang-tools moved to nativeBuildInputs (#26955) - fd08fd3de302 float: add fixd option - 884470124db3 float: allow floating window in cmdline area - 9ecb43b6372f float: apply 'winblend' to title/footer highlight (#25999) - 898371fc9fae float: don't relative flaot win itself - fcdfbb430377 float: fix some other crashes with :unhide or :all (#25328) - 3ea124a8d9f0 float: improve error message when reconfig failed (#25076) - c5abf487f19e float: make "fixed" work with relative=win (#25243) - 03e8b5fc91f9 float: make bufpos work properly with resized parent grid - 437ed3cee2d2 float: trigger winnew event when float window create - f5953edbac14 float: update position of anchored windows first (#25133) - 9de157bce4b6 float: win_get_bordertext_col returning negative column number (#25752) - 5f18dd301375 float: wrong position when bufpos is set - 0e01e815520e folds: allow overlay virtual text on folded line (#23892) - ee986ee0449b folds: combined Folded and Visual highlights (#23752) - ded01a819ab0 folds: don't show search or match highlighting on fold (#24084) - 811140e276a6 folds: fix missing virt_lines above when fold is hidden (#24274) - 678548a2b446 folds: show Folded highlight in Visual selection (#23741) - 58f94861442d folds: update folds in Insert mode with fdm=indent (#24402) - 38e38d1b401e fs: allow backslash characters in unix paths - 8a7e3353eb5b fs: make `normalize()` work with '/' path (#24047) - ae5095cac9b2 fs: use generics for better typing - e4da418ba838 fs.lua: normalize slash truncation (#23753) - 06fcf71bd095 fswatch: --latency is locale dependent - 502a7a0558b0 ftplugin: respect runtimepath ordering - 03a2c5b77200 ftplugin: source Lua files after Vimscript files per directory (#23801) - be5cf3383622 gen_help_html: type warnings, spell_ignore_files #27254 - 6c35fb421e88 gen_lsp.lua: improve type name, and fix wrong type inheritance - 214b12513277 gen_lsp.lua: no notifications in lsp.Methods #24530 - 765729a145d3 gen_vimdoc: INCLUDE_DEPRECATED not generating docs for deprecateds - ccf328172bac gen_vimfn_types: don't include tag before signature's line (#24492) - 86c9d8b53cd9 gen_vimvim: correctly add aliases to vimAutoEvent (#23429) - 240c41e1af55 genvimvim: add special abbreviations of :delete (#23172) - 51ea753747c7 genvimvim: generate prefixed boolean options properly (#27487) - 9f32deba56ea grid: add start column when getting char on line (#25627) - 4ed1c2a8afc7 grid: don't draw beyond max column (#26172) - 9c202b9392f3 grid: handle clearing half a double-width char (#27023) - 6a486c44e66f gx: move to to _init_default_mappings #24420 - 67b2ed1004ae gx: visual selection, expand env vars - e39b6d0c5241 health: "attempt to concatenate nil" - 7ffe450173d2 health: check for _host_prog variables properly (#23014) - 50cd5ed360ee health: check more "old" files - f6dcc464f220 health: check unmatching python_glob as empty table (#28215) - 6818ba271cb4 health: clients may not support watchfiles #28710 - 03a021f378e8 health: combine python and virtualenv healthchecks (#23004) - c67efe3a9c5b health: correctly expand and resolve PYENV_ROOT (#26953) - 88eb0ad149d3 health: fix tmux RGB capability detection (#26886) - cde4892b4955 health: fix typo in function name - 63a17322dd83 health: improve python executable check error handling (#26954) - ba88fd886ae8 health: malformed call to warn() #26217 - 8c6f97bef89d health: properly use the value of $PYENV_VERSION (#23109) - c8ebb04e92c9 health: replace healthFoo with DiagnosticFoo (#23475) - 843c1bed95d3 health: stop job properly on timeout (#23877) - 96d0c709b66e healthcheck: expand vimrc variable (#28379) - 4229bbe514b7 helptags: make multibyte help tags work properly (#23975) - 7b6d041baed7 heredoc: allow missing end marker for scripts - a2f17e97ec2d highlight: add `FloatFooter` to 'highlight_defs.h' (#25577) - 837f26809373 highlight: add `Nvim{Light,Dark}Gray{1,2,3,4}` colors - 8afb3a49c076 highlight: add create param in nvim_get_hl - f8ea49cfe1f4 highlight: add force in nvim_set_hl - 4ce0ada0d4c8 highlight: add missing g: prefix for colors_name (#22952) - 03ca36d1f8d0 highlight: apply 'winblend' to NormalNC (#23555) - 6c3e170e5668 highlight: apply 'winblend' to float border (#25981) - d4872377fef7 highlight: attr set all when normal attr changed - dcaf2073369c highlight: combine ColorColumn with low-priority CursorLine (#23017) - 66925f14de81 highlight: consistently spell "Goldenrod" - 51836517738b highlight: correct hi command output - ca7dd33fa783 highlight: don't show CursorColumn on current line (#27848) - 59289fb987bd highlight: make CurSearch work properly with 'winhl' (#24448) - b11a8c1b5d39 highlight: remove unnecessary assignment to char_attr for 'spell' (#23713) - 9a2c98087b90 highlight: update `IncSearch` to link to `CurSearch` - ab9257575387 highlight: winhl receive wrong argument - b60a2ab4cb7b inccommand: block errors when parsing command line again (#24374) - bc5b0da84ec4 inccommand: don't crash with "split" and 'n' flag - 382ea4d40282 inccommand: don't preview in Ex mode (#26587) - c1c2a1b5dd1d inccommand: don't save information of a buffer twice (#24501) - ef44e597294e inccommand: don't set an invalid 'undolevels' value (#24575) - ba9f86a9cee5 inccommand: improve preview buffer number handling (#27087) - 643bea31b867 inccommand: restrict cmdpreview undo calls (#24289) - 1dba570e63ed inccommand: save and restore '[ and '] marks (#26442) - 35ffe58ea4a3 inccommand: update topline after moving cursor (#27341) - a14c7809181c input: set termkey buffer size to read stream capacity - b61575ba70f8 intro: clear intro if new buffer is shown in focused float - 9530a2301680 intro: link showing intro to state at start - 0570a19c8a84 intro: make intro explicitly stateful - d1a30221fcb1 intro: redrawing intro exposing pseudo-randomness - 21360523cd3d intro: still show intro message with floating window - 6b96122453fd iter: add tag to packed table - 2ee8ace217b8 iter: make pipeline termination conditions consistent (#24614) - 94894068794d iter: remove special case totable for map-like tables - 57ccd8241735 job-control: fix use after free (#25223) - 1c71c32b2910 job-control: make jobwait() flush UI after hiding cursor (#25927) - e057b38e7037 json: allow objects with empty keys #25564 - af6537bc66e2 jumplist: Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461 - 017ff93b020e keycodes: recognize <t_xx> as a key (#24700) - 6709f7f8f130 keycodes: simplify S- properly when D- is present (#27316) - 4447cefa4815 l10n: update Japanese translations (#27856) - 7d17ab5b6f07 l10n: update Ukrainian translations (#26819) - 908843df61fc languagetree: apply `resolve_lang` to `metadata['injection.language']` - e353c869cea4 languagetree: don't treat unparsed nodes as occupying full range - 6b5f44817e93 languagetree: remove double recursion in LanguageTree:parse - f5530bf566f6 linematch: initialize array - 766f4978d6cb lint: lint warnings #24226 - 5465adcbab29 lint: use tbl_contains - 0804034c07ad loader: cache path ambiguity #24491 - 89135cff030b loader: remove cyclic dependency on vim.fs (when --luamod-dev) - 66c66d8db8ab loader: reset hashes when running the loader - ec80e4cb4d31 log: increase size of buffer for nvim instance name - 4d0f4c3de9cb lsp: E403 if doc contains multiple codeblocks #24458 - 20c331915f4e lsp: SignatureHelp docstring is not escaped #16702 - 01691c5447d9 lsp: abort callHierarchy on no result (#28102) - 9abced6ad95f lsp: account for border height in max floating popup height (#25539) - 3e016fa8d4f7 lsp: actually send diagnostic-tags back to the server - 37d8e5045936 lsp: add "silent" option to vim.lsp.start (#28478) - 2e1f5055acde lsp: add assertion for explicit bufnr in apply_text_edits (#27614) - 542c910a1d3f lsp: add missing LSP semantic token highlight links - be5e36115410 lsp: add param assert in client_is_stopped (#23857) - ac0e8323dc82 lsp: add parentheses to generated union array types (#27560) - 0fcbda59871e lsp: add snippet regression test (#27618) - e42fdaad21a8 lsp: add spacing for inlay hints separately #24079 - 48bcc7b9710d lsp: advertise workspace.didChangeConfiguration capability (#26028) - c07dceba335c lsp: allow Lua pattern chars in code action filter (#24041) - 3bf887f6e08f lsp: always return boolean in lsp.buf_client_attach (#24077) - 966eb8e0b3be lsp: announce publishDiagnostics.dataSupport (#24442) - 39fc340276a4 lsp: avoid assertion when `client_hints` do not exist (#28461) - 47dbda97d2f4 lsp: buffer messages until connected to server (#28507) - adbe7f368397 lsp: call `on_list()` even for single location (#25830) - 15983cf2c64c lsp: cancel session when leaving snippet region (#25762) - 816b56f878f0 lsp: cancel watchers when closing a client - 9b8a0755390b lsp: change `silent` in lsp.start.Opts to optional (#28524) - d3e035257473 lsp: check if inlay hints are enabled for a buffer before disabling (#24074) - fa9a85ae468b lsp: clean up duplicate and unused meta type annotations - 8bd6f7c20b40 lsp: clear codelens on LspDetach (#24903) - 97c0a52416b8 lsp: correct deprecation message #28403 - aa62898ae329 lsp: correct the error message's cmd on spawning (#27632) - 77a9f3395bd1 lsp: create codelens request parameters for each buffer (#27699) - 9281edb334a3 lsp: create per client params in lsp.buf.code_action - 39cc38a87b29 lsp: defer writing error msgs (#27688) - 1b679ac19287 lsp: define LspInlayHint highlight group #24073 - dc8c086c7e73 lsp: directly rename the existing buffers when renaming (#27690) - c1a95d9653f3 lsp: disable didChangeWatchedFiles on Linux - 2fde6295df8c lsp: display initialization errors (#25409) - 94127cb5df0a lsp: do not add extra indentation - cc87dda31a5b lsp: do not assume client capability exists in watchfiles check (#24550) - 0fe0cf5adaab lsp: do not cancel snippet when selecting placeholder (#25835) - 073035a030f5 lsp: don't register didChangeWatchedFiles when capability not set (#23689) - 5eee633c9705 lsp: don't start additional client if attach failed (#28744) - 21fa19f3e8c1 lsp: don't use hl_mode = combine for inlay hints #24276 - 96b94f8d7777 lsp: duplicate on_detach, on_reload callbacks #24067 - b95b6ed9753d lsp: empty commands should not be considered executable (#28216) - c3c673cdeca2 lsp: enable() does not activate inlay hints on open buffers #28629 - b2c26a875b9d lsp: ensure buffer is not attached more than once - fa0a25dcb3a4 lsp: error in reset_timer on second detach #24117 - 72e64a1afef0 lsp: extra "." when completing with tsserver #24646 - 031088fc0aff lsp: filetype matching to documentSelector in dynamic capabilities (#25425) - d191bdf9d5e5 lsp: fix attempt to call non existent function (#24212) - dd3fa6457355 lsp: fix dynamic registration of code actions (#23826) - ce4ea638c703 lsp: fix incorrect typing and doc for `vim.lsp.rpc` - f487e5af019c lsp: fix infinite loop on vim.lsp.tagfunc - 74bd4aba57d2 lsp: fix multi client handling workspace_folder methods (#18839) - 5e5f5174e3fa lsp: fix off-by-one error for omnifunc word boundary - ba6761eafe61 lsp: fix omnicomplete in middle of the line (#25787) - 075a72d5ff9d lsp: fix relative patterns for `workspace/didChangeWatchedFiles` (#23548) - 840e1864c2de lsp: handle NUL bytes in popup text (#25612) - 345bd91db28e lsp: handle absence of a trailing newline #25194 - 0e9a33572dc7 lsp: handle adjacent snippet tabstops - 853f647da618 lsp: handle reverse lookup in capabilities - 91f67fabe69f lsp: handle stale bufnr on LspRequest autocmd trigger (#24013) - 849d82b80b85 lsp: handle stale bufnr on LspRequest autocmd trigger (#27981) - 2eecb1b85dbb lsp: highlight active parameter in signature help #25663 - e55e80d51ca5 lsp: inlay hints: "Failed to delete autocmd" when closing buffer #24469 - 7968322e7a20 lsp: inlay_hint nil reference error #24202 - ba8f19ebb67c lsp: lint warnings, default offset_encoding #24046 - 330444994616 lsp: log unknown diagnostic tags instead of showing a warning (#25705) - 251ca45ac948 lsp: markdown code fence should allow space before info string #24364 - add7e106d59b lsp: noisy warning about offset_encodings #24441 - c235959fd909 lsp: only disable inlay hints / diagnostics if no other clients are connected (#24535) - 1dacf2ecee36 lsp: prevent code-lens refresh from becoming a permanent no-op (#28228) - 597ecf751603 lsp: re-add client.commands and mark private - 94a904b453e5 lsp: reapplying already-applied hints #24114 - 4ecc71f6fc73 lsp: reduce diagnostics and add more types (#23948) - bc7f86209d39 lsp: redundant vim.snippet.jumpable #28560 - ee156ca60ede lsp: refactor escaping snippet text (#25611) - 2ecba65b4ba7 lsp: remove unknown LSP protocol property (#24345) - 7311958e1238 lsp: remove unnecessary file load/write when renaming (#27621) - e14e75099883 lsp: rename LspProgress data.result => data.params #28632 - f0e61e6d92b5 lsp: rename fails on missing parent directory #27291 - b413f5d048ab lsp: rename undofile when renaming (#27684) - d09957e0a06f lsp: rename: load and list new buffer if attached to window (#27408) - 7668f89d5be6 lsp: replace @private with @nodoc for public client functions (#24415) - 52823616bc4d lsp: replace bug-prone ternary operation #28627 - 5282d3299c9b lsp: restore marks after apply_text_edits() #14630 - cf5f1492d702 lsp: revert change to buf.clear_references() #24238 - 917172dd9680 lsp: semantic token defer loading - 3be2536ca039 lsp: send back diagnostic tags to the server - a37d568082ad lsp: send empty "added" list when removing workspace folder #24440 - 3c6d971e5488 lsp: set extra info only when it has a value (#23868) - 5785c32f1115 lsp: set fallback client name properly - 370232dbefb9 lsp: track snippet deletion - ca26ec34386d lsp: use only utf-16 in default client positionEncodings (#23903) - b302da9ad220 lsp: use percentage format on lsp.status (#23971) - 2c8f36a3b0b6 lsp: use plain loop for non-list-like table of protocol values - 8addd27504e6 lsp: when renaming directory, check path prefix of buffer names (#27603) - 597355deae2e lsp: wrong iterator in registerCapability handler (#24971) - b2d471ab337e lua: allow nil values in serialized Lua arrays (#26329) - 68f12e7fcb1f lua: annotate that TSNode functions can return nil (#24621) - 4ffc20c95152 lua: avoid internal error when :luado deletes lines (#27262) - 319803822420 lua: correct return value for on_key with no arguments (#25911) - 84bbe4b0ca93 lua: disallow vim.wait() in fast contexts - 22eb2ba18336 lua: do not schedule events if Nvim is exiting - 7d279a09e0fb lua: handle array with holes in luaeval() (#26630) - c43c745a14dc lua: improve annotations for stricter luals diagnostics (#24609) - 2f779b94e7fe lua: inspect_pos respect bufnr when get syntax info (#23098) - e2e63bd04549 lua: make highlight.on_yank use win-local highlight (#27349) - b40170f7a3ca lua: memory leak when using invalid syntax with exists() (#26530) - 4ab9c5fa4684 lua: not using global value in vim.opt_global (#25196) - 20ec4c776a07 lua: only disable vim.schedule() when closing main loop (#26090) - f150b62423d5 lua: only free luarefs when returning from API (#28373) - 019077171324 lua: remove uri fragment from file paths (#27647) - 5aa14e1231b7 lua: return after assert returns assert message (#27064) - 5331d5772ffb lua: show error message when failing to set variable (#25321) - 1294e221a205 lua: vim.fn.has('nvim-0.10') in fast context, used by vim.deprecate - 37c58226a8fd lua: vim.fs typing (#24608) - 5db076c7ccfe lua: vim.region on linewise selection #25467 - 622b1ae38a36 lua: vim.split may trim inner empty items - a7df0415ab6a lua2dox: filter out the entire `---@alias` block - 32e69bd3971c luarc.json: ignore test directory to save memory - 6f936c9d85a0 man: make :Man with a range work (#25922) - 59aadf33efc2 man: pass modifiers also to :tag (#27878) - a9b4dc9614a0 man: set the nested flag for the BufReadCmd autocommand (#26285) - c8d1d8b2546c man.lua: don't continue on command error (#23009) - a4c4b39d55db man.lua: hardwrapped manpage is not resized #25646 - 209ed16f57a7 man.lua: return support of all sections - 3a7c30dc93b9 man.vim: q quits after jump to different tag in MANPAGER modified (#28495) - 3c667d3e0fe4 mappings: fix mapset() not replacing map with backslash (#26719) - 0451391ec514 mark: properly init mark views (#22996) - d432bba4e46c marks: handle switching buffer properly (#25763) - 62306a29add2 marktree: correct qsort usage - 585549625d8a marktree: off-by-one error in `marktree_move` - 34be915f6b93 marktree: preserve ordering in `marktree_move` - b97d5038f16b marktree: some marks counted twice when checking for overlap - ad5a155b1f4b mbyte: fix bugs in utf_cp_*_off() functions - b02823399171 memline: more curbuf stuff - 91ef26dece6d messages: :map output with ext_messages (#26126) - eabf9de1dc8c messages: allow more prompt in headless mode with UI (#27905) - 60fb8a6a8bd9 messages: avoid crash with :intro and ch=0 (#28343) - 61a0aa6c51fb messages: avoid passing negative length to strnlen() (#28753) - ca258db15668 messages: clear new lines when increasing 'cmdheight' (#27421) - c9f47fca8b89 messages: ensure msg_grid is at top at more prompt (#23584) - 2f17ef1fc4b9 messages: use "Vimscript" instead of "VimL" #24111 - 55dbf5c3798c messages: validate msg_grid before using msg_grid_pos (#26189) - 4db77017fb7a meta: add nil return types to lpeg functions - 5198a2555de4 meta: cleanup lpeg operators - dae6770b761a meta: include vim.json - d31f7648ecaf mkspell: prevent Unicode character overflow (#23760) - a8a93e517f9e mouse: avoid dragging after click label popupmenu callback (#26187) - 6a2a37b1e102 mouse: avoid dragging when clicking next to popupmenu (#26201) - 091eb4c8c720 mouse: click after eol with conceal and virtual text (#27897) - 2b475cb5cc21 mouse: click on 'statuscolumn' with 'rightleft' (#25090) - e25cf47ad3e1 mouse: click on empty line with 'foldcolumn' - 84a4319545ad mouse: cmdline click registered as statuscolumn (#23163) - bf52fb7193ca mouse: copy the line before syntax matching (#24320) - 5fb4c397a1da mouse: drag vsep of window with 'statuscolumn' (#24462) - dc394b9641f9 mouse: fix popup menu position check with winbar (#23456) - 7c1921e9d69e mouse: fix popup_setpos position check with ext_multigrid (#23436) - a3fba5cafcf1 mouse: handle folded lines with virt_lines attached to line above (#23912) - 64aa0f7d0b70 move: check for filler lines properly (#28307) - 366d0c7887f7 move: check the correct buffer (#25698) - 780509aedf5c move: fix using the wrong window (#28312) - 60d1e3e4718a msgpack: store grid line event as a value - c52dfb6e8408 normal: don't check conceal when pressing 'r' (#27892) - 088cdf69e3fa normal: make "g$" work properly with resized grid - a1ded1b113d2 oldtest: always use a 64-bit int for swapfile block number - 92c59c39c3d9 ops.c: remove duplicate u_save_cursor() - 9d01385c6ca6 options: `'modified'` showing incorrect value for scratch buffers - c3e176f6e24e options: correct condition for calling did_set_option() (#25026) - 9af03bcd4712 options: do not change inccommand during preview (#25462) - 796df966f3cb options: don't update curswant for 'winhl' or 'winbl' (#27515) - d956bc63795f options: setting 'scroll' with resized grid (#26628) - c8a27bae3fae options: use a union for def_val (#27169) - 804c828e681e optionstr.c: incorrect use of curbuf/curwin - a9df0c5ce6ca osc52: do not use 'vim.iter' (#27218) - 5d75d9aef2b6 osc52: enable OSC 52 by default in tmux sessions (#26072) - 86c2213b5e45 osc52: use `p` for primary selection instead of `s` (#26076) - 104565909798 osc52: use nvim_chan_send() to stderr for copying (#26690) - e3bd04f2aff7 pager: handle consecutive newlines properly (#27913) - 1e7e9ee91f73 path: accept special characters on Windows (#25424) - f064e72b9b9c path: check return value of append_path() (#28309) - f5eabaa9407a path: restore space separation in 'path' (#25571) - 908f247c224d plines: count 'showbreak' for virtual text at eol - a0cbf1d8d5a6 plines: cursor position with 'showbreak' and resized grid (#28067) - 317038e7cb11 plines: don't return very large height on very long line (#24260) - 7955c90621bb plines: folded lines with virt_lines attached to line above - 35c3275b4896 plines: handle inline virtual text after last char (#24241) - cbadb39d16c1 plines.c: initialize cts_max_head_vcol (#24855) - fc14928719df printf: make positional %zd and %zu work (#24722) - d0b3c8721921 process: avoid potential data race on exit (#27769) - 3e569d440b8e process: close handles and timer in pty_process_close() (#27760) - 268066e01400 process: start pty process eof timer on main thread (#27625) - 49983387ffd5 prompt: emit change event for prompt newline (#28260) - 7bd6bd1ef721 provider: cannot detect python3.12 #25316 - 61ecb3e16c22 provider/pythonx: import the correct module (#25342) - 540941ef8320 pum: don't position too far with resized parent grid (#23442) - f186224dfcf8 pum: fix missing rightmost column with 'rightleft' (#23445) - 8bc973c6f59c pum: fix missing scrollbar with 'rightleft' (#23448) - a7550a20e0c3 pum: handle right-click menu repositioning with multigrid (#26975) - fbaa27877361 pum: make :popup position correctly with float border - a3dfe1bc89a5 pum: position properly with ext_multigrid (#23336) - c1331a65dd12 pum: show right-click menu above cmdline area (#23298) - dd0e77d48a84 query_error: multiline bug - 5ac2e47acc99 redo: make redo of Lua mappings in op-pending mode work (#23566) - 60f69014a801 redraw: multibyte characters are wrapped at the end of a line (#23696) - cb34d0ddd086 redraw: overwrite double-width char with virt_text properly (#23708) - d184933cdc70 redraw: update Visual selection properly with splits (#27343) - 54044e6dce2f release.sh: ze version is too big - cce9460524aa remote: make --remote-expr print to stdout (#23980) - bde59e81473f remote: restore previous --remote-expr output formatting (#23988) - 468292dcb743 rpc: "grid_line" event parsing crashes (#25581) - 4d4092ac9e98 rpc: assertion failure due to invalid msgpack input - 8921d56053bb rpc: do not crash when no input is consumed - c422722b2e94 rpc: fix hang with channel closed while waiting for response - adb225834540 rplugin: dont create data dir if it's a broken symlink #25726 - 65dd3c1180ce ruler: show ruler of curwin with no statusline in cmdline - f5231d61a541 runtime: add commentstring for C# ftplugin (#23039) - 3387dc4a463c runtime: add commentstring for D ftplugin (#25362) - 615b48aca6bd runtime: add more Nvim-only highlight groups to Vim syntax - aee6f08ce12a runtime: do not allow breakcheck inside runtime path calculation - df297e3c2bd7 runtime: don't set gx mapping if already mapped (#24262) - 9176b5e10a6b runtime: respect 'fileignorecase' when sourcing (#24344) - dbb840da01c7 runtime: respect 'rtp' order for all runtime files (#24335) - 70a00492962d runtime: source c ftplugins in correct order (#27377) - d431a4d410f0 runtime: source old color scheme in bundled color schemes (#26641) - 3ab6f60dc80d runtime: update 'vim' color scheme to use new tree-sitter groups - 67fba9affa14 runtime/tutor: don't try to close fold when there is none (#24953) - ee56daebb646 shada: update deleted marks (#24936) - 517dfdf0fcf5 shada: update marks when using delmarks! (#24978) - 4d52b0cf6705 showcmd: clear the rest properly (#28420) - fcd9905291c0 sign: avoid deleting from sign map while looping over it (#27158) - a84b454ebe66 sign: do not error when defining sign without attributes (#26106) - a5ade3c63d88 snippet: correct indent with newline - 4625394a767f snippet: do not add extra indent on newlines (#28538) - a1bdf2852d6d snippet: remove misleading comment about TM_FILENAME_BASE (#26465) - 8c044f0862f4 spell: always accept ':' as filename char in 'spellfile' (#27172) - a803bff89c89 spell: extmark with spell=false should disable spell (#23400) - eceb2dffce39 spell: splice extmarks on :spellrepall (#23929) - aa65bd478a98 startup: "nvim -l foo.lua" may not set arg0 #24161 - 628f6cce80de startup: don't truncate when printing with -l (#24216) - c0fa721adeab startup: make recovery mode work without --headless (#24477) - 8e739af064de startup: multiprocess startuptime #26790 - 8f10362cdc58 startup: only send one default_colors_set event during startup - 559c4cfd52e3 startup: run embedded Nvim with real path (#24282) - b21d96011934 startup: set full_screen when in ex_mode - 9637b7dae417 startup: stop TUI properly when quitting at swap dialog (#25337) - d7359a87425d startup: trigger UIEnter for the correct channel (#25860) - 01e273c340b5 statuscolumn: don't update clicks if current width is 0 (#24459) - afd0c648a89f statuscolumn: force full redraw when signcolumn is invalid (#24859) - dc6c11394b73 statuscolumn: update number hl for each screen line (#25277) - a4b240080435 statusline: also allow right click when 'mousemodel' is "popup*" (#23258) - 4ecf6fdfd857 statusline: bail out properly on negative row (#23535) - 70da793c5eda statusline: corrupted screen with minwid sign item in 'statuscolumn' (#23823) - d7bb19e0138c statusline: fill for double-width char after moving items (#24207) - 54f560203897 statusline: fix uninitialized variable and possible overflow - 9f15a18fa57f statusline: missing offset when showing 'keymap' (#27270) - 7b973c71ea84 statusline: redraw when VIsual_mode changes (#23933) - dbc0fa9bd683 stdpath: remove duplicate directories (#26653) - 1907abb4c278 stream: do not close handle if it is already closing (#26537) - 9dd48f7832f4 substitute: properly check if preview is needed (#23809) - 9753cda591e2 syntax: use correct diagnostic group for checkhealth (#23538) - 400b7842a983 termcap: escape escapes in passthrough sequence (#26301) - e52784221118 termcap: only call callback for requested capabilities (#26546) - ffeb31c2f962 termcap: set 'nested' on TermResponse autocommand - b7831c7f996b termcap: use tmux passthrough sequence when running in tmux (#26281) - e6d3f87dfd71 termdebug: handle partial lines passed to callback (#22950) - c413b42c456b termdebug: prompt mode breaks with &splitbelow set - 8aad4b84250a termdebug: send SIGINT when interrupting prompt mode - af78060b1882 termdebug: trim suffixed "\r" in CommOutput - 684e93054b82 terminal: assign channel to terminal earlier (#25771) - 82b1a389ba98 terminal: avoid Insert mode in Terminal buffer (#25820) - 99288ecc77e4 terminal: block input when there is pending TermRequest (#27589) - f2ce31d3dc1c terminal: call validate_cursor() before screen update (#24425) - e09adfdcffe8 terminal: check if mouse on statusline/tabline/winbar/vsep (#26892) - e11573246579 terminal: check terminal size at end of screen update (#25480) - 120c4ec855bc terminal: disable reflow again - c881092ffe9d terminal: don't lose focus on <MouseMove> (#25845) - 16a416cb3c17 terminal: don't pass incomplete UTF-8 sequence to libvterm (#27922) - d0d132fbd055 terminal: don't send unknown special keys to terminal (#24378) - 74776dfb2ac4 terminal: fix duplicate recording with mouse click (#28103) - 21d466c1b985 terminal: forward horizontal mouse scrolling (#24552) - d401b33314a4 terminal: handle horizontal scrolling in another window (#24828) - 5e78fd778450 terminal: ignore $VIM and $VIMRUNTIME in pty jobs - 0a7fda6fa006 terminal: include modifiers when forwarding mouse (#24549) - d4c2fc6ff6c5 terminal: keep focus when scrolling number column of another window (#25848) - 5ca6c9e04629 terminal: make backslashes in 'shell' work on Windows - aba954b662cc terminal: never propagate $COLORTERM from outer env (#26440) - b74262a336d3 terminal: send Shift-Home Shift-End Ctrl-Home Ctrl-End (#24418) - 0fd8eb8aae10 terminal: set $COLORTERM unconditionally in :terminal (#24763) - fa17a5ab49df terminal: use terminal buffer for TermRequest autocommand (#26974) - 5999214c242d termkey: accept BEL (0x07) as OSC terminator - ce2f770aaa23 termkey: do not sign extend mode value - 50f5864dd245 termkey: include IO header on Windows - 52e6059415ba test: call separate_arguments() correctly to honor $BUSTED_ARGS (#26905) - c5528e7fd852 test: clean up inline virtual text tests a little - 380b634ac951 test: fix "indeterminism" warnings in UI tests - f4c97da26242 test: fix strings_spec.lua for AArch64 - 477458f7bf8d test: more tests for marktree - d8e330bcec91 test: remove test/compat.lua - a7bbda121d03 test: typing - 8861ad83fd7f test/tui_spec: pass the expected NULL-sentinel to execl() - f859d16aea0d tests: set SHELL=sh #24941 - 3d44340cea08 tests: use more global highlight definitions - e9bfbe99cd71 textformat: remove unnecessary changed_bytes() (#26027) - 255e547e18e1 timer: allow timer_info() to get info about current timer - a8131aee9ecc tohtml: replace hex escape with digit escape (#27728) - 0246f1a897f4 tohtml: set filetype of generated HTML to `html` - ccc0980f86c6 treesitter: Use the correct replacement args for #gsub! directive (#23015) - 71d9b7d15c9b treesitter: _trees may not be list-like - a4743487b71b treesitter: `language.add` - only register parser if it exists - 4a8bf24ac690 treesitter: adjust indentation in inspector highlights (#26302) - ef64e225f6f6 treesitter: allow foldexpr without highlights (#23672) - 6a264e08974b treesitter: allow optional directive captures (#28664) - cf612c64b0fc treesitter: allow passing lang to vim.treesitter.get_node() now correctly takes opts.lang (#26360) - 32849d56671c treesitter: avoid # of nil in _query_linter - 3fd7449d5abe treesitter: check that buf is loaded in autocommands (#25679) - e7f50f43c822 treesitter: clip end row early - 6b19170d44ca treesitter: correctly calculate bytes for text sources (#23655) - bd5008de07d2 treesitter: correctly handle query quantifiers (#24738) - fba18a3b6231 treesitter: do not calc folds on unloaded buffers - c30ebb17f6b9 treesitter: document more standard highlight groups - 040369e1e4b8 treesitter: don't forcefully open folds - 72ed99319dd6 treesitter: don't invalidate parser when discovering injections - 4607807f9fcb treesitter: don't update fold if tree is unchanged - 26b5405d181e treesitter: enforce lowercase language names (#28546) - 3a8265266e0c treesitter: escape "\" in :InspectTree #28613 - 369f58797dbd treesitter: escape quotes in :InspectTree view #24582 - 6e45567b498c treesitter: fix TSNode:tree() double free (#24796) - 50a03c0e9975 treesitter: fix another TSNode:tree() double free - 7c6f9690f74e treesitter: fix indexing in foldexpr - 01b91deec7b6 treesitter: fix parens stacking in inspector display (#26304) - f40a109716d7 treesitter: fix trim predicate - 1f551e068f72 treesitter: fixup for InspectTree - 26cc946226d9 treesitter: foldexpr tweaks - e85e7fc7bccc treesitter: handle empty region when logging (#24173) - 12faaf40f487 treesitter: highlight injections properly - 6f75facb9d75 treesitter: improve vim.treesitter.foldexpr - 6c8387067d4e treesitter: inspect-tree remember opts on buf change - 8179d68dc1a9 treesitter: logger memory leak - b6e339eb90e1 treesitter: make InspectTree correctly handle nested injections (#26085) - 3af59a415c98 treesitter: make Visual hl work consistently with foldtext (#25484) - c7e7f1d4b4b6 treesitter: make foldexpr work without highlighting (#24167) - 0211f889b953 treesitter: make sure injections don't return empty ranges (#24595) - 0df681a91d6b treesitter: make tests for memoize more robust - 7fa292c52d7b treesitter: outdated highlight due to tree with outdated region - 617d1b28d6d3 treesitter: prefix treesitter types with vim - 90a12d4a1643 treesitter: prepare highlight states for [s, ]s - 7e5ce42977d7 treesitter: properly combine injection.combined regions - 19a793545f15 treesitter: redraw added/removed injections properly (#23287) - 7a76fb854754 treesitter: remove more double recursion - e124672ce9a8 treesitter: reset cursor max_start_depth - 7d9715008470 treesitter: return correct match table in iter_captures() - 3b29b39e6deb treesitter: revert to using iter_captures in highlighter - 315c711700a8 treesitter: set cursor position when opening inspector - 48085e40bb0e treesitter: stop() should treat 0 as current buffer #24450 - 32dc484ec9ec treesitter: support subfiletypes in get_lang (#23605) - b6fdde522425 treesitter: text alignment in checkhealth vim.treesitter - 0f85aeb478a6 treesitter: treecursor regression - 26143d7a5c90 treesitter: update @markup default links - 9ff59517cbf3 treesitter: update c queries - c44d819ae1f2 treesitter: update folds in all relevant windows (#24230) - ffb340bf63af treesitter: update folds only once on InsertLeave - edf9a897f089 treesitter: update highlights for query (#23699) - b697c0cd4fb2 treesitter: update lua parser and queries (#24148) - ad95b3698569 treesitter: update markdown parser and queries (#24429) - 39a0e6bf3c04 treesitter: update parsers and queries - 3d4eb9d544cb treesitter: update queries - c97de026e357 treesitter: update vimdoc and vimscript queries - dc7ccd6bca81 treesitter: use 0 as initial value for computing maximum (#27837) - 7bc5ee7f9327 treesitter: use proper query syntax for inspector (#26274) - 00e6651880c3 treesitter: use tree range instead of tree root node range - 8c9dab3e0d78 treesitter: use vim.highlight.priorities instead of hardcoded 100 (#24052) - 674f2513d4d4 treesitter: validate language alias for injections - 2bf3e82676d5 treesitter: validate window before updating preview highlights - ab2811746eb7 treesitter playground: fix the wrong range of a node displayed i… (#23209) - f85aa2e67f3e treesitter.c: improve comments on fenv usage - c5b9fb2f2565 treesitter.foldexpr: check for all insert submodes - b3bda2f0438d tui: `space_buf` overflow when clearing screen (#27352) - cb2b5e2780a6 tui: disable DECRQM and DECRQSS queries for Terminal.app (#28453) - 405bad5e085f tui: do not toggle cursor visibility when flushing the buffer (#26055) - b76cc974b9a5 tui: don't forget to update cursor visibility (#26523) - 911f3d962358 tui: don't overwrite an assertion faliure message on exit - 168e69ae0156 tui: don't set cursor color when there is none (#28236) - 5a08b5be3c34 tui: don't set tty background if &bg was set before VimEnter (#23701) - 00b7428b3bf5 tui: don't use DECRQSS in screen or tmux (#28086) - 846714ca3e70 tui: don't use tui->params[] for 'termsync' (#26565) - 197827321a39 tui: grid_clear properly clears the screen - 884a83049b2c tui: grow termkey's internal buffer for large escape sequences (#26309) - ad867fee26c8 tui: handle cursor visibility properly (#26091) - fd50185492c7 tui: initialize clear attrs with current terminal background - c26b39a9aa56 tui: make :cquit work properly with remote TUI (#25313) - 3ae62c470634 tui: make disabling title restore old title from stack (#23585) - 4c31a1b807f1 tui: make setcellwidths() work for non-ambiwidth chars (#28322) - 4f235e3cafba tui: position cursor at bottom-left before stopping (#23369) - 0f1b511f2302 tui: redraw on SIGWINCH even if size didn't change - 8e6971695383 tui: restore title before exiting alternate screen (#23776) - 999e167a521a tui: start flush earlier (#26463) - 367e52cc79a7 tui: use buflen to calculate remaining buffer size (#26942) - 3198598e6974 tui: use uv_timer_t instead of TimeWatcher for input (#26435) - 0ce065a332cb tui: v:argv does not report the original argv[0] #24015 - bc6fc0123d2f tutor: Tutor steps don't work on Windows #25251 - bf5703042b50 tutor: don't use concealed text in expected lines #24316 - e34c23b7016a tutor: set a value for ":syntax iskeyword" (#27833) - 04232a19ccf0 type: remove incorrect arguments from vim.rpc* - 21152f7905b5 types: add more annotations to eval.lua - b7d5b55f74fd types: add some return/parameter type annotations (#24867) - e6947bb1e80a types: make filetype.add parameters optional - 191cca2566a8 types: move type annotation for `IterMod` - 813dd36b7297 types: rename win_get_config return type to win_config - b3342171d533 typing: vim.fn.execute - 1355861b926a typval: don't treat v:null as truthy (#23281) - 0592fd5e17dc ui: "resize -1" with cmdheight=0 #24758 - ab1c2220f0c7 ui: activating all ext capabilities without remote UI #28555 - 5b111a8f00f8 ui: adjust 'smoothscroll' for inner dimensions - 389f5ca39d27 ui: adjust the cursor when inserting virtual text - 046c9a83f7ed ui: always use stl/stlnc fillchars when drawing statusline (#25267) - 0c86828ac574 ui: avoid ambiguity about chunk that clears part of line (#24982) - e778e0116198 ui: avoid recursiveness and invalid memory access #28578 - 0ce39108684e ui: cursor pos with left gravity inline virt_text at eol (#24329) - 91a4938edfd3 ui: data corruption in remote_ui_raw_line - 1de82e16c121 ui: delay win_viewport until screen update #24182 - a91652357413 ui: doesn't trigger au event when enter is false - b5a38530ba18 ui: don't force 'cmdheight' to zero with ext_messages - fdc8e966a918 ui: don't send empty grid_line with redrawdebug=compositor (#23899) - 13f55750e9be ui: empty line before the next message after :silent command - d41b8d47587b ui: ext_cmdline should not move cursor to curwin - a38d7f99845d ui: fix cursor position with multiple inline virtual text - e0707d352959 ui: fix edge case around flushing - 75f350aac6cd ui: fix incorrect highlighting when virtual text next to match - 332b70d2ed31 ui: fix incorrect highlighting when virtual text wraps with number - 0c7fa3bdcc37 ui: fix multi-byte characters highlight in virtual text - a37c99048359 ui: fix overflowing nowrap virtual text not displaying if tab follows - 5d7afb2e9f22 ui: fix tabs not being spaced properly after virtual text with no wrap - 34d862942c33 ui: fix virtual text not displaying when two overlapping inlines (nowrap) - c5bf838f8aa5 ui: fix visual and search highlighting interfering with virtual text - 1936285d98f6 ui: fixes incorrect rendering when virtual text is not visable and nowrap - 64e8a3c4d19e ui: handle virtual text with multiple hl in more cases (#25304) - 981acc2922ce ui: propagate line wrapping state on grid_line events - b8c1b36061f4 ui: set 'cmdheight' to zero for all open tabpages - a8522f02e9a2 ui: startup intro message should be visible with ext_multigrid - 1cd7824dd69e ui: trigger TabNewEntered after split new tab - 7626f431d84f ui: update ext_ui widgets when attaching non-remote UI - 128091a256d6 ui: wrong cursor position with left gravity inline virt text at eol - a9418ef8cfc0 ui: wrong display with 0-width inline virt_text at eol (#24854) - e8b3ed74bca4 ui-ext: "scroll_delta" handle topfill and skipcol (#24249) - 43d66c0ebbe4 ui-ext: send title to newly-attached UI - 519b9929e94c ui.open: some URLs fail on Windows - 4d654472e65e ui_client: check return code of dup() - 633bf61d3b03 ui_client: check return value of channel_job_start (#27729) - 71ad771ea4b7 ui_compositor: only reset skipstart at first column (#24776) - 840749d6c971 undo: fix crash caused by checking undolevels in wrong buffer - c0a29931e29b unhide: close floating windows first (#25318) - 9afbfb4d646c unittests: ignore __s128 and __u128 types in ffi - 9e79f7433eb0 usercmd: Fix buffer overflow in uc_list() (#23225) - 9802de933484 userfunc: fix possible out of bound access - 5a8fe0769cc9 vim.deprecate: show deprecation warning in devel versions as well - ca6dbf3558ce vim.iter: use correct cmp function when truncating tail in `take` (#27998) - e15991c8116c vim.json: properly treat luanil options as booleans (#28622) - fec5e3ab247b vim.region: handle multibyte inclusive selection properly (#26129) - 2afb04758c34 vim.system: close check handle (#24270) - 9b7cf4f0beb3 vim.system: don't process non-fast events during wait() (#27300) - a44521f46e6f vim.system: let on_exit handle cleanup after kill - 6d5f12efd286 vim.system: make timeout work properly - 57adf8c6e01d vim.ui: open() may wait indefinitely #28325 - e644e7ce0b36 vim.ui.open: return (don't show) error message - fd085d908201 vim.ui.open: try wslview before explorer.exe #28424 - 5e4a5f1aaa15 vim.ui.open: use explorer.exe instead of wslview #26947 - 6cc76011ca28 watchfiles: skip Created events when poll starts (#23139) - 9bd4a2807960 window: :close crash if WinClosed from float closes window (#27794) - 731e7f51ee40 window: :close crash with autocmd, floats and tabpage (#27793) - 33dfb5a383d7 window: :close may cause Nvim to quit with autocmd and float - 2cbfa4b9af78 window: don't go to unfocusable float when closing (#28455) - a47be0b2d90b window: prevent win_size_restore from changing cmdheight - 4bfc7802f056 windows: set stdout to binary mode for --api-info PERFORMANCE -------------------------------------------------------------------------------- - a9c551e5e38f cache breakindent/showbreak width in win_lbr_chartabsize - b5653984e5de don't decode utf8 character multiple times in getvcol() - cca8a78ea2ac improve utf_char2cells() performance (#27353) - 2f2f12122f38 remove loop for computing last position in getvcol() - 32a4c9f4f92d remove redundant strlen in skipwhite (#26177) - cdf848a314bf reuse fast character size calculation algorithm from getvcol() - 2289ca273cda column: avoid counting when max signs are removed from a range - 4a34da82c18e column: keep track of number of lines that hold up the 'signcolumn' - f4001d27efae column: only invalidate lines affected by added sign - 7f084770c238 diagnostic: avoid table copies to filter by severity (#28491) - 1cb60405548e events: store autocommands in flat vectors (#23256) - 9af2be292db3 extmarks: add metadata for efficient filtering of special decorations - 929e1b7f1c35 extmarks: avoid unnecessary invalidations for virt_text (#27435) - 19fb573ad992 extmarks: avoid unnecessary marktree traversal with folds (#24306) - d44ed3a885e1 extmarks: better track whether namespace has extmarks (#28615) - ef94fb69c65b extmarks: don't handle inline virt_text if there is none (#24322) - 8bb67d64e20d fs: normalize path only once in fs.dir - 40db56901447 iter: make ListIter.totable more efficient (#23714) - ef1801cc7c3d iter: reduce number of table allocations - dcdefd042840 loader: use a quicker version of vim.fs.normalize - 648f777931d4 lsp: load buffer contents once when processing semantic tokens responses (#23484) - 2f4792943aa9 lsp: only joinpath for dirs in watchdirs - edf05b005f34 lsp: process semantic tokens response in a coroutine that yields every 5ms (#23375) - 79a5b89d66db lsp: reduce polling handles for workspace/didChangeWatchedFiles (#23500) - 4d3a04279d32 lsp: remove grouping logic from lsp.status (#24096) - de28a0f84c57 lsp: replace file polling on linux with per dir watcher (#26108) - 7e97c773e3ba lsp: use async fs_stat for file watching on linux (#26123) - cdd87222c86c lua: avoid spairs in vim.validate happy path - c5af5c0b9ab8 lua: faster vim.deprecate() #28470 - c5990f2cdca5 os/env: os_getenv() allocation when there is no env var set - 18e62c1bdbbb redraw: only redraw Visual area when cursor has moved (#27340) - 94085cfce821 redraw: reduce redraw with undo and extmarks or 'spell' (#27442) - 516b173780e3 rtp: reduce rtp scans (#24191) - 0e11bf0e1af5 substitute: don't reallocate new_start every time (#24997) - 4fd852b8cb88 treesitter: cache fold query (#24222) - 07080f67fe7e treesitter: do not scan past given line for predicate match - c0cb1e8e9437 treesitter: filter out trees outside the visible range early - 2b6c9bbe7f7a treesitter: incremental foldupdate - 3ba930844c30 treesitter: insert/remove items efficiently (#23443) - a76b689b479e ui-ext: approximate scroll_delta when scrolling too much (#24234) - 0d1bc795f89c ui_client: skip some initialization not necessary for ui client - 14a5813c2077 vim.fs.normalize: use iterator BUILD -------------------------------------------------------------------------------- - c1ff21666862 actually export symbols on mac - 664f2749e688 add "ci" configure preset to reduce verbosity - 1094d0c0dbd0 add CMAKE_C_FLAGS to --version output - 129012172258 add CMakePresets for deps build to reduce verbosity - ce6075f82a2a add check to clint to prevent non-defs header includes - 624de849de39 add function add_target - 82bb7bbc4816 add luajit runtime files when installing (#23514) - 831d662ac675 add sub-targets to the doc target - 1bf29a0ae1ff add system lua include dir for lpeg - 4cc69f45b4a5 add ubsan default options - 488038580934 adjust clang-tidy warning exclusion logic - b80a8e2c16b6 adjust how find order is prioritized - d561830a5242 align .clang-format rules with uncrustify config - c18d7941effa allow sccache as compiler cache - cd097ab8ccfd allow using system rocks - 54d357dce0e1 bump lpeg to 1.1.0 (#25016) - 7840760776cf bump minimum cmake version to 3.13 - 7a5effb0f95e bump required minimum libvterm version to 0.3.3 - 2835b0daad43 bump uncrustify to version 0.77 - 77c0d5415b4f bump uncrustify to version 0.78.1 - 87a45ad9b98e bump uncrustify to version 0.79.0 (#28756) - 1798a4b5e9f0 bump uncrustify version - 826b95203ac9 bundle uncrustify - 37bc73e9bc2d change dependency URLs to cache variables - 108601647783 cmake cleanup - 404fdb0f3683 cmake fixes - f8310beeed04 create BINARY_LIB_DIR directory before adding parser - 9909668111f5 create a text file for specifying dependency information - 5a7280ba687f create helper function for simplifying luarocks installation - f936a962d04f create separate targets for nvim with and without runtime files - bcaff309b607 disable UnusedIncludes from clangd - 7a80e169c5b1 disable all compiler warnings from dependencies - 8fdc84d0aaec disable conversion warnings for GCC - 310fb2efc36c disable conversion warnings for older GCC versions - a1c2da56ecef do not use GIT_REPOSITORY for local dependencies - da2130934b95 don't allow Xcode as generator - 543e0256c19f don't define FUNC_ATTR_* as empty in headers (#26317) - 24b60b0f71e0 don't format deleted files - c2e47e7bec03 don't print installed files locally - f30844008bdd download busted from own neovim/deps repository - 5abba97d77f2 download dependencies with unreliable mirrors from deps repo - 71384129f754 download libiconv and gettext from `deps` repository - 801ac2accb6a drop diff.exe from windows builds - f0eb3ca9163a eliminate semicolons from --version string - 397b92e02dbe enable ASAN for MSVC - 40139738eb47 enable IWYU on mac - 25cfe3fd432d enable formatting during rebase - 517f0cc634b9 enable lintlua for scripts/ dir #26391 - 45fe4d11add9 enable lintlua for src/ dir #26395 - 59d117ec99b6 enable lintlua for test/ dir - c3836e40a2bf enable lintlua for test/unit/ dir #26396 - 03c3f7887dbc enforce PREFER_LUA - 7cb29a572b36 ensure `make clean` doesn't remove source files - 0a3645a72307 find system luv on ubuntu - 5bb17958c569 fix "make iwyu" not working (#24873) - 12ccea596746 fix --luamod-dev not working properly (#24519) - 75b80516d513 fix link error for `_BitScanForward64` (#28173) - 3f188bc533bc fix parser installation location - 4fb1739e6f1f fix uncrustify - 896b400bff5c fix universal mac builds - 01e4a70d668d improve git-cliff CHANGELOG output - ef92b5a9948f include all dependency directories when generating headers - 187ae6773592 introduce variable DEPS_IGNORE_SHA for skipping dependency hash check - 30a0299bc6d1 make dependency URL variables non-cached (#23577) - b4da4783f988 make genappimage.sh work with existing CMAKE_INSTALL_PREFIX - 9f9cef1b569e make lpeg an imported library - c1a05f61122d make the vimdoc generation depend on the nvim target (#25876) - 8b8e60728486 move luarocks and rocks installation to main build - d1bb9bffd5e8 remove BUSTED_PRG dead code (#23340) - 8206954a67b9 remove LOG_DEBUG option - c48f94d1f300 remove LOG_LIST_ACTIONS option and related code - 353a4be7e84f remove PVS - 88366641ad8a remove USE_BUNDLED_BUSTED option - ca243f06dd05 remove `lintdoc` from `lint` target - 675522af18f5 remove clint checks and style text covered by uncrustify - 8be24fed8ffa remove config-specific find_package search for libuv - c40872acbddb remove duplicate include directories in --version output - ebb10d624825 remove functionaltest-lua target - 8ae39eb58488 remove git requirement - 9f8f287c6139 remove luarocks - 339011f59c25 remove uninstall target - c8fd82b26d4f reorder compiler option setting - 78239f0bbcb2 reorganize cmake files - 55793bcfa17c revert accidental permission changes (#23319) - f31f260f0c64 rework --version generation - a827003e3052 rework IWYU mapping files - e5d7003b02c9 rework formatting to use add_glob_target - 1997ef134a9a set char to always be signed - a75ef40f4cde set deps default build type to Release (#27495) - a1550dbf0ac2 silence new clang-tidy warnings - 383018dbb8e0 simplify policy-setting for dependencies - 4788abf2da6b stop installing parser.h from treesitter - 26033eee1d3b suppress bugprone-reserved-identifier warnings - 34509bbea3e8 sync IWYU and clint to ignore the same headers (#26228) - 0a8e66898d73 update builtin terminfo (#27272) - a388c852c406 update libtermkey commit - 706f871014b4 update uncrustify to 0.76 - f4136c9d42f7 use -O3 optimization for release builds - 2c1e8f7e9692 use `GIT_REPOSITORY` for local URLs - e0d97d264f83 use built nvim artifact to generate eval files (#25875) - 3d3717de4e51 use libvterm commit with generated *.inc files - 4f526b9fd864 use neovim/libtermkey instead of neovim/deps for libtermkey - 8405649f92a8 use neovim/libvterm instead of neovim/deps for libvterm - 2a57613b9b42 use stylua with add_glob_target - ae3eed53d610 various build improvements - c8667c8756a2 various cmake fixes - 5cefec734961 various cmake fixes - bec2ebebdacd various cmake fixes - c50951a4d0cf various fixes - 4c9119461108 various fixes - bf0be0f63e71 various improvements - 404043e74c52 vendor libtermkey - e38a05369293 IWYU: export generated headers - 71141e8cf5df IWYU: fix headers for arabic.h - 8b428ca8b79e IWYU: fix includes for func_attr.h - f4aedbae4cb1 IWYU: fix includes for undo_defs.h - 17d81ac2abc4 IWYU: map everything in the C99 specification - c2a5105e8875 IWYU: remove arabic_defs.h (#26235) - 38a20dd89f91 IWYU: replace most private mappings with pragmas (#26247) - 09541d514dd1 IWYU: replace public-to-public mappings with pragmas (#26237) - 39771b223847 Makefile: add nvim to oldtest phony target - 6823fdb20b13 PVS: exclude build directory - 5d387c338828 ci: ensure correct headers are used on macOS - dcb11c109141 clint: don't allow INIT() in non-header files (#27407) - c98ef2d7c629 clint: fix deprecation and linter warnings - 7e2387f41be7 clint: more precise check for "defs" headers (#26236) - cf8b2c0e74fd iwyu: add a few more _defs.h mappings (#25435) - 5f03a1eaabfc lint: remove unnecessary clint.py rules - eecddd24164c lint: use stylua without add_glob_target - 25e51d393a42 lua: vendor coxpcall - 4dc86477b674 luarc.json: disable luadoc-miss-see-name #24108 - fd9ac5aa8e1c makefile: remove a phony target uninstall (#24349) - 978962f9a00c release.sh: regenerate docs after changing NVIM_API_PRERELEASE (#28229) - 9ca81b025990 release.sh: set VIMRUNTIME when regenerating docs (#28765) - 4399c4932d7b release.sh: use git cliff, drop old script - d0ae52986159 scripts: allow a git ref for lsp_types #24377 - bfb81e1a8516 snap: remove obsolete snapcraft.yaml - 981301d11f83 terminfo: include user capabilities in comments (#28066) - 6801befcc5c0 uninstall: don't build if installation manifest not found - 345dcba629c7 windows: set longPathAware in manifest #28389
2024-05-16 05:34:32 -07:00
set(NVIM_API_PRERELEASE false)
# Build-type: RelWithDebInfo
# /Og means something different in MSVC
if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -Og -g")
endif()
# We _want_ assertions in RelWithDebInfo build-type.
if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG)
string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE " " " " CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") # Remove duplicate whitespace
endif()
option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
# TSAN exists to test Luv threads.
option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
OR (ENABLE_ASAN_UBSAN AND ENABLE_TSAN)
OR (ENABLE_MSAN AND ENABLE_TSAN))
2018-10-06 09:45:34 -07:00
message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously")
2015-06-08 09:49:23 -07:00
endif()
# Place targets in bin/ or lib/ for all build configurations
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${CFGNAME} CFGNAME)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
endforeach()
if(NOT PREFER_LUA)
find_program(LUA_PRG NAMES luajit)
endif()
find_program(LUA_PRG NAMES lua5.1 lua5.2 lua)
if(NOT LUA_PRG)
2018-10-06 09:45:34 -07:00
message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter")
endif()
2018-10-06 09:45:34 -07:00
message(STATUS "Using Lua interpreter: ${LUA_PRG}")
# Some of the code generation still relies on stable table ordering in order to
# produce reproducible output - specifically the msgpack'ed data in
# funcs_metadata.generated.h and ui_events_metadata.generated.h. This should
# ideally be fixed in the generators, but until then as a workaround you may provide
# a specific lua implementation that provides the needed stability by setting LUA_GEN_PRG:
if(NOT LUA_GEN_PRG)
set(LUA_GEN_PRG "${LUA_PRG}" CACHE FILEPATH "Path to the lua used for code generation.")
endif()
message(STATUS "Using Lua interpreter for code generation: ${LUA_GEN_PRG}")
option(COMPILE_LUA "Pre-compile Lua sources into bytecode (for sources that are included in the binary)" ON)
if(COMPILE_LUA AND NOT WIN32)
if(PREFER_LUA)
foreach(CURRENT_LUAC_PRG luac5.1 luac)
find_program(_CHECK_LUAC_PRG ${CURRENT_LUAC_PRG})
if(_CHECK_LUAC_PRG)
set(LUAC_PRG "${_CHECK_LUAC_PRG} -s -o - %s" CACHE STRING "Format for compiling to Lua bytecode")
break()
endif()
endforeach()
elseif(LUA_PRG MATCHES "luajit")
check_lua_module(${LUA_PRG} "jit.bcsave" LUAJIT_HAS_JIT_BCSAVE)
if(LUAJIT_HAS_JIT_BCSAVE)
set(LUAC_PRG "${LUA_PRG} -b -s %s -" CACHE STRING "Format for compiling to Lua bytecode")
endif()
endif()
endif()
if(LUAC_PRG)
message(STATUS "Using Lua compiler: ${LUAC_PRG}")
endif()
# Lint
option(CI_LINT "Abort if lint programs not found" OFF)
if(CI_LINT)
set(LINT_REQUIRED "REQUIRED")
endif()
find_program(SHELLCHECK_PRG shellcheck ${LINT_REQUIRED})
find_program(STYLUA_PRG stylua ${LINT_REQUIRED})
set(STYLUA_DIRS runtime scripts src test contrib)
add_glob_target(
TARGET lintlua-luacheck
COMMAND $<TARGET_FILE:nvim_bin>
2023-09-05 02:49:08 -07:00
FLAGS -ll ${PROJECT_SOURCE_DIR}/test/lua_runner.lua ${CMAKE_BINARY_DIR}/usr luacheck -q
GLOB_DIRS runtime scripts src test
GLOB_PAT *.lua
build: enable lintlua for test/ dir Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable stylua for entire `test/` directory. - Exclude these high-churn files until this issue is resolved: https://github.com/JohnnyMorganz/StyLua/issues/829 ``` test/functional/ui/decorations_spec.lua | 3560 ++++++++++++++++++++++++++++++++++++---------------- test/functional/ui/float_spec.lua | 5826 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/multigrid_spec.lua | 1349 ++++++++++++++------ ``` - Make surgical changes to these files (or add `stylua: ignore` in some small scopes) to improve the result: ``` test/functional/vimscript/msgpack_functions_spec.lua | 1414 +++++++++++++++------ test/functional/api/buffer_spec.lua | 1389 +++++++++++---------- test/functional/api/vim_spec.lua | 2740 +++++++++++++++++++++++----------------- ``` - These "high churn" files are NOT excluded because the changes are largely an improvement: ``` test/functional/plugin/lsp_spec.lua | 2198 ++++++++++++++++++--------------- test/functional/plugin/shada_spec.lua | 4078 +++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/cmdline_spec.lua | 1199 +++++++++++------- test/functional/ui/popupmenu_spec.lua | 1267 +++++++++++-------- test/functional/ui/messages_spec.lua | 1643 +++++++++++++++--------- ``` - TODO: how to check "all directories"? With `GLOB_DIRS *` and `/.deps/` (or `.deps/`) in `.styluaignore`, Lua code in `.deps/` is still checked...
2023-12-07 04:19:35 -07:00
TOUCH_STRATEGY PER_DIR)
add_dependencies(lintlua-luacheck lua_dev_deps)
add_glob_target(
TARGET lintlua-stylua
COMMAND ${STYLUA_PRG}
FLAGS --color=always --check --respect-ignores
GLOB_DIRS ${STYLUA_DIRS}
GLOB_PAT *.lua
build: enable lintlua for test/ dir Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable stylua for entire `test/` directory. - Exclude these high-churn files until this issue is resolved: https://github.com/JohnnyMorganz/StyLua/issues/829 ``` test/functional/ui/decorations_spec.lua | 3560 ++++++++++++++++++++++++++++++++++++---------------- test/functional/ui/float_spec.lua | 5826 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/multigrid_spec.lua | 1349 ++++++++++++++------ ``` - Make surgical changes to these files (or add `stylua: ignore` in some small scopes) to improve the result: ``` test/functional/vimscript/msgpack_functions_spec.lua | 1414 +++++++++++++++------ test/functional/api/buffer_spec.lua | 1389 +++++++++++---------- test/functional/api/vim_spec.lua | 2740 +++++++++++++++++++++++----------------- ``` - These "high churn" files are NOT excluded because the changes are largely an improvement: ``` test/functional/plugin/lsp_spec.lua | 2198 ++++++++++++++++++--------------- test/functional/plugin/shada_spec.lua | 4078 +++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/cmdline_spec.lua | 1199 +++++++++++------- test/functional/ui/popupmenu_spec.lua | 1267 +++++++++++-------- test/functional/ui/messages_spec.lua | 1643 +++++++++++++++--------- ``` - TODO: how to check "all directories"? With `GLOB_DIRS *` and `/.deps/` (or `.deps/`) in `.styluaignore`, Lua code in `.deps/` is still checked...
2023-12-07 04:19:35 -07:00
TOUCH_STRATEGY PER_DIR)
add_custom_target(lintlua)
add_dependencies(lintlua lintlua-luacheck lintlua-stylua)
add_glob_target(
TARGET lintsh
COMMAND ${SHELLCHECK_PRG}
FLAGS -x -a
GLOB_DIRS scripts
GLOB_PAT *.sh
build: enable lintlua for test/ dir Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable stylua for entire `test/` directory. - Exclude these high-churn files until this issue is resolved: https://github.com/JohnnyMorganz/StyLua/issues/829 ``` test/functional/ui/decorations_spec.lua | 3560 ++++++++++++++++++++++++++++++++++++---------------- test/functional/ui/float_spec.lua | 5826 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/multigrid_spec.lua | 1349 ++++++++++++++------ ``` - Make surgical changes to these files (or add `stylua: ignore` in some small scopes) to improve the result: ``` test/functional/vimscript/msgpack_functions_spec.lua | 1414 +++++++++++++++------ test/functional/api/buffer_spec.lua | 1389 +++++++++++---------- test/functional/api/vim_spec.lua | 2740 +++++++++++++++++++++++----------------- ``` - These "high churn" files are NOT excluded because the changes are largely an improvement: ``` test/functional/plugin/lsp_spec.lua | 2198 ++++++++++++++++++--------------- test/functional/plugin/shada_spec.lua | 4078 +++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/cmdline_spec.lua | 1199 +++++++++++------- test/functional/ui/popupmenu_spec.lua | 1267 +++++++++++-------- test/functional/ui/messages_spec.lua | 1643 +++++++++++++++--------- ``` - TODO: how to check "all directories"? With `GLOB_DIRS *` and `/.deps/` (or `.deps/`) in `.styluaignore`, Lua code in `.deps/` is still checked...
2023-12-07 04:19:35 -07:00
TOUCH_STRATEGY PER_DIR)
add_custom_target(lintcommit
COMMAND $<TARGET_FILE:nvim_bin> -u NONE -l ${PROJECT_SOURCE_DIR}/scripts/lintcommit.lua main)
add_dependencies(lintcommit nvim_bin)
add_custom_target(lint)
add_dependencies(lint lintc lintlua lintsh lintcommit)
# Format
add_glob_target(
TARGET formatlua
COMMAND ${STYLUA_PRG}
FLAGS --respect-ignores
GLOB_DIRS ${STYLUA_DIRS}
build: enable lintlua for test/ dir Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable stylua for entire `test/` directory. - Exclude these high-churn files until this issue is resolved: https://github.com/JohnnyMorganz/StyLua/issues/829 ``` test/functional/ui/decorations_spec.lua | 3560 ++++++++++++++++++++++++++++++++++++---------------- test/functional/ui/float_spec.lua | 5826 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/multigrid_spec.lua | 1349 ++++++++++++++------ ``` - Make surgical changes to these files (or add `stylua: ignore` in some small scopes) to improve the result: ``` test/functional/vimscript/msgpack_functions_spec.lua | 1414 +++++++++++++++------ test/functional/api/buffer_spec.lua | 1389 +++++++++++---------- test/functional/api/vim_spec.lua | 2740 +++++++++++++++++++++++----------------- ``` - These "high churn" files are NOT excluded because the changes are largely an improvement: ``` test/functional/plugin/lsp_spec.lua | 2198 ++++++++++++++++++--------------- test/functional/plugin/shada_spec.lua | 4078 +++++++++++++++++++++++++++++++++++------------------------- test/functional/ui/cmdline_spec.lua | 1199 +++++++++++------- test/functional/ui/popupmenu_spec.lua | 1267 +++++++++++-------- test/functional/ui/messages_spec.lua | 1643 +++++++++++++++--------- ``` - TODO: how to check "all directories"? With `GLOB_DIRS *` and `/.deps/` (or `.deps/`) in `.styluaignore`, Lua code in `.deps/` is still checked...
2023-12-07 04:19:35 -07:00
GLOB_PAT *.lua
TOUCH_STRATEGY PER_DIR)
add_custom_target(format)
add_dependencies(format formatc formatlua)
install_helper(
FILES ${CMAKE_SOURCE_DIR}/src/man/nvim.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
add_custom_target(nvim ALL)
add_dependencies(nvim nvim_bin nvim_runtime_deps nvim_runtime)
add_subdirectory(src/nvim)
add_subdirectory(cmake.config)
add_subdirectory(runtime)
add_subdirectory(test)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/UninstallHelper.cmake)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(cmake.packaging)
endif()
get_externalproject_options(uncrustify ${DEPS_IGNORE_SHA})
ExternalProject_Add(uncrustify
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-D CMAKE_RUNTIME_OUTPUT_DIRECTORY=${DEPS_BIN_DIR}
EXCLUDE_FROM_ALL TRUE
${EXTERNALPROJECT_OPTIONS})
option(USE_BUNDLED_BUSTED "Use bundled busted" ON)
if(USE_BUNDLED_BUSTED)
get_externalproject_options(lua_dev_deps ${DEPS_IGNORE_SHA})
ExternalProject_Add(lua_dev_deps
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua_dev_deps
SOURCE_DIR ${DEPS_SHARE_DIR}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
EXCLUDE_FROM_ALL TRUE
${EXTERNALPROJECT_OPTIONS})
else()
add_custom_target(lua_dev_deps)
endif()