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