From ebd2372f928c6f1cfe823d36aabf479f6930232f Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Thu, 2 Feb 2023 23:56:25 +0100 Subject: refactor: use flexible arrays instead of the length-of-one trick (#22072) The "length-of-one" trick, where the last element of a struct is an array of size 1, but extra size is allocated when calling malloc where it uses more than 1 element in the array, cause problems with some compilers. Some compilers set _FORTIFY_SOURCE=2 by default which incorrectly considers it as an overflow. More information: https://github.com/neovim/neovim/issues/223#issuecomment-1413828554 Using flexible array members allows us to to properly convey to the compiler that its size may be larger than 1. This also enables us to remove lengthy workarounds that are unreliable, as they depend on CMAKE_BUILD_TYPE which isn't defined for multi-config generators. Closes: https://github.com/neovim/neovim/issues/223 --- CMakeLists.txt | 14 -------------- 1 file changed, 14 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c0d999ab8..2c9d7f339f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,20 +175,6 @@ if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG) string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") endif() -# gcc 4.0+ sets _FORTIFY_SOURCE=2 automatically. This currently -# does not work with Neovim due to some uses of dynamically-sized structures. -# https://github.com/neovim/neovim/issues/223 - -# Include the build type's default flags in the check for _FORTIFY_SOURCE, -# otherwise we may incorrectly identify the level as acceptable and find out -# later that it was not when optimizations were enabled. CFLAGS is applied -# even though you don't see it in CMAKE_REQUIRED_FLAGS. -set(INIT_FLAGS_NAME CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}) -string(TOUPPER ${INIT_FLAGS_NAME} INIT_FLAGS_NAME) -if(${INIT_FLAGS_NAME}) - set(CMAKE_REQUIRED_FLAGS "${${INIT_FLAGS_NAME}}") -endif() - option(LOG_LIST_ACTIONS "Add list actions logging" OFF) option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) -- cgit From f9826e1dff5f1ac8212ca55a847c872c426142db Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Fri, 3 Feb 2023 00:00:15 +0100 Subject: build: stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051) Any logic involving CMAKE_BUILD_TYPE is automatically broken as it won't work with multi-config generators. The only exception is if we explicitly check whether the current generator is single-config as well. Instead, use generator expressions or cmake variables that allows to set options for certain build types only such as INTERPROCEDURAL_OPTIMIZATION_. Opt to generate all headers with optimization level O2 with no debug information for all build types as that is the simplest way to make it behave the same for all generators. --- CMakeLists.txt | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c9d7f339f..8df9eb19f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,28 +130,6 @@ set(NVIM_API_LEVEL 11) # Bump this after any API change. set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change. set(NVIM_API_PRERELEASE true) -set(NVIM_VERSION_BUILD_TYPE "${CMAKE_BUILD_TYPE}") -# NVIM_VERSION_CFLAGS set further below. - -# Log level (MIN_LOG_LEVEL in log.h) -if("${MIN_LOG_LEVEL}" MATCHES "^$") - # Minimize logging for release-type builds. - if(CMAKE_BUILD_TYPE STREQUAL "Release" - OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" - OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") - message(STATUS "MIN_LOG_LEVEL not specified, default is 3 (ERROR) for release builds") - set(MIN_LOG_LEVEL 3) - else() - message(STATUS "MIN_LOG_LEVEL not specified, default is 1 (INFO)") - set(MIN_LOG_LEVEL 1) - endif() -else() - if(NOT MIN_LOG_LEVEL MATCHES "^[0-3]$") - message(FATAL_ERROR "invalid MIN_LOG_LEVEL: " ${MIN_LOG_LEVEL}) - endif() - message(STATUS "MIN_LOG_LEVEL=${MIN_LOG_LEVEL}") -endif() - # Default to -O2 on release builds. if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3") message(STATUS "Replacing -O3 in CMAKE_C_FLAGS_RELEASE with -O2") @@ -333,7 +311,6 @@ install_helper( # add_subdirectory(src/nvim) -get_directory_property(NVIM_VERSION_CFLAGS DIRECTORY src/nvim DEFINITION NVIM_VERSION_CFLAGS) add_subdirectory(cmake.config) add_subdirectory(test/functional/fixtures) # compile test programs add_subdirectory(runtime) -- cgit From 645daaf5e912ca8623a99dbc2cdbeb34d64a91f8 Mon Sep 17 00:00:00 2001 From: Enan Ajmain <3nan.ajmain@gmail.com> Date: Wed, 8 Feb 2023 15:08:18 +0600 Subject: build(Windows): make bundling nvim-qt optional (#21866) Closes https://github.com/neovim/neovim/issues/14552. --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 8df9eb19f9..00a1d3f7af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,12 +310,18 @@ install_helper( # Go down the tree. # +if(EXISTS "${DEPS_PREFIX}/share/nvim-qt") + option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" ON) +else() + option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" OFF) +endif() + add_subdirectory(src/nvim) add_subdirectory(cmake.config) add_subdirectory(test/functional/fixtures) # compile test programs add_subdirectory(runtime) get_directory_property(GENERATED_HELP_TAGS DIRECTORY runtime DEFINITION GENERATED_HELP_TAGS) -if(WIN32) +if(WIN32 AND USE_BUNDLED_NVIMQT) install_helper( FILES ${DEPS_PREFIX}/share/nvim-qt/runtime/plugin/nvim_gui_shim.vim DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim-qt/runtime/plugin) -- cgit From 4d2c1004e96faad1179591b4409a75965af43985 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Wed, 8 Feb 2023 11:00:16 +0100 Subject: build: prefer -D = over -D= (#22164) This makes it easier to see that -D is referring to the entire "=", rather than only . It also help syntax highlighters highlight built-in variables. --- CMakeLists.txt | 90 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 00a1d3f7af..6cfcc61213 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,15 +65,15 @@ else() file(MAKE_DIRECTORY ${DEPS_BUILD_DIR}) execute_process( COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} - -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG} - -DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL} - -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO} - -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE} - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} + -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( @@ -347,15 +347,15 @@ if(BUSTED_PRG) if(LUA_HAS_FFI) add_custom_target(unittest COMMAND ${CMAKE_COMMAND} - -DBUSTED_PRG=${BUSTED_PRG} - -DLUA_PRG=${LUA_PRG} - -DNVIM_PRG=$ - -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -DBUILD_DIR=${CMAKE_BINARY_DIR} - -DTEST_TYPE=unit - -DCIRRUS_CI=$ENV{CIRRUS_CI} + -D BUSTED_PRG=${BUSTED_PRG} + -D LUA_PRG=${LUA_PRG} + -D NVIM_PRG=$ + -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} + -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test + -D BUILD_DIR=${CMAKE_BINARY_DIR} + -D TEST_TYPE=unit + -D CIRRUS_CI=$ENV{CIRRUS_CI} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${UNITTEST_PREREQS} USES_TERMINAL) @@ -370,15 +370,15 @@ if(BUSTED_PRG) add_custom_target(functionaltest COMMAND ${CMAKE_COMMAND} - -DBUSTED_PRG=${BUSTED_PRG} - -DLUA_PRG=${LUA_PRG} - -DNVIM_PRG=$ - -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -DBUILD_DIR=${CMAKE_BINARY_DIR} - -DTEST_TYPE=functional - -DCIRRUS_CI=$ENV{CIRRUS_CI} + -D BUSTED_PRG=${BUSTED_PRG} + -D LUA_PRG=${LUA_PRG} + -D NVIM_PRG=$ + -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} + -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test + -D BUILD_DIR=${CMAKE_BINARY_DIR} + -D TEST_TYPE=functional + -D CIRRUS_CI=$ENV{CIRRUS_CI} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${FUNCTIONALTEST_PREREQS} USES_TERMINAL) @@ -386,15 +386,15 @@ if(BUSTED_PRG) add_custom_target(benchmark COMMAND ${CMAKE_COMMAND} - -DBUSTED_PRG=${BUSTED_PRG} - -DLUA_PRG=${LUA_PRG} - -DNVIM_PRG=$ - -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -DBUILD_DIR=${CMAKE_BINARY_DIR} - -DTEST_TYPE=benchmark - -DCIRRUS_CI=$ENV{CIRRUS_CI} + -D BUSTED_PRG=${BUSTED_PRG} + -D LUA_PRG=${LUA_PRG} + -D NVIM_PRG=$ + -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} + -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test + -D BUILD_DIR=${CMAKE_BINARY_DIR} + -D TEST_TYPE=benchmark + -D CIRRUS_CI=$ENV{CIRRUS_CI} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${BENCHMARK_PREREQS} USES_TERMINAL) @@ -404,15 +404,15 @@ endif() if(BUSTED_LUA_PRG) add_custom_target(functionaltest-lua COMMAND ${CMAKE_COMMAND} - -DBUSTED_PRG=${BUSTED_LUA_PRG} - -DLUA_PRG=${LUA_PRG} - -DNVIM_PRG=$ - -DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -DBUILD_DIR=${CMAKE_BINARY_DIR} - -DTEST_TYPE=functional - -DCIRRUS_CI=$ENV{CIRRUS_CI} + -D BUSTED_PRG=${BUSTED_LUA_PRG} + -D LUA_PRG=${LUA_PRG} + -D NVIM_PRG=$ + -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} + -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test + -D BUILD_DIR=${CMAKE_BINARY_DIR} + -D TEST_TYPE=functional + -D CIRRUS_CI=$ENV{CIRRUS_CI} -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake DEPENDS ${FUNCTIONALTEST_PREREQS} USES_TERMINAL) -- cgit From d6d3a9201302c5c728d2bdd1c50678e18645e7eb Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Wed, 8 Feb 2023 18:16:48 +0100 Subject: build: replace check-single-includes with clang-tidy (#22061) Clang-tidy already does what check-single-includes does automatically on top of its regular linting. It is also generator independent, so it doesn't take an eternity to run on slower generators such as Visual Studio. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cfcc61213..36210bb007 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,9 +244,9 @@ endif() # Lint # find_program(LUACHECK_PRG luacheck) +find_program(SHELLCHECK_PRG shellcheck) find_program(STYLUA_PRG stylua) find_program(UNCRUSTIFY_PRG uncrustify) -find_program(SHELLCHECK_PRG shellcheck) add_glob_target( REQUIRED @@ -287,7 +287,7 @@ add_custom_target(lintcommit add_dependencies(lintcommit nvim) add_custom_target(lint) -add_dependencies(lint check-single-includes lintc lintlua lintsh lintcommit) +add_dependencies(lint clang-tidy lintc lintlua lintsh lintcommit) # # Format -- cgit From ffd216e869fd7c18b9f608173c929500e26fe070 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Wed, 8 Feb 2023 23:46:39 +0100 Subject: build: create test/CMakeLists.txt and move test-related code (#22179) Having a clear separation between build code and test code makes it easier to get a higher-level understanding of how the neovim build works. --- CMakeLists.txt | 99 +--------------------------------------------------------- 1 file changed, 1 insertion(+), 98 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 36210bb007..7abbff3471 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -306,10 +306,6 @@ install_helper( FILES ${CMAKE_SOURCE_DIR}/src/man/nvim.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) -# -# Go down the tree. -# - if(EXISTS "${DEPS_PREFIX}/share/nvim-qt") option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" ON) else() @@ -318,107 +314,14 @@ endif() add_subdirectory(src/nvim) add_subdirectory(cmake.config) -add_subdirectory(test/functional/fixtures) # compile test programs add_subdirectory(runtime) -get_directory_property(GENERATED_HELP_TAGS DIRECTORY runtime DEFINITION GENERATED_HELP_TAGS) +add_subdirectory(test) if(WIN32 AND USE_BUNDLED_NVIMQT) install_helper( FILES ${DEPS_PREFIX}/share/nvim-qt/runtime/plugin/nvim_gui_shim.vim DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim-qt/runtime/plugin) endif() -# Setup busted. -find_program(BUSTED_PRG NAMES busted busted.bat) -find_program(BUSTED_LUA_PRG busted-lua) -if(NOT BUSTED_OUTPUT_TYPE) - set(BUSTED_OUTPUT_TYPE "nvim") -endif() - -# Setup some test-related bits. We do this after going down the tree because we -# need some of the targets. -if(BUSTED_PRG) - get_target_property(TEST_INCLUDE_DIRS main_lib INTERFACE_INCLUDE_DIRECTORIES) - - set(UNITTEST_PREREQS nvim) - set(FUNCTIONALTEST_PREREQS nvim printenv-test printargs-test shell-test pwsh-test streams-test tty-test ${GENERATED_HELP_TAGS}) - set(BENCHMARK_PREREQS nvim tty-test) - - check_lua_module(${LUA_PRG} "ffi" LUA_HAS_FFI) - if(LUA_HAS_FFI) - add_custom_target(unittest - COMMAND ${CMAKE_COMMAND} - -D BUSTED_PRG=${BUSTED_PRG} - -D LUA_PRG=${LUA_PRG} - -D NVIM_PRG=$ - -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -D BUILD_DIR=${CMAKE_BINARY_DIR} - -D TEST_TYPE=unit - -D CIRRUS_CI=$ENV{CIRRUS_CI} - -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake - DEPENDS ${UNITTEST_PREREQS} - USES_TERMINAL) - set_target_properties(unittest PROPERTIES FOLDER test) - else() - message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}") - endif() - - configure_file( - ${CMAKE_SOURCE_DIR}/test/cmakeconfig/paths.lua.in - ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua) - - add_custom_target(functionaltest - COMMAND ${CMAKE_COMMAND} - -D BUSTED_PRG=${BUSTED_PRG} - -D LUA_PRG=${LUA_PRG} - -D NVIM_PRG=$ - -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -D BUILD_DIR=${CMAKE_BINARY_DIR} - -D TEST_TYPE=functional - -D CIRRUS_CI=$ENV{CIRRUS_CI} - -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake - DEPENDS ${FUNCTIONALTEST_PREREQS} - USES_TERMINAL) - set_target_properties(functionaltest PROPERTIES FOLDER test) - - add_custom_target(benchmark - COMMAND ${CMAKE_COMMAND} - -D BUSTED_PRG=${BUSTED_PRG} - -D LUA_PRG=${LUA_PRG} - -D NVIM_PRG=$ - -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -D BUILD_DIR=${CMAKE_BINARY_DIR} - -D TEST_TYPE=benchmark - -D CIRRUS_CI=$ENV{CIRRUS_CI} - -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake - DEPENDS ${BENCHMARK_PREREQS} - USES_TERMINAL) - set_target_properties(benchmark PROPERTIES FOLDER test) -endif() - -if(BUSTED_LUA_PRG) - add_custom_target(functionaltest-lua - COMMAND ${CMAKE_COMMAND} - -D BUSTED_PRG=${BUSTED_LUA_PRG} - -D LUA_PRG=${LUA_PRG} - -D NVIM_PRG=$ - -D WORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR} - -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE} - -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test - -D BUILD_DIR=${CMAKE_BINARY_DIR} - -D TEST_TYPE=functional - -D CIRRUS_CI=$ENV{CIRRUS_CI} - -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake - DEPENDS ${FUNCTIONALTEST_PREREQS} - USES_TERMINAL) - set_target_properties(functionaltest-lua PROPERTIES FOLDER test) -endif() - add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/UninstallHelper.cmake) -- cgit From fe1e6b82f4f3ff3d919d1243f37e9216781bb786 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Fri, 10 Feb 2023 00:42:37 +0100 Subject: ci: inline test.sh to run_tests.sh (#22198) This will get rid of the common/ directory. --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 7abbff3471..d12b71a651 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -276,8 +276,6 @@ add_glob_target( GLOB_PAT *.sh EXCLUDE scripts/pvscheck.sh - ci/common - ci/snap TOUCH_STRATEGY SINGLE) add_custom_target(lintcommit -- cgit From fc8c77a69f01eb1eac0a1b4373ae1bb7f81d1629 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Sat, 18 Feb 2023 10:47:22 +0100 Subject: ci: split ci.yml into a test workflow and a build test workflow (#22302) Having a workflow that only builds neovim without running all of the tests is a cheap way to test the build still works without burning too much CI time. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index d12b71a651..a608e42dab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1 # pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/ -# Version should match the tested CMAKE_URL in .github/workflows/ci.yml. +# Version should match the tested CMAKE_URL in .github/workflows/build.yml. cmake_minimum_required(VERSION 3.10) # Can be removed once minimum version is at least 3.15 -- cgit From bfe6b49447744cea1cd941660b2a3a501a0701cb Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Sun, 19 Feb 2023 15:06:53 +0100 Subject: build(MSVC): enable assertions on RelWithDebInfo build type (#22326) --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index a608e42dab..ce29a65dde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,6 +151,7 @@ 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}") endif() option(LOG_LIST_ACTIONS "Add list actions logging" OFF) -- cgit From 1e37703a74eeebfa14c401db865157c39f1215bf Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Sun, 26 Feb 2023 22:32:08 +0100 Subject: build: remove pkgconfig-related code (#22422) Cmake should already be able to find everything on its own. --- CMakeLists.txt | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index ce29a65dde..7944dec396 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,23 +38,9 @@ endif() # Prefer our bundled versions of dependencies. if(DEFINED ENV{DEPS_BUILD_DIR}) - if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - # pkg-config 29.2 has a bug on OpenBSD which causes it to drop any paths that - # *contain* system include paths. To avoid this, we prefix what would be - # "/usr/include" as "/_usr/include". - # This check is also performed in the cmake.deps/CMakeLists.txt and in the - # else clause following here. - # https://github.com/neovim/neovim/pull/14745#issuecomment-860201794 - set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/_usr" CACHE PATH "Path prefix for finding dependencies") - else() - set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies") - endif() + set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/usr" CACHE PATH "Path prefix for finding dependencies") else() - if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - set(DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/.deps/_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") - endif() + 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} @@ -84,7 +70,6 @@ else() endif() list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX}) -set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${DEPS_PREFIX}/lib/pkgconfig") if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") # If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET), -- cgit From a0292b4e5f106482edc5623eef85aa48e2e55bb7 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Thu, 2 Mar 2023 10:22:41 +0100 Subject: build: remove libfindmacros library (#22423) Large parts the library weren't being used, and the parts that were was overly abstracted for our use case. Additionally, part of its use case was to abstract pkgconfig boilerplate, which is no longer needed as pkgconfig has been removed in favor of relying on cmake alone in 09118052cee5aef978d6075db5287c1b6c27381a. --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 7944dec396..223e2ad111 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,8 +22,9 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(CheckCCompilerFlag) include(CheckCSourceCompiles) +include(FindPackageHandleStandardArgs) include(InstallHelpers) -include(LuaHelpers) # Find Lua interpreter +include(LuaHelpers) include(PreventInTreeBuilds) include(Util) -- cgit From 4cf4ae93df6af09ef3a0df678bb3d154b65bf731 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Thu, 2 Mar 2023 22:50:43 +0100 Subject: build: cmake cleanup (#22251) - Remove unused code - Use consistent casing. Variable names such as LibLuV_LIBRARIES is needlessly jarring, even if the name might be technically correct. - Use title casing for packages. find_package(unibilium) requires the find_module to be named "Findunibilium.cmake", which makes it harder to spot when scanning the files. Instead, use "Unibilium". --- CMakeLists.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 223e2ad111..1334dececd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,8 +30,6 @@ include(Util) set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches) -set_property(GLOBAL PROPERTY USE_FOLDERS ON) - find_program(CCACHE_PRG ccache) if(CCACHE_PRG) set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env CCACHE_SLOPPINESS=pch_defines,time_macros ${CCACHE_PRG}) @@ -72,7 +70,7 @@ endif() list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX}) -if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") +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) @@ -84,7 +82,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") message(STATUS "Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}") endif() -if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if(WIN32 OR APPLE) # Ignore case when comparing filenames on Windows and Mac. set(CASE_INSENSITIVE_FILENAME TRUE) # Enable fixing case-insensitive filenames for Windows and Mac. @@ -259,7 +257,7 @@ add_glob_target( TARGET lintsh COMMAND ${SHELLCHECK_PRG} FLAGS -x -a - GLOB_DIRS scripts ci + GLOB_DIRS scripts GLOB_PAT *.sh EXCLUDE scripts/pvscheck.sh -- cgit From 2cffd048334912f72e0f55b2a02bd1fd9107613a Mon Sep 17 00:00:00 2001 From: bfredl Date: Mon, 27 Feb 2023 20:14:10 +0100 Subject: refactor(build): graduate -Wvla, -fno-common and -Og "features" These are in gcc 4.9+ which we require anyway. -Og is safe on clang as well (reserved for a future debug-optimize mode, and currently does the same as -O1 which is reasonable) --- CMakeLists.txt | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 1334dececd..0c445b27b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,17 +120,11 @@ if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3") string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") endif() -if(CMAKE_C_COMPILER_ID MATCHES "GNU") - check_c_compiler_flag(-Og HAS_OG_FLAG) -else() - set(HAS_OG_FLAG 0) -endif() - -# # Build-type: RelWithDebInfo -# -if(HAS_OG_FLAG) - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -Og -g") + +# /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) -- cgit From 2ba224e1526681c1a0b1b2b095b1ef2b0874db48 Mon Sep 17 00:00:00 2001 From: bfredl Date: Sun, 26 Feb 2023 12:51:03 +0100 Subject: refactor(log): reduce compile time LOG_LEVEL granularity --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c445b27b4..1b89718ebd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,6 +135,7 @@ endif() option(LOG_LIST_ACTIONS "Add list actions logging" OFF) option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) +option(LOG_DEBUG "Enable debug log messages even in a release build" OFF) option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF) option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) -- cgit From 7100a80253a353341893e1f6397cc9e07dadbc9d Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Sat, 4 Mar 2023 20:04:01 +0100 Subject: build: show build type specific compiler flags when using --version The build type specific flags are defined in the variables CMAKE_C_FLAGS_, where can be DEBUG, RELEASE, RELWITHDEBINFO and MINSIZEREL. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b89718ebd..266ac0354b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,6 +130,7 @@ endif() 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(LOG_LIST_ACTIONS "Add list actions logging" OFF) -- cgit From 5bad9afed2189f3716865da42c66133d1f6da218 Mon Sep 17 00:00:00 2001 From: ii14 Date: Thu, 16 Mar 2023 18:13:58 +0100 Subject: build: sanitizers for gcc GCC also supports sanitizers. GCC doesn't support -fsanitize-blacklist option though, so replace .asan-blacklist file with no_sanitize_address function attributes instead. --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 266ac0354b..854dc55afa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,8 +146,10 @@ if((CLANG_ASAN_UBSAN AND CLANG_MSAN) message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously") endif() -if((CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) AND NOT CMAKE_C_COMPILER_ID MATCHES "Clang") - message(FATAL_ERROR "Sanitizers are only supported for Clang") +if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) + if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU") + message(FATAL_ERROR "Sanitizers are only supported for Clang and GCC") + endif() endif() # Place targets in bin/ or lib/ for all build configurations -- cgit From 17ce634b8f44e218270ee472599edf4cf3ba0fac Mon Sep 17 00:00:00 2001 From: ii14 Date: Thu, 16 Mar 2023 19:24:04 +0100 Subject: build!: rename sanitizer options from CLANG_* to ENABLE_* --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 854dc55afa..262af9ab55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,18 +135,18 @@ endif() option(LOG_LIST_ACTIONS "Add list actions logging" OFF) -option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) +option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) option(LOG_DEBUG "Enable debug log messages even in a release build" OFF) -option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF) -option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) +option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF) +option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) -if((CLANG_ASAN_UBSAN AND CLANG_MSAN) - OR (CLANG_ASAN_UBSAN AND CLANG_TSAN) - OR (CLANG_MSAN AND CLANG_TSAN)) +if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN) + OR (ENABLE_ASAN_UBSAN AND ENABLE_TSAN) + OR (ENABLE_MSAN AND ENABLE_TSAN)) message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously") endif() -if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) +if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN) if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU") message(FATAL_ERROR "Sanitizers are only supported for Clang and GCC") endif() -- cgit From 040f1459849ab05b04f6bb1e77b3def16b4c2f2b Mon Sep 17 00:00:00 2001 From: bfredl Date: Fri, 7 Apr 2023 13:26:29 +0200 Subject: NVIM v0.9.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For a summary of notable changes, see runtime/doc/news.txt or run `:help news` within nvim. BREAKING CHANGES - Remove hardcopy - Make iconv a non-optional dep - Remove has("debug") (#22060) - Make libintl a required dependency - Rename vim.pretty_print => vim.print - Rename sanitizer options from CLANG_* to ENABLE_* - Remove the .deb release (#22773) - **column**: Ensure 'statuscolumn' works with virtual and wrapped lines - **cscope**: Remove - **defaults**: Change default 'commentstring' value to empty (#22862) - **edit**: Remove old c implementation of hebrew keymap - **editorconfig**: Change editorconfig_enable to editorconfig - **exepath**: Prefers extensionless for powershell - **health**: Remove deprecated health.lua - **lsp**: Add rule-based sem token highlighting (#22022) - **lua**: Execute Lua with "nvim -l" - **messages**: Graduate the 'msgsep' feature - **options**: Deprecate paste, remove pastetoggle (#22647) - **rpc**: Preseve files when stdio channel is closed (#22137) - **runtime**: Remove filetype.vim (#20428) - **treesitter**: Remove g:ts_highlight_lua (#22257) - **treesitter**: Remove silent option from language.add() - **treesitter**: Consolidate query util functions - **treesitter**: Remove deprecated show_tree func - **treesitter**: Deprecate top level indexes to modules (#22761) - **treesitter**: Rename help parser to vimdoc FEATURES - Added support for @generic to lua2dox.lua - Added support for optional params to lua2dox - Added support for specifying types for lua2dox - Mention ":help news" in intro #20674 - ":write ++p" creates parent dirs #20835 - Add vim.secure.read() - `vim.inspect_pos`, `vim.show_pos`, `:Inspect` - $NVIM_APPNAME #22128 - Try to recover from missing tempdir #22573 - Add `vim.filetype.get_option()` - Add `vim.treesitter.language.get_filetypes()` (#22643) - Allow function passed to defaulttable to take an argument (#22839) - **api**: Nvim_select_popupmenu_item support cmdline pum (#20652) - **api**: Add command name to Lua command callback opts - **api**: Show more exception info - **api**: More fields in nvim_list_uis - **api**: Add filetype option nvim_get_option_value - **api**: Add nvim_get_hl (#22693) - **api**: Nvim_exec2(), deprecate nvim_exec() #19032 - **api**: Evaluate 'statuscolumn' with nvim_eval_statusline() - **api**: Set statuscolumn line number in nvim_eval_statusline() - **aucmd_win**: Allow crazy things with hidden buffers (#21250) - **checkhealth**: Improve treesitter report - **checkhealth**: Check runtime ($VIMRUNTIME) - **checkhealth**: Use "help" syntax, avoid tabpage #20879 - **clipboard**: Copy to system clipboard in tmux when supported (#20936) - **clipboard**: Added wayclip support (#21091) - **diagnostic**: Add `suffix` option to `open_float()` (#21130) - **diagnostic**: Add `suffix` option to `virt_text` config (#21140) - **diagnostic**: Don't open quickfix/loclist if no diagnostics #21397 - **diagnostic**: Vim.diagnostic.is_disabled() #21527 - **diagnostic**: Add support for tags - **docs**: Nested lists in HTML, update :help parser - **docs**: Format parameters as a list #20485 - **docs**: Update parser, HTML gen #20720 - **docs-html**: Try to use tags for ToC headings - **editorconfig**: Add builtin EditorConfig support - **editorconfig**: Add editorconfig syntax file - **editorconfig**: Allow editorconfig to be toggled dynamically - **exrc**: Use vim.secure.read() for 'exrc' option - **exrc**: Support .nvim.lua (#21436) - **extmarks**: Allow preventing spellchecking with spell = false - **extmarks**: Extend nvim_buf_get_extmarks() - **filetype**: Fall back to file extension when matching from hashbang (#22140) - **float**: Open float relative to mouse #21531 - **fs**: Add opts argument to vim.fs.dir() - **gen_help_html.lua**: Remove old AWK scripts - **health**: Detect tmux RGB support via `client_termfeatures` - **help**: Highlighted codeblocks - **highlight**: Add DiagnosticOk (and associated) highlight groups (#21286) - **highlight**: Define the concept of altfont as a (c)term rendering attribute - **l10n**: Update Turkish translations (#20444) - **l10n**: Update zh_CN translations (#21085) - **lsp**: Add bufnr option to lsp.start (#20473) - **lsp**: Support window/showDocument (#19977) - **lsp**: Run handler in coroutine to support async response (#21026) - **lsp**: Support set title in lsp relate floatwindow (#21110) - **lsp**: Support willSave & willSaveWaitUntil capability (#21315) - **lsp**: Initial support for semantic token highlighting - **lsp**: Highlight semantic token modifiers (#21390) - **lsp**: Add function to get semantic tokens at cursor - **lsp**: Add function to clear codelens (#21504) - **lsp**: Show active clients in :checkhealth vim.lsp (#21670) - **lsp**: Add triggerKind option for vim.lsp.buf.code_action (#21905) - **lsp**: Implement workspace/didChangeWatchedFiles (#21293) - **lsp**: Implement workspace/didChangeWatchedFiles (#22405) - **lsp**: Overwrite omnifunc/tagfunc set by ftplugin #22267 - **lsp**: Render markdown in docs hover #22766 - **lsp**: Create default link from @lsp.type.comment to Comment (#22888) - **lua**: Send "--" literally to Lua "-l" script - **lua**: Exit 1 on Lua "-l" script error - **lua**: Execute stdin ("-") as Lua - **lua**: Store "nvim -l" scriptname in _G.arg[0] - **lua**: Low-level interpreter mode (nvim -ll) - **lua**: Make sure require'bit' always works, even with PUC lua 5.1 - **lua**: Add semver api - **lua**: Omnifunc for builting lua interpreter - **lua**: Use vim.empty_dict() for empty return value in new api functions (#22737) - **lua**: Allow `:=expr` as a shorter version of `:lua =expr` - **lua**: Add `vim.loader` - **lua-api**: Avoid unnecessary allocations (#19877) - **man**: Add health check - **man.lua**: Support spaces in manpage names - **message**: Avoid spam on failed os_msg - **packaging**: Add start menu and desktop shortcuts on Windows - **provider**: Add support for Yarn node modules on Windows (#21246) - **secure**: Add `:trust` command and vim.secure.trust() (#21107) - **spell**: Support nospell in treesitter queries - **spell**: Also source `spell/LANG.lua` when setting `spelllang` (#22111) - **test**: Add Lua forms for API methods (#20152) - **treesitter**: Add vim.treesitter.show_tree() (#21322) - **treesitter**: Add 'lang' option to show_tree() (#21341) - **treesitter**: Show filetype associated with parser (#17633) - **treesitter**: Allow capture text to be transformed - **treesitter**: Add metadata option for get_node_text - **treesitter**: Respect metadata[id].range for offset! - **treesitter**: Playground improvements - **treesitter**: Add filetype -> lang API - **treesitter**: Upstream foldexpr from nvim-treesitter - **treesitter**: Expand the API - **treesitter**: Add :InspectTree command (#22477) - **treesitter**: Bundle query parser and queries (#22483) - **treesitter**: Use upstream format for injection queries - **tui**: Run TUI as external process - **tui**: Graduate the +tui feature - **tui**: Support altfont mode in tui.c - **ui**: Add support to display a title in the border of a float (#20184) - **ui**: Add 'statuscolumn' option - **ui**: Restore has('gui_running') - **ui**: Add scroll_delta to win_viewport event #19270 - **vim-patch**: Mention original author #20772 - **vim.diff**: Allow passing an integer for linematch - **vim.fs**: Pass path to find() predicate, lazy evaluate #22378 - **vim.fs**: Improve normalize - **vim.gsplit**: Gain features of vim.split - **vim.version**: More coercion with strict=false - **web**: Syntax highlighting via highlight.js - **window/ui**: Add splitkeep option (#19243) - **windows**: Show icon in terminal titlebar, taskbar #20607 PERFORMANCE - **column**: Only build fold/sign column when present in 'statuscolumn' - **completion**: Use one call to globpath() for .vim and .lua #21942 - **diagnostic**: Use api variable and improve validate (#21111) - **lsp**: Update semantic tokens algorithm for parsing modifiers (#21383) - **lsp**: Only redraw the windows containing LSP tokens - **lsp**: Better binary search mid calculation in semantic token (#22607) - **statuscolumn**: Only fill click defs array once per redraw (#21884) - **statusline**: UI elements are always redrawn on K_EVENT - **treesitter**: Smarter languagetree invalidation - **treesitter**: More efficient foldexpr - **ui**: Mitigate redraw latency regression from TUI refactor BUG FIXES - Make_filter_cmd for :! powershell - :! pwsh redirection for `command not found` - Find multibyte file name in line (#20519) - Change did_emsg back to int - 'scroll' is not set correctly for floats with 'splitkeep' - Setting tabline option not redrawing tabline - Avoid unsigned overflow in home_replace() (#20854) - Add lfs to luarc.json (#20979) - Vim.ui.input always calls callback #21006 - Don't disable compositor widgets when a GUI with multigrid attaches - Pvs warnings (#21145) - Clang warnings (#21247) - Vim.opt_local:append ignoring global option value (#21382) - Issues with command line if ui elements are externalized - Properly close builtin popup in ext_popupmenu - Failing XDG test on Windows CI - Pass value instead of pointer to isalpha (#21898) - Use correct number for INT_MAX (#21951) - Add manifest file to correctly determine Windows version (#21953) - Uv_tty_set_mode failed in Windows #22264 - Lsp github issue template example (#22285) - Remove "Features" section from --version/:version (#22315) - Remove "Compiled by:" from :version/--version (#22316) - Add missing void as function argument (#22317) - Windows assertion failure due to incorrect path length (#22324) - Resolve error from -Werror=maybe-uninitialized - Address -Wmaybe-uninitialized warnings (#22436) - Pasting in terminal buffer on windows #22566 - Invalid buffer size argument to snprintf #22729 - Snprintf buffer overflow detected by -D_FORTIFY_SOURCE=3 (#22780) - **MSVC**: Set the active code page to utf-8 (#22384) - **Windows**: Restore console title at exit #21922 - **api**: Dynamically allocate line buffer for nvim_out_write (#20537) - **api**: Nvim_buf_get_text regression (#21071) - **api**: Nvim_win_set_cursor redraw cursorcolumn for non-current window (#21072) - **api**: Set correct curbuf when temporarily changing curwin (#21371) - **api**: "emsg_silent" should imply "silent" in nvim_cmd (#21438) - **api**: Nvim_create_autocmd crash on invalid types inside pattern array - **api**: Avoid memory leak with click functions in nvim_eval_statusline() (#21845) - **api**: Don't allow hiding aucmd_win from another tabpage (#21975) - **api**: Allow empty Lua table for nested dicts #22268 - **api**: Set script context when setting usercmd or option (#22624) - **api**: Vim.filetype.get_option() (#22753) - **api**: Make nvim_get_hl return 'cterm' attrs properly - **api**: Use local LastSet structure in nvim_get_option_info (#22741) - **api**: Return both link and attributes with nvim_get_hl (#22824) - **api**: Avoid double hit-enter prompt with nvim_err_writeln (#22879) - **autocmd**: Handle recursion for force set (#22820) - **buffer_updates**: Save and restore current window cursor (#16732) - **build**: "make clean" fails - **build**: Duplicate version string "v0.8.0-v0.8.0" #20578 - **build**: Fix invalid use of EXITFREE - **chansend**: Sending lines to terminal in reverse order on Windows #19315 - **ci**: Skip test on windows (#21502) - **ci/release/winget**: Bump action version - **client**: Wait for session to exit - **clint**: Disable whitespace/newline #20619 - **clipboard**: Prefer xsel #20918 - **clipboard**: Update version regex pattern (#21012) - **clipboard**: Show provider warning when not during batch changes #21451 - **column**: Avoid drawing columns for virt_lines_leftcol - **column**: Estimate 'statuscolumn' width appropriately - **column**: No longer reset nrwidth_line_count for 'statuscolumn' - **column**: Cmdwin cursor is offset with 'statuscolumn' (#22445) - **column**: Issues with 'statuscolumn' width (#22542) - **column**: Rebuild status column when sign column is invalidated (#22690) - **column**: Invalidate statuscolumn width when UPD_NOT_VALID (#22723) - **completion**: Set pum_size even if ext_popupmenu is used (#20648) - **completion**: Correct what modes support fuzzy completion - **completion**: Include lua syntaxes in :ownsyntax completion (#21941) - **coverity/433537**: Don't call kv_concat_len() when read_size is 0 (#21664) - **decoration**: Redraw correctly when re-using ids - **decoration**: Call providers in win_update() earlier - **decoration**: Do not reset must_redraw after calling providers (#21459) - **decoration**: Don't show signcolumn for non-sign_text extmark (#22135) - **diagnostic**: Correct type annotations; add Diagnostic type (#21120) - **diagnostic**: Clear stale cache on reset (#21454) - **diagnostic**: Sort diagnostics by column (#21457) - **diagnostic**: Revert notification on missing diagnostics (#21632) - **diagnostic**: Use correct field name for tags (#22835) - **diff**: Remove size_t underflow (#20929) - **diff**: Fix a crash in diff mode with linematch enabled (#21070) - **diff**: Handle long lines without crashing (#21389) - **diff**: Avoid restoring invalid 'foldcolumn' value (#21650) - **diff**: "nvim -d" should only diff arglist files #21829 - **diff**: Adjust extmarks after diffput/diffget (#22440) - **diff**: Add NULL check - **diff**: Trigger on_bytes only once after diffget/diffput - **diff.c**: Regression in diffgetput (#20843) - **docs**: Missing "(" in :help HTML - **docs**: Nil as viable argument for goto_prev (#20852) - **docs-html**: Keycodes, taglinks, column_heading #20498 - **docs-html**: Update parser - **docs-html**: Misaligned tabs after conceal #20690 - **edit**: Don't subtract msg_scrolled when removing double quote (#22630) - **editorconfig**: Do not highlight unknown properties as errors (#21673) - **embed**: Handle stdio in server properly - **eval**: Make error number of charidx() same as Vim - **eval**: Change some tv_dict_add() usages back to hash_add() - **events**: Save v:event for cmdline autocommands separately (#21316) - **events**: Skip WinScrolled for newly-created float windows (#21333) - **ex_cmds**: Fix a mistake in the porting of Vim patch 8.1.0306 (#21096) - **exit**: The TUI should not ui_flush() itself (#21625) - **exit**: Skip unnecessary steps in TUI preserve_exit() (#21897) - **extmarks**: Adjust extmarks when inserting prompt prefix - **extmarks**: Problems with folded virtual lines (#21930) - **extmarks**: Don't leak memory on error (#22507) - **fileio**: Use first available directory in backupdir for backupcopy (#20655) - **fileio.c**: Don't use uninitialized memory (#22031) - **filetype**: Don't pass empty string to detect (#20766) - **filetype**: Correctly detect tex files - **filetype**: Make vim.filetype.match() work with contents only (#22181) - **filetype**: Avoid recursive FileType autocmds (#22813) - **filetype**: Make recursive work...again (#22826) - **float**: Make closing float in another tab return to correct window - **float**: Fix ml_get error with bufpos - **float**: Fix crash with bufpos and non-existent window (#21319) - **float**: Remove -1 in height clamp - **folds**: Fix fold marker multibyte comparison (#20439) - **folds**: Use long for number of folded lines (#21447) - **folds**: Cursorline highlight is not always applied on closed folds (#22242) - **folds**: Handle visual blockwise indent insertion correctly (#22898) - **fs**: Duplicate path separator #21509 - **health**: Correct tmux rgb verification (#20868) - **health**: Fix `tmux_esc_time` comparison - **health**: Iterate using ipairs correctly (#22119) - **health**: Stop using deprecated ts.language.inspect_language() (#22850) - **help**: Force tree reparse after local addition insertion - **helpers**: Restore channel id after a call to WITH_SCRIPT_CONTEXT - **highlight**: Link more treesitter groups by default (#20711) - **highlight**: Properly deal with underline mask when listing (#22057) - **highlight**: Avoid ORing underline flags (#22372) - **highlight**: Use winhl=Foo:Bar even when Bar is empty - **inspect**: Alwasy resolve full treesitter lang hl groups - **intro**: Omit patch version in ":help news" item #20713 - **intro**: Make :help news line easier to translate (#21974) - **lintcommit**: Capitalized description #22282 - **loader**: Disable profiling by default - **lsp**: Reporting bogus capabilities in CodeActionKind #20678 - **lsp**: Ignore hover and signatureHelp responses on buffer change (#21121) - **lsp**: Render
{lang} code blocks and set separator default to false (#21271)
- **lsp**: Remove workspaceFolders field (#21284)
- **lsp**: Call show_document with correct args
- **lsp**: Ensure open_logfile is safe for fast events (#21288)
- **lsp**: Followup fixes for semantic tokens support (#21357)
- **lsp**: Correct some type annotations (#21365)
- **lsp**: Fix get_active_clients bufnr parameter (#21366)
- **lsp**: Ignore null responses for semanticTokens request (#21364)
- **lsp**: Token_edit.data might be null on deletion (#21462)
- **lsp**: Adjust gravity of semantic tokens extmarks (#21574)
- **lsp**: Fix nil client access in get_active_clients (#21524)
- **lsp**: Change vim.lsp.get_active_clients.filter name annotation to string (#21624)
- **lsp**: Correct callHierarchy capability to fix lsp.buf.incoming_calls() (#21665)
- **lsp**: Fix `removed` param value in add_workspace_folder (#21915)
- **lsp**: Assert workspace/applyEdit receives params (#21945)
- **lsp**: Check method is supported when range formatting (#21970)
- **lsp**: Check if the buffer is a directory before w! it (#22289)
- **lsp**: Wrong format of bufnr and client order in error message (#22336)
- **lsp**: Fix some type annotations (#22397)
- **lsp**: CallHierarchy methods also require the callHierarchyProvider (#22427)
- **lsp**: Use buffer scheme for files not stored on disk (#22407)
- **lsp**: Only fire LspDetach for attached buffers (#22468)
- **lsp**: Don't monitor files if workspace_folders is nil (#22531)
- **lsp**: Change LspTokenUpdate to use buffer instead of pattern (#22559)
- **lsp**: Prevent lsp tests from picking up local user config (#22606)
- **lsp**: Send didClose on buffer rename (#22623)
- **lsp**: Use line start/end for visual line selection (#22632)
- **lsp**: Remove_workspace_folders fails if client has no workspace_folders #22633
- **lsp**: Vim.lsp.util.apply_text_edits cursor validation #22636
- **lsp**: Kill buffers after renaming a directory #22618
- **lsp**: Avoid switching buffers on lsp attach (#22689)
- **lsp**: Jump to tag locations reliably when :ltag is used (#22750)
- **lsp**: Add missing silent check in lsp hover handler (#22763)
- **lsp/window_showDocument**: Correctly handle external resources #20867
- **lua**: Properly configure luacheck and remove `local vim = ...` lines (#20551)
- **lua**: Assert failure with vim.regex() error inside :silent! (#20555)
- **lua**: On_yank error with blockwise multibyte region #20162
- **lua**: Pesc, tbl_islist result types #20751
- **lua**: Make `vim.deepcopy` work with `vim.NIL`
- **lua**: Always return nil values in vim.tbl_get when no results
- **lua**: Mark some eval functions that can run in API-fast
- **lua**: Vim.deprecate() shows ":help deprecated" #22677
- **luado**: Get old_line length before executing Lua code
- **man**: Support MacOS 13
- **man**: Handle absolute paths as `:Man` targets (#20624)
- **man**: Use italics for `_` (#22086)
- **man.lua**: Set modifiable before writing page (#20914)
- **man.lua**: Use `env` command (#21007)
- **man.lua**: Open in current window if it's already a man page (#21987)
- **man.lua**: Tests, naming
- **mappings**: Use all buckets in second round of unmap (#21534)
- **mappings**: Fix check for cpo-B inverted in completion
- **mappings**: Make "<" escaping in completion match Vim
- **mark**: Do not restore view in op-pending mode (#20889)
- **memline**: Use long instead of linenr_T for db_line_count
- **memory**: Fix memory alignment for dynamic allocation
- **messages**: Reset msg_grid_scroll_discount when redrawing (#21000)
- **messages**: Don't set cmdline_row when messages have scrolled (#21015)
- **mouse**: Ensure no scrolling with "ver:0" in 'mousescroll' (#20861)
- **mouse**: Statusline click registered as statuscolumn (#21748)
- **options**: No matter what is said, 'cmdheight' is tab-local (susy baka)
- **options**: Fix local 'sidescrolloff' doesn't work for mouse (#21162)
- **options**: Restore exists() behavior for options (#21510)
- **paste**: Feed keys as typed in cmdline mode (#20959)
- **path**: Don't remove trailing slash when getting absolute path (#20853)
- **powershell**: Wrong length allocation for ":%w !" #20530
- **qflist**: Avoid read of uninitialized memory (#20709)
- **rbuffer**: Handle edge case where write_ptr has wrapped around
- **redraw**: Get the line again after evaluating something
- **remote**: Don't leak memory on failure to connect to server (#21931)
- **rpc**: Don't free args on error in rpc_send_event
- **rpc**: Don't parse msgpack if buflen is 0 (#21899)
- **rpc**: Ignore redraw events when not in UI client (#21892)
- **rpc**: Ignore redraw events when exiting (#22184)
- **runtime**: Properly rely on t_Co for colorschemes (#20602)
- **runtime**: Use `g:terminal_color_{0-15}` in colorschemes (#20637)
- **screen**: Correctly draw background and eob with 'rightleft' (#22640)
- **screen**: Redraw the ruler for a current floating window
- **secure**: Crash when hitting escape in prompt (#21283)
- **shell**: On Windows :make does not echo #22728
- **showcmd**: Assert failure with cmdheight=0 (#21536)
- **sleep**: Correct cursor placement (#22639)
- **spell**: Fix wrong cast (#20810)
- **spell**: Properly source spell/LANG.{vim,lua} (#22716)
- **startup**: Support .exrc or .nvimrc with init.lua (#21181)
- **status**: Handle unprintable chars in the statusline
- **statuscolumn**: Fix crashes and clang/PVS warnings (#21725)
- **statuscolumn**: Fix sign column highlights (#21727)
- **statuscolumn**: Foldcolumn buffer is too small (#21761)
- **statuscolumn**: Make %l/%r respect 'number'/'relativenumber' (#21747)
- **statuscolumn**: Always fill click defs array (#21878)
- **statusline**: Don't show showcmd when not enough space (#21550)
- **statusline**: Make nvim_eval_statusline() work with %S (#21553)
- **statusline**: Don't leak memory with zero-width click labels
- **statusline**: Don't leak memory with truncated click labels
- **stdpath**: Default to /tmp if stdpath('run') cannot be created #20952
- **syntax**: Correct conceal for annotated code blocks (#21272)
- **tabline**: Avoid memory leak in tabline click definitions (#21847)
- **terminal**: Fix 'mousescroll' not respected in terminal mode (#21415)
- **test**: Unset XDG_CONFIG_HOME when running oldtest
- **test**: Fix issues detected by running unittests in ASAN/UBSAN
- **test**: Fix C imports on macOS arm64
- **tests**: Only get the color map once, even for multiple test files
- **tests**: Initialize Screen.colors in API highlight tests
- **tests**: Use -l mode for lsp tests
- **tests**: Fixes for using vim.mpack and more ASAN
- **tests**: Adapt treesitter/highlight_spec priority test
- **treesitter**: Properly restore `'syntax'` (#21358)
- **treesitter**: Really restore syntax
- **treesitter**: Validate language name
- **treesitter**: Fix most diagnostics
- **treesitter**: Don't trample parsers when filetype!=lang
- **treesitter**: Make params optional
- **treesitter**: Fixup language invalidation (#22381)
- **treesitter**: Remove virtual text from playground
- **treesitter**: Ipairs -> pairs
- **treesitter**: Fixup for health
- **treesitter**: Maintain cursor position when toggling anonymous nodes
- **treesitter**: Disallow empty filetypes
- **treesitter**: Typos in _range.lua
- **treesitter**: Break early from loop when match is found (#22499)
- **treesitter**: Raise ts_match_limit to 256 (#22497)
- **treesitter**: Is_in_node_range (#22582)
- **treesitter**: Correct include_bytes arg for parse()
- **treesitter**: Do not error on empty filetype
- **treesitter**: Better lang handling of get_parser()
- **treesitter**: Foldexpr (#22652)
- **treesitter**: InspectTree does not respect 'splitright' #22692
- **treesitter**: Annotations
- **treesitter**: Add missing deprecate
- **treesitter**: Update queries from nvim-treesitter
- **treesitter**: Use capture metadata range if exists
- **treesitter**: Disable folding in inspect_tree() (#22885)
- **treesitter**: Do not track ranges of the root tree (#22912)
- **ts**: Check buffer is loaded when restoring options (#21419)
- **tui**: Resume main thread if suspending isn't implemented (#20523)
- **tui**: Set cursor color param as string when required #21407
- **tui**: More work in the TUI
- **tui**: Do not set ui_client_termname if it is already set (#21607)
- **tui**: Make a copy of data->params before unibi_format() (#21643)
- **tui**: Do not invoke loop recursively for pad()
- **tui**: Set stdin as "blocking" on exit (#21973)
- **tui**: Detach/attach on suspend/resume (#22040)
- **tui**: Exit on input eof
- **tui**: Set taskbar, icon in Windows #22270
- **tui**: Only forward stdin_fd on first attach (#22293)
- **tui**: Properly check if stdin is a tty (#22321)
- **tui**: Avoid stack-use-after-scope with cursor color (#22435)
- **tutor**: Failing to get buf name #20933
- **ui**: Msg_ext_set_kind for nvim_echo (#20476)
- **ui**: Setting 'cmdheight' with global statusline (#20515)
- **ui**: Send grid_resize events before triggering VimResized (#20760)
- **ui**: Fix some cases of stale highlight definitions
- **ui**: Allow resize commands to set 'cmdheight' to 0
- **ui**: Fix fragile UI_CALL macro invocation (#21656)
- **ui**: Convert title_pos string in nvim_win_get_config
- **ui**: Set stc to empty in floatwin with minimal style (#21720)
- **ui**: Command line issues with external messages (#21709)
- **ui**: Re-organize tty fd handling and fix issues
- **ui**: Make sure screen is valid after resizing
- **ui**: Recording change doesn't trigger statusline redraw
- **ui**: Ruler is not redrawn in cmdline with redrawstatus
- **ui-ext**: Correct message kind in history before vim.ui_attach()
- **ui-ext**: Log and clear error in ui_comp_event (#21147)
- **ui-ext**: Force cursor update after resize in char-based UI
- **unittest**: Delete unused duplicated code
- **unittests**: Do not consider process crash to be a success
- **unittests**: Fix TUI broken test previously ignored
- **vim-patches**: Ensure libfuse is installed
- **vim.diff**: Correctly apply hunk offsets with linematch (#20931)
- **vim.diff**: Fix fastforward off-by-1 (#20937)
- **vim.ui.input**: Return empty string when inputs nothing (#20883)
- **vim.version**: Incorrect version.cmp()
- **vim.version**: Prerelease compare
- **win_close**: Remove float grid after closing buffer (#21551)
- **win_update**: Don't use unintialized memory in edge case (#22266)
- **windows**: Set console icon later in startup
- **windows**: Consistent normalization in fs.find

BUILD SYSTEM!
- Remove unused variable CMAKE_C_COMPILER_ARG1
- Remove code for cross-compilation
- Remove url for 32-bit winyank
- Remove unnecessary translation-related code
- Rely on builtin cmake downloading rather than custom script
- Define EP_PREFIX property
- Only generate compilation database for the nvim target (#20449)
- Remove EXITFREE for debug builds
- Generate compilation database for older cmake versions
- Add clang-tidy configuration file (#15601)
- Fix incorrect clang-tidy identifier rules (#20650)
- Rely on default cmake installation if possible
- Give example on complex regexes
- Preprocess vim patches with uncrustify #20786
- Copy each treesitter parser library individually #20797
- Fix plural messages missing from .po files (#20830)
- Make update-po support optwin.vim (#20840)
- Remove python linting #20851
- Add EXCLUDE option to add_glob_target
- Always ignore user's cmake preset (#20935)
- Allow IWYU to fix includes for all .c files
- Restrict `git describe` to top level source directory (#20993)
- Fix help tags generation when SHELL=fish (#21562)
- Add git sha to version when built with nix flake (#21210)
- Remove workaround for old luajit versions
- Remove workaround for ancient clang versions
- Use modern cmake (#21589)
- Include our libraries before system libraries (#21746)
- Enable iwyu with target properties instead of variables (#21797)
- Exclude tui/terminfo_defs.h from lintc-clint (#21822)
- Enable cmake workflow presets (#21860)
- Remove nvim as a dependency of unittests (#21903)
- Various cmake fixes (#21902)
- Bump MSVC warning to level two (#21890)
- Use CMAKE_POSITION_INDEPENDENT_CODE instead of -fPIC (#21947)
- Make generated source files reproducible #21586
- Remove unnecessary unit test code (#21940)
- Use cmake for all platforms for unibilium and libtermkey (#21926)
- Simplify treesitter installation (#21969)
- Use upstream CMakeLists.txt for unibilium (#21976)
- Delete pthreads import (#21732)
- Remove GNU make check (#21977)
- Remove tests for libtermkey (#21983)
- Use cmake to build treesitter on all platforms (#21984)
- Introduce default build variables (#21991)
- Use cmake to build libvterm on all platform (#21986)
- Check if libvterm version meets requirement (#22010)
- Find unibilium without relying on libfindmacros (#22015)
- Fix dependencies in find modules (#22017)
- Enable ccache by default if available (#22020)
- Enable ccache project-wide (#22045)
- Add uninstall make target (#22059)
- Remove unnecessary file generation (#22099)
- Update release data
- Stop relying on CMAKE_BUILD_TYPE to determine the build type (#22051)
- Unbreak building neovim with multi-config generators (#22104)
- Don't build libnvim when running the CI (#22149)
- Remove duplicate INTERFACE keyword (#22106)
- Prefer -D = over -D= (#22164)
- Replace check-single-includes with clang-tidy (#22061)
- Remove unused function get_test_target (#22176)
- Reuse source files with interface library (#22177)
- Create test/CMakeLists.txt and move test-related code (#22179)
- Remove codecov related files (#20859)
- Mark uninteresting variables as advanced (#22208)
- Enable MSVC level 3 warnings (#21934)
- Don't check environment variable to detect CI (#22234)
- Treat clang-tidy warnings as errors (#22238)
- Remove ENABLE_COMPILER_SUGGESTIONS option (#22249)
- Only use HOSTNAME_PRG if HOSTNAME is undefined (#22288)
- Use custom command to create single versiondef (#22290)
- Use libuv config file (#22209)
- Test multi-config generator (#22310)
- Build all dependencies in parallel (#22329)
- Remove unused dependency penlight (#22334)
- Build luajit in parallel (#22327)
- Set libtermkey project language to C (#22410)
- Remove pkgconfig-related code (#22422)
- Remove libfindmacros library (#22423)
- Cmake cleanup (#22251)
- Unset variables ending with "URL" if USE_EXISTING_SRC_DIR is ON
- Show build type specific compiler flags when using --version
- Fix unknown pragma warning with mingw (#22533)
- Consistently use the provided option paths
- Fix USE_EXISTING_SRC_DIR option
- Silence git describe error output
- Remove workaround for incorrectly packaged libluv
- Enable unit testing on release builds (#22554)
- Fix build warning when using gcc 4.9.2
- Explicitly add dependency include dir for header generation
- Sanitizers for gcc
- Set CMAKE_C_STANDARD to 99 for all dependencies
- Drop curl.exe on Windows
- Download wintools executables separately
- Cmake cleanup
- **MSVC**: Enable assertions on RelWithDebInfo build type (#22326)
- **Windows**: Fix redoing version generation (#21880)
- **Windows**: Make bundling nvim-qt optional (#21866)
- **Windows**: Allow building without custom md5sum
- **bump_deps.lua**: Run command -v in shell (#22030)
- **ci**: Let ASAN print tracebacks for more errors (SIGABORT, SIGILL)
- **cmake**: Add modelines to enable syntax highlighting
- **deps**: Restore support for USE_EXISTING_SRC_DIR (#20491)
- **deps**: Add build type for libuv (#20575)
- **deps**: Disable shared library for libvterm. (#20566)
- **deps**: Bump tree-sitter to v0.20.8 (#22663)
- **deps**: Bump luarocks to v3.9.2
- **deps**: Bump coxpcall to 1.17.0-1
- **deps**: Bump luacheck to 1.1.0-1
- **deps**: Bump mpack to 1.0.10
- **deps**: Bump lua parser to v0.0.14 (#20897)
- **deps**: Switch vim parser to maintained fork (#22896)
- **deps**: Bump vimdoc parser to v2.0.0 (#22870)
- **deps**: Set query parser to release (#22603)
- **deps**: Bump libvterm to v0.3.1
- **deps**: Bump msgpack-c to v6.0.0 (#22522)
- **deps**: Bump win32yank to v0.1.1 (#22700)
- **deps**: Bump actions/stale from 7 to 8
- **deps**: Switch to Launchpad for libvterm and libtermkey (#22811)
- **editorconfig**: Set indent_size to 4 for python files (#21135)
- **lint**: Remove clint.py rules for braces #20880
- **lint**: Add more shell scripts to lintsh
- **lintsh**: Double quote to prevent word splitting (#21571)
- **luarocks**: Update busted version to v2.1.1 (#22029)
- **nix**: Change the pkgs to final, add new version of libvterm (#20410)
- **nix**: Update nixpkgs
- **nix**: Clean up nix flake (#21565)
- **nix**: Remove pylint as it has been removed (#21572)
- **nix**: Fixed build (#22918)
- **vim-patch.sh**: Handle added/removed files properly
- **vim-patch.sh**: Checkout files with path for uncrustify (#20863)
- **windows**: Export extern symbols for use in FFI #22756
- **windows**: Specify Windows 8 as the minimum version (#22173)
- **windows**: Work around luarocks not finding its own md5sum

DOCUMENTATION
- Refer to vim.lsp.start() in LSP issue template #20422
- Fix incorrect :help tag (#20511)
- Added proper annotations to functions in shared.lua
- Fix typos
- Fix/remove invalid URLs #20647
- "supported platforms" matrix #19615
- Update vimdoc parser #20747
- ":che" is ":checkhealth" #20147
- .git-blame-ignore-revs (#20820)
- Swap CursorLineFold and CursorLineSign (#20875)
- Add language annotation to Nvim manual
- Add missing docs from some Vim patches (#21296)
- Dark/light color/accessibilty pass for generated html docs #21345
- Add links to extmarks and namespaces (#21378)
- Remove "How-to disable mouse" menu item #21394
- Add security policy (#17338)
- Fix order of numbers in syntax.txt (#21581)
- Clarify line about converse of lua-heredoc (#21592)
- Fix treesitter parsing errors
- Add 'statuscolumn' docstrings (#21717)
- Builtin TUI is no longer channel 0 (#21794)
- Treesitter.add_directive, add_predicate #21206
- Docs: use codeblocks in runtime/doc/options.txt (#21919)
- Clarify :runtime behavior without [where] again (#22003)
- Clarify "pipe" mode for sockconnect
- Reword news.txt to ensure a consistent style (#22215)
- Remove mentions of 'balloonexpr' #22049
- Remove the test badge from the README (#22350)
- Mention getmousepos() for click execute function label
- Naming conventions, guidelines
- Fix more treesitter parsing errors
- Use build/bin/nvim instead of nvim in gen_vimdoc (#22398)
- Fix vim.treesitter tags
- Lua2dox.lua debugging
- Module-level docstrings (@defgroup) #22498
- Add missing highlight groups for floats
- Add removed features in news.txt
- Fix g:terminal_color_x terminal colors #22746
- More details about vim.region (#21116)
- How to debug TUI using gdb/lldb #22771
- Add vim.treesitter.query.get_query() to deprecated.txt
- **README**: Add Kotlin as a language which can use the API (#21567)
- **README**: Fix CI status badge (#22308)
- **api**: Pattern is not expanded for autocommands (#20812)
- **api**: Fix treesitter parsing errors
- **api**: Tweak data arg for nvim_create_autocmd (#22008)
- **api**: Link to nvim_set_hl_ns from nvim_set_hl (#22678)
- **dev-style**: Remove rule about variable declarations (#20446)
- **dev-style**: Remove rules covered by uncrustify
- **diagnostic**: Number → integer (#22512)
- **docstrings**: Fix runtime type annotations
- **editorconfig**: Update news.txt
- **editorconfig**: Add editorconfig.txt
- **editorconfig**: Number → integer (#22514)
- **filetype**: Number → integer (#22516)
- **gen**: Support language annotation in docstrings
- **gitignore**: Correct oldtest path
- **help**: Consistent headers for local additions
- **highlight**: Fix type annotations (#22272)
- **html**: Render @see items as a list #22675
- **inspect**: Number → integer (#22511)
- **lsp**: Add formatting APIs to deprecated.txt (#20487)
- **lsp**: Update buf_notify and rpc.notify params types (#21753)
- **lsp**: Fix type annotation on convert_input_to_markdown_lines (#21772)
- **lsp**: Format arguments to start_client() (#21980)
- **lsp**: Update cmd_env description (#22438)
- **lsp**: Change type annotations from number → integer (#22510)
- **lsp**: Type annotation for lsp.client (#22509)
- **lsp**: More precise type annotations (#22621)
- **lsp**: Opt-out of default LSP "gq" #22615
- **lua**: Add clarifications for fs.find() and fs.normalize() (#21132)
- **lua**: Correct the tags for vim.opt_local and vim.opt_global (#21138)
- **lua**: Correct vim.spell.check example (#21311)
- **lua**: Add guide to using Lua in Neovim (#21137)
- **lua**: Add `vim.json` (#21538)
- **lua**: Fix treesitter parsing errors
- **lua**: Adjust some type annotations
- **lua**: Lua-guide:  is for rhs of vim.keymap.set(), not lhs (#21814)
- **lua**: Use luaref tag instead of www.lua.org #21813
- **lua**: Number → integer (#22517)
- **luvref**: Fix treesitter parsing errors
- **luvref**: Update to version bump
- **maintain**: CI strategy #20778
- **maintain**: Add note on updating luvref.txt
- **manual**: Fix treesitter parsing errors
- **news**: Add news.txt and link from README (#20426)
- **options**: Remove mentions of 'imactivatefunc' and 'imstatusfunc'
- **shell**: Mention "&" for piping with powershell #20459
- **support**: Update tested versions (#21126)
- **test**: Using cmake directly (without make) #22781
- **treesitter**: Fix predicate syntax (#21016)
- **treesitter**: Change links for `eq?` and `set!` to codeblocks  (#21047)
- **treesitter**: Use full function names in tags (#21321)
- **treesitter**: Fix parse errors
- **treesitter**: Number → integer (#22513)
- **treesitter**: Add query injections
- **tutor**: Fix TODO line demo (#21965)
- **uri**: Number → integer (#22515)
- **usr**: Make usr_05.txt more coherent with Nvim changes (#22428)
- **usr_05**: Update sentence about Nvim default behavior of Q (#20817)
- **vim.fs**: Normalize Windows example was incorrect (#21966)
- **website**: Soft wrap code blocks #21644

REFACTOR
- Remove char_u type and replace with char, uint8_t, etc
- remove STRNCMP (#21208) and STRLCPY (#21235)
- Remove clint error suppression as all errors has been fixed #21782
- Explicitly convert HANDLE to intptr_t for _open_osfhandle()
- Clang-tidy fixes to silence clangd warning (#20683)
- Fix uncrustify lint errors
- Move do_mouse() and its helpers to mouse.c (#20895)
- Fix clang-tidy warnings
- Click definition functions #20923
- Remove stray emsg check after #20992 (#20996)
- Move tabline code to statusline.c (#21008)
- Convert drawline.c draw states to enum (#21067)
- Remove __STDC_ISO_10646__ check
- Deprecate 'secure' option
- Remove old TODO comments that aren't relevant anymore (#21144)
- Maybe suppress a PVS warning
- Rework parameter validation in vim.secure.trust() (#21223)
- Buffer_ensure_loaded()
- Move ex_retab() to indent.c
- Remove COMMA (#21260)
- Make sure getting a callback doesn't modify argument
- Rename mch_msg => os_msg
- Rename mch_get_acl => os_get_acl
- Eliminate os_unix.c #21621
- Extract code to open stdin for reading
- Eliminate bump-deps.sh using "nvim -l"
- Fix IWYU mapping file and use IWYU (#21802)
- Format with stylua (#21821)
- Remove E5500, adjust tests
- Fix sign conversion warning from gcc (#21833)
- Use uint8_t for blobs and ga_append() (#21916)
- Use flexible arrays instead of the length-of-one trick (#22072)
- Reduce scope of locals as per the style guide (#22206)
- Move init_default_autocmds to lua
- Rename show_tree => inspect_tree #22474
- Move ga_loaded to runtime.c (#22626)
- Do more in TRY_WRAP
- Add const and remove unnecessary casts (#22841)
- Use bool type for global variables (#22842)
- Rename local API alias from a to api
- Make error message definitions const
- Remove use of reserved c++ keywords
- **PVS**: Suppress false positive V547 in drawline.c (#21875)
- **PVS/V1048**: Remove unnecessary assignment (#21870)
- **PVS/V1048**: Remove redundant assignment (#21871)
- **PVS/V1048**: Remove duplicated assignments (#21873)
- **PVS/V581**: Merge identical if statements (#22390)
- **api**: Do not allocate temporaries for internal events
- **api**: VALIDATE macros #22187 #22256 #22262
- **build**: Remove unused stdlib function and include checks
- **build**: Graduate HAVE_LOCALE_H feature
- **build**: Graduate libtreesitter features which are 1+ years old
- **build**: Graduate msgpack-c FLOAT32 "feature" since forever
- **build**: Graduate unibilium VAR_FROM feature from 2017
- **build**: Graduate -Wvla, -fno-common and -Og "features"
- **build**: Make installation of runtime/ more effective
- **checkhealth**: Convert "nvim" check to Lua
- **clint**: Convert short to int16_t (#20815)
- **column**: Remove unused build_statuscol_str() arguments
- **completion**: Don't add and remove '^' for Lua (#22702)
- **diagnostic**: Remove deprecated function (#20423)
- **diagnostic**: DRY for loop #21521
- **diff.c**: Reduce scope of variables (#20781)
- **diff.c**: Break up ex_diffgetput()
- **diff.c**: Allocate hunks directly in ga_array
- **diff.c**: Factor out hunk extraction
- **diff.c**: Factor out hunk processing
- **diff.c**: Simplify diff_buf_idx()
- **diff.c**: Internal does not need diffstyle
- **diff.c**: Factor out diffblock deletion
- **diff.c**: Copy lines via memmove
- **drawline.c**: Leadcol/trailcol
- **drawline.c**: Move number column helpers function together
- **drawscreen.c**: Reduce scopes of locals (#20668)
- **eval**: Make get_lval() explicitly check for v:lua
- **eval.c**: Factor out get_number_tv() (#21893)
- **exit**: Pass error message to preserve_exit() (#22097)
- **extmarks**: Some minor internal API changes
- **f_has**: Remove wrong comment (#21561)
- **fileio.c**: Reduce scope of locals
- **fileio.c**: Refactor match_file_path()
- **fileio.c**: Refactor vim_rename()
- **fileio.c**: Refactor buf_write_bytes
- **fileio.c**: Refactor buf_write_bytes (2)
- **fileio.c**: Remove HAS_BW_FLAGS
- **fileio.c**: Factor out autocmd handling from buf_write()
- **fileio.c**: More bools
- **fileio.c**: Reduce scope of locals
- **fileio.c**: Do not use macros for error handling
- **fileio.c**: Factor out buf_write post autocmds
- **fileio.c**: Factor out file info calc
- **fileio.c**: Make unreadable expression readable
- **fileio.c**: Factor out backup creation
- **fileio.c**: Remove HAVE_ACL ifdefs
- **fileio.c**: Normalize ifdefs
- **fs**: Replace vim.fn/vim.env in vim.fs (#20379)
- **highlight**: Rename FloatBorderTitle #20988
- **highlight**: Reshape the HL_UNDER* bits into a 3-bit integer mask
- **highlight_group.c**: Reduce scope of locals
- **intro**: Avoid Coverity warning (#22000)
- **loader**: Use vim.fs
- **loader**: Remove BufWritePost autocmd
- **loader**: Add typing for package.loaders
- **loader**: Simplify tracking logic
- **loader**: Cache hash information
- **log**: Reduce compile time LOG_LEVEL granularity
- **lsp**: Remove deprecated lsp functions (#20421)
- **lsp**: Extract a _create_server method in lsp_spec
- **lsp**: Remove deprecated vim.lsp.buf_get_clients calls (#21337)
- **lsp**: Remove workaround for missing bit module (#22373)
- **lsp**: Remove deprecated code (#22389)
- **lsp**: Remove _resolve_capabilities_compat (#22628)
- **lsp**: Do not parse verbose output when overwriting options (#22810)
- **lua**: Move _G.arg init to nlua_init()
- **lua**: Get all marks instead of iterating over namespaces
- **lua2dox**: Format with stylua
- **main.c**: Remove unreachable use_builtin_ui conditions (#22338)
- **man**: Pass env directly to spawn() (#20591)
- **man**: Add type annotations
- **memory**: Simplify new alignment logic
- **option.c**: Reduce scope of locals
- **option.c**: Add get_varp_from and get_varp_scope_from
- **option.c**: De-nest set_option_value
- **option.c**: Use intermediate for options ref
- **option.c**: Add do_set_num
- **option.c**: Add do_set_bool
- **option.c**: Simplify do_set_string
- **option.c**: Factor out common skip check
- **option.c**: Factor out loop code from do_set()
- **option.c**: Remove goto
- **option.c**: Change nextchar to uint8_t
- **option.c**: Use skiptowhite_esc
- **option.c**: Factor out set op parsing
- **option.c**: Factor out option prefix parsing
- **option.c**: Factor out option name parsing
- **option.c**: Factor out opt_idx validation
- **option.c**: De-nest code in do_set_option
- **option.c**: Move bool prefix check
- **option.c**: Add do_set_option_value
- **option.c**: Factor out some nextchar checks
- **option.c**: Factor out string option special case handling
- **options**: Don't pass negative number to illegal_char() (#21999)
- **optionstr.c**: Reduce scope of locals
- **optionstr.c**: Break up did_set_string_option 1-52
- **optionstr.c**: Remove some simple did_set_* functions
- **optionstr.c**: Add did_set_string_option_for
- **optionstr.c**: Break up did_option_listflags
- **optionstr.c**: Remove some redundant parens
- **optionstr.c**: Break up did_set_expropt
- **optionstr.c**: Move handling of formatlistpat
- **optionstr.c**: Align comments (#22070)
- **params**: Open -s and -w script files after parsing commands
- **pty**: Remove old logic for inheriting termios from host terminal
- **redraw**: No type argument in update_screen()
- **redraw**: Various simplifications
- **redraw**: Make cursor position redraw use the "redraw later" pattern
- **runtime**: Use vim.version to compare versions #22550
- **runtime.c**: Factor out find_script_by_name() (#22620)
- **screen**: Screen.c delenda est
- **sleep**: Simplify rube goldberg implementation of :sleep
- **spell**: Use uint8_t for "byts" variables (#22519)
- **statusline**: Move statusline defs to statusline_defs.h
- **tag**: Remove return type from do_tag()
- **test**: Create an lsp-specific helpers.lua file
- **tests**: Lift retry() into assert_log()
- **tests**: Run unittests using main nvim binary in interpreter mode
- **tests**: Move lua-client into core and use it for functionaltests
- **treesitter**: Add vim.treesitter.get_node() (#22360)
- **treesitter**: Use string.format to create lines
- **treesitter**: Simplify some range functions
- **treesitter**: Delegate region calculation to treesitter (#22553)
- **treesitter**: Use byte ranges from treesitter (#22589)
- **treesitter**: Add Range type aliase for Range4|Range6
- **treesitter**: Delegate region calculation to treesitter (#22576)
- **treesitter**: Move inspect_tree impl
- **tui**: Use nvim_echo() for verbose terminfo
- **tui/input.c**: Remove unused multithreading code (#22342)
- **ui**: Statusbar invalidation to win_set_inner_size()
- **ui**: Devirtualize the ui layer
- **ui**: Cleanup 'redrawdebug', introduce "flush" mode
- **ui**: Don't reimplement redrawing in focus gained handling
- **ui**: Remove some superfluous ui_flush() calls
- **ui**: Ui_log() can now just be a function
- **uncrustify**: Move macros definitions to enable formatting
- **uncrustify**: Improved formatting rules
- **vim.gsplit**: Remove "keepsep"
- **vim.version**: Cleanup
- **vim.version**: Use lazy.nvim semver module
- **vim.version**: Use lazy.nvim semver module
- **win_close**: Remove "force", don't pass on "free_buf" (#21921)
- **win_line**: Rename attr to vi_attr (#21487)
- **win_line**: Move some variables into a struct (#22490)
- **window**: Remove aucmd_win check from one_window() (#21972)
- **window.c**: Reduce scope of locals (#20301)
- **windows**: Move os_icon_xx functions

TESTING
- Introduce skip() #21010
- Remove skip for 32-bit MSVC (#21030)
- Don't skip parser_spec on windows (#20294)
- Add a Lua test for swap file created before boot
- Fix failing tui_spec.lua tests (#21117)
- Use isCI to simplify CI detection (#21134)
- Simplify platform detection (#21020)
- Adding/removing winbar should not cause win_pos events (#21226)
- Use luv.os_uname for fast platform detection (#21157)
- Add more tests for float window bufpos (#21318)
- Convert another test in test_matchadd_conceal.vim to Lua (#21353)
- Remove unused variable (#21552)
- Add test cases for command line issues
- Add more tests for Unicode
- Avoid consecutive mouse input at different positions (#21781)
- Align Test_shell_options, Test_shellslash with Nvim default
- Avoid noise in NVIM_LOG_FILE
- Exepath() returns correct path with cmd.exe, powershell #21928
- Remove unused field ext_float (#22243)
- Make expect_unchanged() less confusing (#22255)
- Make {MATCH:} behave less unexpectedly in screen:expect()
- Don't search entire repo for files
- Move oldtests to test directory (#22536)
- Use a wider screen in the rightleft winhl test (#22641)
- Unskip working Windows tests (#22537)
- Re-bundle cat on windows (#21255)
- Windows not detected in msys shells #22671
- Use exec_capture() in more places (#22787)
- Fix flaky watchfiles tests (#22637)
- Replace lfs with luv and vim.fs
- Improve editor/fold_spec.lua and editor/put_spec.lua (#22916)
- **Windows**: Normalize paths for test summary
- **api**: Migrate screenchar() test in in window API to screen test
- **editorconfig**: Add editorconfig tests
- **exit_spec**: Make sure that autocommands are triggered (#22188)
- **fileio_spec**: Avoid expect_exit() without calling clear() (#21810)
- **float_spec**: Add missing sum_scroll_delta #22648
- **help**: Drop treesitter parse error to 0
- **highlight_spec**: Fix warning in Visual highlight test (#22719)
- **legacy/prompt_buffer_spec**: Align script with oldtest more (#22354)
- **lsp**: Call clear() before willSave tests (#21336)
- **lsp**: Add a screen:expect() between insert() and feed_command() (#21577)
- **lua/diagnostic_spec**: Remove unnecessary after_each()
- **lua/fs_spec**: Fix vim.fs.dir() test (#21503)
- **lua/ui_spec**: Fix Ctrl-C test flakiness (#21039)
- **old**: Test_lambda.vim garbagecollect() -> test_garbagecollect_now()
- **old**: Remove stray test42 files (#20966)
- **old**: Make Test_help_tagjump() test order match upstream
- **old**: Add missing lines from Vim patch 8.2.0522 (#21048)
- **old**: Make ":h local-additions" work properly in test_help.vim
- **old**: Skip Vim9 script with less divergence
- **old**: Change $TMPDIR from Xtest-tmpdir to X-test-tmpdir (#21346)
- **old**: Make test_signs.vim closer to upstream (#21479)
- **old**: Run some part of 'cpoptions' tests
- **old**: Make getting an unused PID work (#22529)
- **old**: Move memfile_test.c to test/old/ (#22567)
- **old**: Unskip working tests on Windows (#22650)
- **shada**: Fix shada syntax definitions test
- **statuscolumn**: Add more tests for wrapped lines (#21718)
- **statuscolumn**: %l should follow default wrap behavior (#21766)
- **statuscolumn_spec**: Remove unnecessary feed('lh')
- **statusline**: UI elements are not redrawn on K_EVENT unnecessarily
- **syn_attr_spec**: Add more information (#21912)
- **termxx_spec**: Fix TermClose bdelete test flakiness (#22463)
- **treesitter/parser_spec**: Correct time unit (#22471)
- **tui_spec**: Don't use nested terminal for resize at startup (#21583)
- **tui_spec**: Avoid race between nvim_paste and nvim_input (#21639)
- **tui_spec**: Improve cursor_address test (#21700)
- **tui_spec**: Doesn't use Unicode in cursor_address test (#21703)
- **tui_spec**: Make rapid resize test test what it wants to test (#21933)
- **tui_spec**: Don't expect exact screen in rapid resize test (#21935)
- **tui_spec**: Remove unnecessary arguments for remote UI
- **tui_spec**: Use RPC request to setup autocommands
- **ui**: Wait for another success with failure after success
- **undo_spec**: Add more tests for writing in Insert mode
- **unit**: Use file:close() properly (#21505)
- **vim.fs.normalize**: Enable test on Windows
---
 CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 262af9ab55..24ef1e9a91 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,12 +107,12 @@ set_default_buildtype()
 set(NVIM_VERSION_MAJOR 0)
 set(NVIM_VERSION_MINOR 9)
 set(NVIM_VERSION_PATCH 0)
-set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
+set(NVIM_VERSION_PRERELEASE "") # for package maintainers
 
 # API level
 set(NVIM_API_LEVEL 11)         # Bump this after any API change.
 set(NVIM_API_LEVEL_COMPAT 0)  # Adjust this after a _breaking_ API change.
-set(NVIM_API_PRERELEASE true)
+set(NVIM_API_PRERELEASE false)
 
 # Default to -O2 on release builds.
 if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
-- 
cgit 


From 1b57a02969870de8503f34f7014df69ae53a7f0d Mon Sep 17 00:00:00 2001
From: bfredl 
Date: Fri, 7 Apr 2023 13:35:22 +0200
Subject: version bump

---
 CMakeLists.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24ef1e9a91..bfc8a2283f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,12 +105,12 @@ set_default_buildtype()
 # 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)
-set(NVIM_VERSION_MINOR 9)
+set(NVIM_VERSION_MINOR 10)
 set(NVIM_VERSION_PATCH 0)
-set(NVIM_VERSION_PRERELEASE "") # for package maintainers
+set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
 
 # API level
-set(NVIM_API_LEVEL 11)         # Bump this after any API change.
+set(NVIM_API_LEVEL 11)        # Bump this after any API change.
 set(NVIM_API_LEVEL_COMPAT 0)  # Adjust this after a _breaking_ API change.
 set(NVIM_API_PRERELEASE false)
 
-- 
cgit 


From f4136c9d42f79c0f2fe3ce6fdc22b1544593692a Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Tue, 11 Apr 2023 21:25:23 +0200
Subject: build: use -O3 optimization for release builds

Compilers have much more reliable -O3 output these days, so this
workaround is likely not needed.

Closes https://github.com/neovim/neovim/issues/23008.
---
 CMakeLists.txt | 7 -------
 1 file changed, 7 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index bfc8a2283f..dad3815373 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -114,14 +114,7 @@ set(NVIM_API_LEVEL 11)        # Bump this after any API change.
 set(NVIM_API_LEVEL_COMPAT 0)  # Adjust this after a _breaking_ API change.
 set(NVIM_API_PRERELEASE false)
 
-# Default to -O2 on release builds.
-if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
-  message(STATUS "Replacing -O3 in CMAKE_C_FLAGS_RELEASE with -O2")
-  string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
-endif()
-
 # 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")
-- 
cgit 


From c2e47e7bec0394a2cc12c8f83e3e5950ad99d1b4 Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Fri, 14 Apr 2023 19:19:49 +0200
Subject: build: don't print installed files locally

It takes a significant amount of time to install neovim, and doubly so
on Windows, due to the sheer amount of files neovim ships with. On CI
this information may be important though, so we enable it if the
CI_ENABLE option is set to ON.
---
 CMakeLists.txt | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index dad3815373..f3111464ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,6 +35,10 @@ if(CCACHE_PRG)
   set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env CCACHE_SLOPPINESS=pch_defines,time_macros ${CCACHE_PRG})
 endif()
 
+if(NOT CI_BUILD)
+  set(CMAKE_INSTALL_MESSAGE NEVER)
+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")
-- 
cgit 


From 1e60e8c0406f6b4b51c51abb5f53e25bd52fee5e Mon Sep 17 00:00:00 2001
From: bfredl 
Date: Sat, 15 Apr 2023 12:23:45 +0200
Subject: refactor(build): use vendored versions of mpack and luabitop

---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3111464ea..8ef99e7307 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -160,7 +160,7 @@ foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
 endforeach()
 
-set(LUA_DEPENDENCIES lpeg mpack bit)
+set(LUA_DEPENDENCIES lpeg)
 if(NOT LUA_PRG)
   foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua)
     unset(_CHECK_LUA_PRG CACHE)
-- 
cgit 


From 732cb9e1e0a90f40d9189bffe009bbb7f8456eeb Mon Sep 17 00:00:00 2001
From: Lewis Russell 
Date: Sat, 22 Apr 2023 14:10:35 +0100
Subject: ci(lintcommit): use nvim -l

---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8ef99e7307..e31c02b640 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -259,7 +259,7 @@ add_glob_target(
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintcommit
-  COMMAND ${PROJECT_BINARY_DIR}/bin/nvim -u NONE -es -c [[lua require('scripts.lintcommit').main({trace=false})]]
+  COMMAND ${PROJECT_BINARY_DIR}/bin/nvim -u NONE -l scripts/lintcommit.lua  main --notrace
   WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
   VERBATIM)
 add_dependencies(lintcommit nvim)
-- 
cgit 


From ccce200cde296aa65a720e028a5eacf715f29e4f Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sat, 22 Apr 2023 17:37:45 +0200
Subject: ci(lintcommit): fix error output

Using print() alone doesn't work properly, toggling the verbose option
is still required.
---
 CMakeLists.txt | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e31c02b640..371112ad73 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -259,9 +259,7 @@ add_glob_target(
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintcommit
-  COMMAND ${PROJECT_BINARY_DIR}/bin/nvim -u NONE -l scripts/lintcommit.lua  main --notrace
-  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-  VERBATIM)
+  COMMAND $ -u NONE -l ${PROJECT_SOURCE_DIR}/scripts/lintcommit.lua main)
 add_dependencies(lintcommit nvim)
 
 add_custom_target(lint)
-- 
cgit 


From 45bcf8386918bbb475fbe20c48b508aa89ed0624 Mon Sep 17 00:00:00 2001
From: bfredl 
Date: Thu, 20 Apr 2023 13:19:38 +0200
Subject: refactor(build): include lpeg as a library

---
 CMakeLists.txt | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 371112ad73..dad8f4b745 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -160,27 +160,20 @@ foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
 endforeach()
 
-set(LUA_DEPENDENCIES lpeg)
 if(NOT LUA_PRG)
   foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua)
     unset(_CHECK_LUA_PRG CACHE)
-    unset(LUA_PRG_WORKS)
     find_program(_CHECK_LUA_PRG ${CURRENT_LUA_PRG})
 
     if(_CHECK_LUA_PRG)
-      check_lua_deps(${_CHECK_LUA_PRG} "${LUA_DEPENDENCIES}" LUA_PRG_WORKS)
-      if(LUA_PRG_WORKS)
-        set(LUA_PRG "${_CHECK_LUA_PRG}" CACHE FILEPATH "Path to a program.")
-        break()
-      endif()
+      set(LUA_PRG "${_CHECK_LUA_PRG}" CACHE FILEPATH "Path to a program.")
+      break()
     endif()
   endforeach()
   unset(_CHECK_LUA_PRG CACHE)
-else()
-  check_lua_deps(${LUA_PRG} "${LUA_DEPENDENCIES}" LUA_PRG_WORKS)
 endif()
 
-if(NOT LUA_PRG_WORKS)
+if(NOT LUA_PRG)
   message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter")
 endif()
 
-- 
cgit 


From 057af3203b58771f07eb9c809573dd9275a597cb Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sat, 29 Apr 2023 01:48:14 +0200
Subject: ci: replace stylua action with our own lint target

This will prevent situations where the linting works on CI but not
locally, at the cost of increased CI time.

Also manually ignore `runtime/vim/lua/re.lua`, as the .styluaignore
isn't respected when specifying a file instead of a directory.
---
 CMakeLists.txt | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index dad8f4b745..731bf09e2e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -236,6 +236,8 @@ add_glob_target(
   FLAGS --color=always --check
   GLOB_DIRS runtime/
   GLOB_PAT *.lua
+  EXCLUDE
+    /runtime/lua/vim/re.lua
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintlua)
-- 
cgit 


From 10860164778327c0009f6efc8e020308cadb13a2 Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sat, 13 May 2023 12:12:29 +0200
Subject: build: cmake cleanup

- Simplify error checking when using execute_process.
- Set BUILD_SHARED_LIBS to OFF when building dependencies.
  This is normally not needed, but msgpack interprets an unset
  BUILD_SHARED_LIBS to build a shared library, which is the opposite of
  the cmake behavior.
- Move function check_lua_module to Util.cmake.
- Remove unnecessary code.
- Make variable naming more consistent
---
 CMakeLists.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 731bf09e2e..f1b17f66a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,9 +22,11 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
 
 include(CheckCCompilerFlag)
 include(CheckCSourceCompiles)
+include(CheckLibraryExists)
 include(FindPackageHandleStandardArgs)
+include(GNUInstallDirs)
+
 include(InstallHelpers)
-include(LuaHelpers)
 include(PreventInTreeBuilds)
 include(Util)
 
-- 
cgit 


From 826b95203ac9c8decf02e332fbb55cf4ebf73aef Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Thu, 18 May 2023 16:27:47 +0200
Subject: build: bundle uncrustify

Uncrustify is sensitive to version changes, which causes friction for
contributors that doesn't have that exact version. It's also simpler to
download and install the correct version than to have bespoke version
checking.
---
 CMakeLists.txt | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f1b17f66a9..f7dbc6b6d8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,9 @@ project(nvim C)
 if(POLICY CMP0075)
   cmake_policy(SET CMP0075 NEW)
 endif()
+if(POLICY CMP0135)
+  cmake_policy(SET CMP0135 NEW)
+endif()
 
 # Point CMake at any custom modules we may ship
 list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
@@ -23,9 +26,11 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
 include(CheckCCompilerFlag)
 include(CheckCSourceCompiles)
 include(CheckLibraryExists)
+include(ExternalProject)
 include(FindPackageHandleStandardArgs)
 include(GNUInstallDirs)
 
+include(Deps)
 include(InstallHelpers)
 include(PreventInTreeBuilds)
 include(Util)
@@ -107,6 +112,12 @@ endif()
 message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
 
 set_default_buildtype()
+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`.
@@ -221,7 +232,6 @@ endif()
 find_program(LUACHECK_PRG luacheck)
 find_program(SHELLCHECK_PRG shellcheck)
 find_program(STYLUA_PRG stylua)
-find_program(UNCRUSTIFY_PRG uncrustify)
 
 add_glob_target(
   REQUIRED
@@ -301,3 +311,13 @@ add_custom_target(uninstall
 if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
   add_subdirectory(cmake.packaging)
 endif()
+
+ExternalProject_Add(uncrustify
+  PREFIX ${DEPS_BUILD_DIR}
+  URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.77.1.tar.gz
+  URL_HASH SHA256=414bbc9f7860eb18a53074f9af14ed04638a633b2216a73f2629291300d37c1b
+  DOWNLOAD_NO_PROGRESS TRUE
+  DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
+  CMAKE_ARGS ${DEPS_CMAKE_ARGS}
+  CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
+  EXCLUDE_FROM_ALL TRUE)
-- 
cgit 


From 8b8e60728486e1fbb308bee2961175be355e550a Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sun, 21 May 2023 20:57:39 +0200
Subject: build: move luarocks and rocks installation to main build

This will ensure luacheck and busted are only installed when they're
actually needed. This cuts total build time by over 50%.

Closes https://github.com/neovim/neovim/issues/22797.
---
 CMakeLists.txt | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f7dbc6b6d8..4e57d6905f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,6 +35,9 @@ include(InstallHelpers)
 include(PreventInTreeBuilds)
 include(Util)
 
+set_directory_properties(PROPERTIES
+  EP_PREFIX "${DEPS_BUILD_DIR}")
+
 set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches)
 
 find_program(CCACHE_PRG ccache)
@@ -229,18 +232,18 @@ endif()
 #
 # Lint
 #
-find_program(LUACHECK_PRG luacheck)
 find_program(SHELLCHECK_PRG shellcheck)
 find_program(STYLUA_PRG stylua)
 
 add_glob_target(
   REQUIRED
   TARGET lintlua-luacheck
-  COMMAND ${LUACHECK_PRG}
+  COMMAND ${DEPS_BIN_DIR}/luacheck
   FLAGS -q
   GLOB_DIRS runtime/ scripts/ src/ test/
   GLOB_PAT *.lua
   TOUCH_STRATEGY SINGLE)
+add_dependencies(lintlua-luacheck luacheck)
 
 add_glob_target(
   TARGET lintlua-stylua
@@ -313,7 +316,6 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
 endif()
 
 ExternalProject_Add(uncrustify
-  PREFIX ${DEPS_BUILD_DIR}
   URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.77.1.tar.gz
   URL_HASH SHA256=414bbc9f7860eb18a53074f9af14ed04638a633b2216a73f2629291300d37c1b
   DOWNLOAD_NO_PROGRESS TRUE
@@ -321,3 +323,5 @@ ExternalProject_Add(uncrustify
   CMAKE_ARGS ${DEPS_CMAKE_ARGS}
   CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
   EXCLUDE_FROM_ALL TRUE)
+
+include(BuildLuarocks)
-- 
cgit 


From 8206954a67b96702619ba70d011b454696a608ef Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sun, 28 May 2023 15:28:53 +0200
Subject: build: remove LOG_DEBUG option

Its usecase is too specific to warrant an option. The same effect can be
achieved by passing `-DCMAKE_C_FLAGS=-DNVIM_LOG_DEBUG` in the command
line when building neovim.
---
 CMakeLists.txt | 1 -
 1 file changed, 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4e57d6905f..76930e0e6c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,7 +149,6 @@ endif()
 option(LOG_LIST_ACTIONS "Add list actions logging" OFF)
 
 option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
-option(LOG_DEBUG "Enable debug log messages even in a release build" OFF)
 option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
 option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
 
-- 
cgit 


From c48f94d1f30056272ed030ad3f4529055ac07853 Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sun, 28 May 2023 16:34:47 +0200
Subject: build: remove LOG_LIST_ACTIONS option and related code

It has not been used for a long time and the likelihood of it still working is
low.
---
 CMakeLists.txt | 2 --
 1 file changed, 2 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 76930e0e6c..9b80f81bc8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -146,8 +146,6 @@ if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG)
   string(REPLACE "  " " " CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") # Remove duplicate whitespace
 endif()
 
-option(LOG_LIST_ACTIONS "Add list actions logging" OFF)
-
 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)
 option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
-- 
cgit 


From 0370e4def0c0328f8cd09f02c1ca82ed491ecb9a Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Tue, 6 Jun 2023 19:19:00 +0200
Subject: build!: remove neovim qt

Neovim QT was originally bundled on Windows as a response to the then
lackluster terminal options. The situation has dramatically changed,
with viable options such as Windows terminal, Alacritty and Wezterm to
name a few. The Windows build no longer needs this special treatment for
neovim to be usable.

Pros:
  - Release builds will be smaller.
  - Less maintenance burden.
  - Clearer separation of responsibility (neovim issues go to the neovim
    repo and neovim-qt issues to the neovim-qt repo).
  - More consistent treatment between platforms.

Cons:
  - Users who've come to expect neovim-qt to be bundled with nvim will
    need to adjust and download neovim-qt from
    https://github.com/equalsraf/neovim-qt instead.
  - Similarly, build scripts will need to be adjusted to reflect this
    change.

Closes https://github.com/neovim/neovim/issues/21209.
---
 CMakeLists.txt | 11 -----------
 1 file changed, 11 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b80f81bc8..abd3a57fc0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -289,21 +289,10 @@ install_helper(
   FILES ${CMAKE_SOURCE_DIR}/src/man/nvim.1
   DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
 
-if(EXISTS "${DEPS_PREFIX}/share/nvim-qt")
-  option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" ON)
-else()
-  option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" OFF)
-endif()
-
 add_subdirectory(src/nvim)
 add_subdirectory(cmake.config)
 add_subdirectory(runtime)
 add_subdirectory(test)
-if(WIN32 AND USE_BUNDLED_NVIMQT)
-  install_helper(
-    FILES ${DEPS_PREFIX}/share/nvim-qt/runtime/plugin/nvim_gui_shim.vim
-    DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim-qt/runtime/plugin)
-endif()
 
 add_custom_target(uninstall
   COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/UninstallHelper.cmake)
-- 
cgit 


From 46e95909bf898bd295f8009b15a88719733de906 Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sat, 24 Jun 2023 00:29:53 +0200
Subject: ci: introduce CI_LINT option

This will abort if lint programs are not found, and is meant primarily
for the lint job in CI. Supersedes the REQUIRED argument in
add_glob_target as it's a superior replacement by being a built-in
solution.
---
 CMakeLists.txt | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index abd3a57fc0..d0534731b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -229,11 +229,14 @@ endif()
 #
 # Lint
 #
-find_program(SHELLCHECK_PRG shellcheck)
-find_program(STYLUA_PRG stylua)
+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})
 
 add_glob_target(
-  REQUIRED
   TARGET lintlua-luacheck
   COMMAND ${DEPS_BIN_DIR}/luacheck
   FLAGS -q
-- 
cgit 


From db8fe63a9398efd57c3ff28aa3d93e45fb70ee1a Mon Sep 17 00:00:00 2001
From: zeertzjq 
Date: Tue, 11 Jul 2023 07:15:46 +0800
Subject: feat(api): add nvim_win_text_height (#24236)

It uses the same code as "scroll_delta" of "win_viewport" UI event to
calculate text height, but is more flexible.
---
 CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0534731b0..191e9f1546 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -130,9 +130,9 @@ set(NVIM_VERSION_PATCH 0)
 set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
 
 # API level
-set(NVIM_API_LEVEL 11)        # Bump this after any API change.
+set(NVIM_API_LEVEL 12)        # Bump this after any API change.
 set(NVIM_API_LEVEL_COMPAT 0)  # Adjust this after a _breaking_ API change.
-set(NVIM_API_PRERELEASE false)
+set(NVIM_API_PRERELEASE true)
 
 # Build-type: RelWithDebInfo
 # /Og means something different in MSVC
-- 
cgit 


From 6fa17da39b270bf230764859a9537124b18d3ed5 Mon Sep 17 00:00:00 2001
From: Lewis Russell 
Date: Fri, 4 Aug 2023 21:26:53 +0100
Subject: docs(options): take ownership of options.txt (#24528)

* docs(options): take ownership of options.txt

- `src/nvim/options.lua` is now the source of truth
- generate runtime/lua/vim/_meta/options.lua

* fixup! zeer comments

* fixup! zeer comments (2)

* fixup! re-enable luacheck

* fixup! regen
---
 CMakeLists.txt | 1 +
 1 file changed, 1 insertion(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 191e9f1546..50da503353 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -253,6 +253,7 @@ add_glob_target(
   GLOB_PAT *.lua
   EXCLUDE
     /runtime/lua/vim/re.lua
+    /runtime/lua/vim/_meta/options.lua
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintlua)
-- 
cgit 


From 2234b84a1b85832667ad4a23fd5dee0bd1c92b72 Mon Sep 17 00:00:00 2001
From: Lewis Russell 
Date: Thu, 17 Aug 2023 11:14:58 +0100
Subject: docs(generators): bake into cmake

---
 CMakeLists.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50da503353..df9f1cfa85 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -242,6 +242,7 @@ add_glob_target(
   FLAGS -q
   GLOB_DIRS runtime/ scripts/ src/ test/
   GLOB_PAT *.lua
+  EXCLUDE runtime/lua/vim/_meta/.*
   TOUCH_STRATEGY SINGLE)
 add_dependencies(lintlua-luacheck luacheck)
 
@@ -253,7 +254,7 @@ add_glob_target(
   GLOB_PAT *.lua
   EXCLUDE
     /runtime/lua/vim/re.lua
-    /runtime/lua/vim/_meta/options.lua
+    /runtime/lua/vim/_meta/.*
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintlua)
-- 
cgit 


From f30844008bdd313b03a19486159f571a067e68b9 Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Sun, 3 Sep 2023 00:38:10 +0200
Subject: build: download busted from own neovim/deps repository

Downloading the necessary files all at once instead of doing dependency
handling with luarocks speeds up installation immensely. We speed up the
process even more by using luv as a replacement for the C modules in the
busted dependencies, which allows us to skip costly compilation times.

Co-authored-by: bfredl 
---
 CMakeLists.txt | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index df9f1cfa85..c91821d843 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -316,3 +316,15 @@ ExternalProject_Add(uncrustify
   EXCLUDE_FROM_ALL TRUE)
 
 include(BuildLuarocks)
+
+ExternalProject_Add(busted
+  URL https://github.com/neovim/deps/raw/41d2f1b92aef964c8cb86985768702571e190e96/opt/busted-2.1.1.tar.gz
+  URL_HASH SHA256=9b23efce883ad25a3fe140598a32ab89ecc73f4c3d998cb937293d88e5b4c645
+  DOWNLOAD_NO_PROGRESS TRUE
+  DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/busted
+  SOURCE_DIR ${DEPS_SHARE_DIR}
+  CONFIGURE_COMMAND ""
+  BUILD_COMMAND ""
+  INSTALL_COMMAND ""
+  EXCLUDE_FROM_ALL TRUE)
+add_dependencies(test_deps busted)
-- 
cgit 


From c50951a4d0cf480aa138a2ed2bd2deedebeb0dec Mon Sep 17 00:00:00 2001
From: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date: Mon, 4 Sep 2023 00:00:26 +0200
Subject: build: various fixes

- simplify lua interpreter search
- fix incorrect variable name in BuildLua.cmake
- build PUC Lua with -O2
- silence non-mandatory find_package search for libuv
- simplify Find modules
- Prefer using the explicitly set CI_BUILD over relying on the
  environment variable "CI".
---
 CMakeLists.txt | 22 +---------------------
 1 file changed, 1 insertion(+), 21 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c91821d843..b3c366a915 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -173,23 +173,10 @@ foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
 endforeach()
 
-if(NOT LUA_PRG)
-  foreach(CURRENT_LUA_PRG luajit lua5.1 lua5.2 lua)
-    unset(_CHECK_LUA_PRG CACHE)
-    find_program(_CHECK_LUA_PRG ${CURRENT_LUA_PRG})
-
-    if(_CHECK_LUA_PRG)
-      set(LUA_PRG "${_CHECK_LUA_PRG}" CACHE FILEPATH "Path to a program.")
-      break()
-    endif()
-  endforeach()
-  unset(_CHECK_LUA_PRG CACHE)
-endif()
-
+find_program(LUA_PRG NAMES luajit lua5.1 lua5.2 lua)
 if(NOT LUA_PRG)
   message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter")
 endif()
-
 message(STATUS "Using Lua interpreter: ${LUA_PRG}")
 
 # Some of the code generation still relies on stable table ordering in order to
@@ -200,11 +187,9 @@ message(STATUS "Using Lua interpreter: ${LUA_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)
@@ -221,14 +206,11 @@ if(COMPILE_LUA AND NOT WIN32)
     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")
@@ -277,9 +259,7 @@ add_dependencies(lintcommit nvim)
 add_custom_target(lint)
 add_dependencies(lint clang-tidy lintc lintlua lintsh lintcommit)
 
-#
 # Format
-#
 add_custom_target(formatlua
   COMMAND ${CMAKE_COMMAND}
     -D FORMAT_PRG=${STYLUA_PRG}
-- 
cgit 


From 6985e12caef4c0d55c895980e423cb188c3fc5c8 Mon Sep 17 00:00:00 2001
From: bfredl 
Date: Tue, 5 Sep 2023 11:49:08 +0200
Subject: refactor(build): derocksify luacheck

---
 CMakeLists.txt | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b3c366a915..4e4beb3448 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,13 +220,13 @@ find_program(STYLUA_PRG stylua ${LINT_REQUIRED})
 
 add_glob_target(
   TARGET lintlua-luacheck
-  COMMAND ${DEPS_BIN_DIR}/luacheck
-  FLAGS -q
+  COMMAND $
+  FLAGS -ll ${PROJECT_SOURCE_DIR}/test/lua_runner.lua ${CMAKE_BINARY_DIR}/usr luacheck -q
   GLOB_DIRS runtime/ scripts/ src/ test/
   GLOB_PAT *.lua
   EXCLUDE runtime/lua/vim/_meta/.*
   TOUCH_STRATEGY SINGLE)
-add_dependencies(lintlua-luacheck luacheck)
+add_dependencies(lintlua-luacheck lua-dev-deps)
 
 add_glob_target(
   TARGET lintlua-stylua
@@ -297,14 +297,14 @@ ExternalProject_Add(uncrustify
 
 include(BuildLuarocks)
 
-ExternalProject_Add(busted
-  URL https://github.com/neovim/deps/raw/41d2f1b92aef964c8cb86985768702571e190e96/opt/busted-2.1.1.tar.gz
-  URL_HASH SHA256=9b23efce883ad25a3fe140598a32ab89ecc73f4c3d998cb937293d88e5b4c645
+ExternalProject_Add(lua-dev-deps
+  URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
+  URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2
   DOWNLOAD_NO_PROGRESS TRUE
-  DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/busted
+  DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-dev-deps
   SOURCE_DIR ${DEPS_SHARE_DIR}
   CONFIGURE_COMMAND ""
   BUILD_COMMAND ""
   INSTALL_COMMAND ""
   EXCLUDE_FROM_ALL TRUE)
-add_dependencies(test_deps busted)
+add_dependencies(test_deps lua-dev-deps)
-- 
cgit 


From 25e51d393a420765d5efd44c1b4be823a5cf280a Mon Sep 17 00:00:00 2001
From: bfredl 
Date: Sat, 9 Sep 2023 23:45:06 +0200
Subject: build(lua): vendor coxpcall

Do not require luarocks on PUC lua CI just because of this single lua file
---
 CMakeLists.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4e4beb3448..24ca416dbc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -224,7 +224,9 @@ add_glob_target(
   FLAGS -ll ${PROJECT_SOURCE_DIR}/test/lua_runner.lua ${CMAKE_BINARY_DIR}/usr luacheck -q
   GLOB_DIRS runtime/ scripts/ src/ test/
   GLOB_PAT *.lua
-  EXCLUDE runtime/lua/vim/_meta/.*
+  EXCLUDE
+    runtime/lua/vim/_meta/.*
+    runtime/lua/coxpcall.lua
   TOUCH_STRATEGY SINGLE)
 add_dependencies(lintlua-luacheck lua-dev-deps)
 
@@ -237,6 +239,7 @@ add_glob_target(
   EXCLUDE
     /runtime/lua/vim/re.lua
     /runtime/lua/vim/_meta/.*
+    /runtime/lua/coxpcall.lua
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintlua)
-- 
cgit 


From 9f8f287c6139b8b8ff2809f4d1aebb57021cd043 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Sat, 9 Sep 2023 18:14:52 +0200
Subject: build: remove luarocks

Luarocks is no longer needed after
25e51d393a420765d5efd44c1b4be823a5cf280a.
---
 CMakeLists.txt | 3 ---
 1 file changed, 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24ca416dbc..aec39109e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -298,8 +298,6 @@ ExternalProject_Add(uncrustify
   CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
   EXCLUDE_FROM_ALL TRUE)
 
-include(BuildLuarocks)
-
 ExternalProject_Add(lua-dev-deps
   URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
   URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2
@@ -310,4 +308,3 @@ ExternalProject_Add(lua-dev-deps
   BUILD_COMMAND ""
   INSTALL_COMMAND ""
   EXCLUDE_FROM_ALL TRUE)
-add_dependencies(test_deps lua-dev-deps)
-- 
cgit 


From eecddd24164c3c4a250aec25dbd760b283849981 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Sun, 10 Sep 2023 11:00:34 +0200
Subject: build(lint): use stylua without add_glob_target

add_glob_target is our custom method to figure out whether a work needs
to be done or not. This works as expected most of the time, but causes a
problem with stylua.

Stylua makes the decision that if a file is explicitly passed to be
formatted, then it will format the file even if the file is set to be
ignored in .styluaignore. This behavior breaks add_glob_target with
seemingly no easy workaround.
More information: https://github.com/JohnnyMorganz/StyLua/issues/751

Instead, what we can do is call stylua as you would in the command line.
This will make stylua work as expected. The downside is that we no
longer get a free "is this work necessary" detection, meaning that
stylua will be run each time `make lint` is called, regardless if it's
necessary or not. For longer lint tasks such as uncrustify and
clang-tidy this would be disastrous, but this is an acceptable tradeoff
since stylua is very quick.
---
 CMakeLists.txt | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index aec39109e4..f0303be3eb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -230,18 +230,11 @@ add_glob_target(
   TOUCH_STRATEGY SINGLE)
 add_dependencies(lintlua-luacheck lua-dev-deps)
 
-add_glob_target(
-  TARGET lintlua-stylua
-  COMMAND ${STYLUA_PRG}
-  FLAGS --color=always --check
-  GLOB_DIRS runtime/
-  GLOB_PAT *.lua
-  EXCLUDE
-    /runtime/lua/vim/re.lua
-    /runtime/lua/vim/_meta/.*
-    /runtime/lua/coxpcall.lua
-  TOUCH_STRATEGY SINGLE)
-
+# Don't use add_glob_target as .styluaignore won't be respected.
+# https://github.com/JohnnyMorganz/StyLua/issues/751
+add_custom_target(lintlua-stylua
+  COMMAND ${STYLUA_PRG} --color=always --check .
+  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
 add_custom_target(lintlua)
 add_dependencies(lintlua lintlua-luacheck lintlua-stylua)
 
-- 
cgit 


From b80a8e2c16b6d6eb16ac84232c27eb7cfa4a434a Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Tue, 10 Oct 2023 23:18:45 +0200
Subject: build: adjust how find order is prioritized

Ensure bundled libraries and include directories are always searched
first before any others. This will provide a more consistent experience
as the search order of the builtin find_ functions can vary depending on
system. This should make the build process faster when building with
bundled deps as we limit the search to only the .deps directory.
Separating the search between .deps and everything makes debugging
find_-related problems simpler if you need to check how dependencies are
found.

For libraries, we divide the search process into the following order:
1. Only search in .deps directory and only search for static libraries.
2. Only search in .deps directory and search for all libraries.
3. Search everywhere and search for all libraries.

Make an exception for FindLibintl.cmake as changing the search order
seems to break some tests on macos.
---
 CMakeLists.txt | 1 +
 1 file changed, 1 insertion(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f0303be3eb..1ca6e7ce59 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,6 +31,7 @@ include(FindPackageHandleStandardArgs)
 include(GNUInstallDirs)
 
 include(Deps)
+include(Find)
 include(InstallHelpers)
 include(PreventInTreeBuilds)
 include(Util)
-- 
cgit 


From 5cefec7349610853910c21a0215f85a4d47132d1 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Thu, 26 Oct 2023 22:30:00 +0200
Subject: build: various cmake fixes

- silence false warnings on MSVC
- merge `clang-tidy` cmake target into `lintc` and remove the
  corresponding make target
- use cmake's built-in endianness detection
---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ca6e7ce59..a360c6043f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -254,7 +254,7 @@ add_custom_target(lintcommit
 add_dependencies(lintcommit nvim)
 
 add_custom_target(lint)
-add_dependencies(lint clang-tidy lintc lintlua lintsh lintcommit)
+add_dependencies(lint lintc lintlua lintsh lintcommit)
 
 # Format
 add_custom_target(formatlua
-- 
cgit 


From 397b92e02dbe7996a9da14aac73003fc8ddd1674 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Sat, 7 Oct 2023 15:07:45 +0200
Subject: build: enable ASAN for MSVC

It is enabled with ENABLE_ASAN_UBSAN like other compilers. Technically
it only enables ASAN as UBSAN is not available, meaning to make the
variable names fully correct we'd need to separate it into two checks:
ENABLE_ASAN and ENABLE_UBSAN, but the convenience of combining them into
the same flag outweighs the theoretical correctness.

Also note in CONTRIBUTING.md that debug builds in ASAN is not supported.
Technically it is the debug runtime that is not supported, which cmake
automatically enables when using the debug build type. However, neovim
can't be built with debug builds without linking to the debug runtime
since the third party libraries has likely been linked to the debug
runtime if it was built with debug build type. This technicality is
likely uninteresting to the potential developer and it's easier to just
say to use a release build type.
---
 CMakeLists.txt | 6 ------
 1 file changed, 6 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a360c6043f..a7b7ef9c0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -157,12 +157,6 @@ if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
   message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously")
 endif()
 
-if(ENABLE_ASAN_UBSAN OR ENABLE_MSAN OR ENABLE_TSAN)
-  if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU")
-    message(FATAL_ERROR "Sanitizers are only supported for Clang and GCC")
-  endif()
-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)
-- 
cgit 


From cd097ab8ccfd967e844525a895c5499b68fc1ff1 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Mon, 29 May 2023 18:45:08 +0200
Subject: build: allow using system rocks

This allow distributions and other interested parties to use a system
busted rather than the on neovim bundles by passing the
-D USE_BUNDLED_BUSTED=ON flag to cmake when building.

Closes https://github.com/neovim/neovim/issues/23814.
---
 CMakeLists.txt | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7b7ef9c0f..72889283dc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -286,13 +286,18 @@ ExternalProject_Add(uncrustify
   CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
   EXCLUDE_FROM_ALL TRUE)
 
-ExternalProject_Add(lua-dev-deps
-  URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
-  URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2
-  DOWNLOAD_NO_PROGRESS TRUE
-  DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-dev-deps
-  SOURCE_DIR ${DEPS_SHARE_DIR}
-  CONFIGURE_COMMAND ""
-  BUILD_COMMAND ""
-  INSTALL_COMMAND ""
-  EXCLUDE_FROM_ALL TRUE)
+option(USE_BUNDLED_BUSTED "Use bundled luarocks" ON)
+if(USE_BUNDLED_BUSTED)
+  ExternalProject_Add(lua-dev-deps
+    URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
+    URL_HASH SHA256=27db2495f5eddc7fc191701ec9b291486853530c6125609d3197d03481e8d5a2
+    DOWNLOAD_NO_PROGRESS TRUE
+    DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-dev-deps
+    SOURCE_DIR ${DEPS_SHARE_DIR}
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND ""
+    EXCLUDE_FROM_ALL TRUE)
+else()
+  add_custom_target(lua-dev-deps)
+endif()
-- 
cgit 


From 2a57613b9b4206cc627efa63012aac791b8f89e0 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Sun, 12 Nov 2023 17:20:39 +0100
Subject: build: use stylua with add_glob_target

stylua version 0.19.0 has added the flag `--respect-ignores` which
unbreaks stylua when used with add_glob_target.

See eecddd24164c3c4a250aec25dbd760b283849981 for more context.
---
 CMakeLists.txt | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 72889283dc..bcfac39098 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -225,11 +225,16 @@ add_glob_target(
   TOUCH_STRATEGY SINGLE)
 add_dependencies(lintlua-luacheck lua-dev-deps)
 
-# Don't use add_glob_target as .styluaignore won't be respected.
-# https://github.com/JohnnyMorganz/StyLua/issues/751
-add_custom_target(lintlua-stylua
-  COMMAND ${STYLUA_PRG} --color=always --check .
-  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+add_glob_target(
+  TARGET lintlua-stylua
+  COMMAND ${STYLUA_PRG}
+  FLAGS --color=always --check --respect-ignores
+  GLOB_DIRS runtime/
+  GLOB_PAT *.lua
+  EXCLUDE
+    /runtime/lua/vim/_meta
+  TOUCH_STRATEGY SINGLE)
+
 add_custom_target(lintlua)
 add_dependencies(lintlua lintlua-luacheck lintlua-stylua)
 
-- 
cgit 


From 03c3f7887dbc26c4246ea2eeb135453f3f3ee000 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Sun, 12 Nov 2023 22:04:15 +0100
Subject: build: enforce PREFER_LUA

Only search for luajit if PREFER_LUA=OFF. If PREFER_LUA is OFF, then
always prioritize luajit first and then fall back to lua.
---
 CMakeLists.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index bcfac39098..b57e55f938 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -168,7 +168,10 @@ foreach(CFGNAME ${CMAKE_CONFIGURATION_TYPES})
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CFGNAME} ${CMAKE_BINARY_DIR}/lib)
 endforeach()
 
-find_program(LUA_PRG NAMES luajit lua5.1 lua5.2 lua)
+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)
   message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter")
 endif()
-- 
cgit 


From bec2ebebdacd494117ce41b31e208577ddeef510 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Tue, 7 Nov 2023 09:52:20 +0100
Subject: build: various cmake fixes

- Correct MSVC warning suppression. The C4003 warning is issued during
  file generation and not for the actual source files.
- Remove non-existent "scripts/pvscheck.sh" file from `lintsh` target.
- Remove spaces inside for loops with uncrustify.
- Point dependencies to use a git tag rather than releases, as releases
  might have changes that deviate from the actual source code.
- Automatically update uncrustify config before formatting or linting.
---
 CMakeLists.txt | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b57e55f938..bdf2b8bb2f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -247,8 +247,6 @@ add_glob_target(
   FLAGS -x -a
   GLOB_DIRS scripts
   GLOB_PAT *.sh
-  EXCLUDE
-    scripts/pvscheck.sh
   TOUCH_STRATEGY SINGLE)
 
 add_custom_target(lintcommit
@@ -294,7 +292,7 @@ ExternalProject_Add(uncrustify
   CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
   EXCLUDE_FROM_ALL TRUE)
 
-option(USE_BUNDLED_BUSTED "Use bundled luarocks" ON)
+option(USE_BUNDLED_BUSTED "Use bundled busted" ON)
 if(USE_BUNDLED_BUSTED)
   ExternalProject_Add(lua-dev-deps
     URL https://github.com/neovim/deps/raw/5a1f71cceb24990a0b15fd9a472a5f549f019248/opt/lua-dev-deps.tar.gz
-- 
cgit 


From 1798a4b5e9f0ae56cd800095f79423fea5cae8ca Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Thu, 16 Nov 2023 10:59:11 +0100
Subject: build: bump uncrustify version

Biggest change is that uncrustify is silent during linting.
---
 CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index bdf2b8bb2f..6dc7132c7b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,8 +284,8 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
 endif()
 
 ExternalProject_Add(uncrustify
-  URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.77.1.tar.gz
-  URL_HASH SHA256=414bbc9f7860eb18a53074f9af14ed04638a633b2216a73f2629291300d37c1b
+  URL https://github.com/uncrustify/uncrustify/archive/7edc1c53c5278206da1cef8714fdc7bd9d903137.tar.gz
+  URL_HASH SHA256=65cf56f482373fd3cb88ad35426465e09739bbe4262271a3a79b59e4dab2a407
   DOWNLOAD_NO_PROGRESS TRUE
   DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
   CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-- 
cgit 


From 77c0d5415b4f202f3480b0738bd2d9383c17e026 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Mon, 20 Nov 2023 15:11:44 +0100
Subject: build: bump uncrustify to version 0.78.1

---
 CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6dc7132c7b..d128ec6a8e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,8 +284,8 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
 endif()
 
 ExternalProject_Add(uncrustify
-  URL https://github.com/uncrustify/uncrustify/archive/7edc1c53c5278206da1cef8714fdc7bd9d903137.tar.gz
-  URL_HASH SHA256=65cf56f482373fd3cb88ad35426465e09739bbe4262271a3a79b59e4dab2a407
+  URL https://github.com/uncrustify/uncrustify/archive/uncrustify-0.78.1.tar.gz
+  URL_HASH SHA256=ecaf4c0adca14c36dfffa30bc28e69865115ecd602c90eb16a8cddccb41caad2
   DOWNLOAD_NO_PROGRESS TRUE
   DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/uncrustify
   CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-- 
cgit 


From 78239f0bbcb2527165fbaa3172b50c99c6092136 Mon Sep 17 00:00:00 2001
From: dundargoc 
Date: Mon, 20 Nov 2023 16:49:48 +0100
Subject: build: reorganize cmake files

Also add _GNU_SOURCE compiler definition for all non MSVC compilers.

Closes https://github.com/neovim/neovim/issues/26087.
---
 CMakeLists.txt | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d128ec6a8e..475a1a2c3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,6 +50,10 @@ if(NOT CI_BUILD)
   set(CMAKE_INSTALL_MESSAGE NEVER)
 endif()
 
+if(${CMAKE_VERSION} VERSION_LESS 3.20)
+  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+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")
-- 
cgit