aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-25 19:15:05 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-11-25 19:27:38 +0000
commitc5d770d311841ea5230426cc4c868e8db27300a8 (patch)
treedd21f70127b4b8b5f109baefc8ecc5016f507c91 /src
parent9be89f131f87608f224f0ee06d199fcd09d32176 (diff)
parent081beb3659bd6d8efc3e977a160b1e72becbd8a2 (diff)
downloadrneovim-c5d770d311841ea5230426cc4c868e8db27300a8.tar.gz
rneovim-c5d770d311841ea5230426cc4c868e8db27300a8.tar.bz2
rneovim-c5d770d311841ea5230426cc4c868e8db27300a8.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'src')
-rw-r--r--src/nvim/CMakeLists.txt20
-rw-r--r--src/nvim/api/deprecated.c40
-rw-r--r--src/nvim/api/extmark.c24
-rw-r--r--src/nvim/api/keysets_defs.h1
-rw-r--r--src/nvim/api/options.c55
-rw-r--r--src/nvim/api/private/helpers.c27
-rw-r--r--src/nvim/api/private/helpers.h6
-rw-r--r--src/nvim/api/ui_events.in.h4
-rw-r--r--src/nvim/api/vim.c64
-rw-r--r--src/nvim/api/win_config.c13
-rw-r--r--src/nvim/auevents.lua6
-rw-r--r--src/nvim/autocmd.c16
-rw-r--r--src/nvim/buffer.c12
-rw-r--r--src/nvim/buffer_defs.h12
-rw-r--r--src/nvim/bufwrite.c14
-rw-r--r--src/nvim/change.c4
-rw-r--r--src/nvim/charset.c196
-rw-r--r--src/nvim/cmdexpand.c69
-rw-r--r--src/nvim/cmdexpand_defs.h2
-rw-r--r--src/nvim/cmdhist.c49
-rw-r--r--src/nvim/cmdhist.h1
-rw-r--r--src/nvim/decoration_defs.h2
-rw-r--r--src/nvim/diff.c6
-rw-r--r--src/nvim/digraph.c8
-rw-r--r--src/nvim/drawline.c50
-rw-r--r--src/nvim/drawscreen.c57
-rw-r--r--src/nvim/errors.h8
-rw-r--r--src/nvim/eval.c81
-rw-r--r--src/nvim/eval.lua124
-rw-r--r--src/nvim/eval/funcs.c14
-rw-r--r--src/nvim/eval/vars.c21
-rw-r--r--src/nvim/ex_cmds.c18
-rw-r--r--src/nvim/ex_cmds2.c2
-rw-r--r--src/nvim/ex_docmd.c232
-rw-r--r--src/nvim/ex_getln.c204
-rw-r--r--src/nvim/ex_getln_defs.h6
-rw-r--r--src/nvim/file_search.c10
-rw-r--r--src/nvim/fileio.c28
-rw-r--r--src/nvim/fold.c2
-rw-r--r--src/nvim/generators/gen_api_dispatch.lua2
-rw-r--r--src/nvim/generators/gen_api_ui_events.lua4
-rw-r--r--src/nvim/generators/gen_options.lua347
-rw-r--r--src/nvim/generators/gen_options_enum.lua129
-rw-r--r--src/nvim/getchar.c82
-rw-r--r--src/nvim/getchar_defs.h2
-rw-r--r--src/nvim/globals.h8
-rw-r--r--src/nvim/grid_defs.h8
-rw-r--r--src/nvim/highlight.c12
-rw-r--r--src/nvim/highlight.h2
-rw-r--r--src/nvim/highlight_defs.h3
-rw-r--r--src/nvim/highlight_group.c35
-rw-r--r--src/nvim/indent.c22
-rw-r--r--src/nvim/input.c2
-rw-r--r--src/nvim/insexpand.c46
-rw-r--r--src/nvim/linematch.c4
-rw-r--r--src/nvim/lua/executor.c103
-rw-r--r--src/nvim/lua/stdlib.c14
-rw-r--r--src/nvim/lua/treesitter.c49
-rw-r--r--src/nvim/main.c12
-rw-r--r--src/nvim/mapping.c30
-rw-r--r--src/nvim/mapping.h7
-rw-r--r--src/nvim/mark.c13
-rw-r--r--src/nvim/mbyte.c13
-rw-r--r--src/nvim/memline.c51
-rw-r--r--src/nvim/menu.c4
-rw-r--r--src/nvim/message.c282
-rw-r--r--src/nvim/message.h2
-rw-r--r--src/nvim/message_defs.h6
-rw-r--r--src/nvim/mouse.c2
-rw-r--r--src/nvim/normal.c68
-rw-r--r--src/nvim/normal_defs.h5
-rw-r--r--src/nvim/ops.c290
-rw-r--r--src/nvim/ops.h2
-rw-r--r--src/nvim/option.c2078
-rw-r--r--src/nvim/option.h64
-rw-r--r--src/nvim/option_defs.h77
-rw-r--r--src/nvim/option_vars.h74
-rw-r--r--src/nvim/options.lua531
-rw-r--r--src/nvim/optionstr.c101
-rw-r--r--src/nvim/os/input.c62
-rw-r--r--src/nvim/os/shell.c8
-rw-r--r--src/nvim/path.c9
-rw-r--r--src/nvim/popupmenu.c48
-rw-r--r--src/nvim/popupmenu.h2
-rw-r--r--src/nvim/profile.c5
-rw-r--r--src/nvim/quickfix.c179
-rw-r--r--src/nvim/runtime.c2
-rw-r--r--src/nvim/search.c34
-rw-r--r--src/nvim/shada.c13
-rw-r--r--src/nvim/sign.c6
-rw-r--r--src/nvim/spell.c28
-rw-r--r--src/nvim/statusline.c14
-rw-r--r--src/nvim/strings.c4
-rw-r--r--src/nvim/syntax.c90
-rw-r--r--src/nvim/tag.c26
-rw-r--r--src/nvim/terminal.c11
-rw-r--r--src/nvim/textformat.c2
-rw-r--r--src/nvim/tui/tui.c36
-rw-r--r--src/nvim/types_defs.h4
-rw-r--r--src/nvim/ui.c60
-rw-r--r--src/nvim/ui.h4
-rw-r--r--src/nvim/ui_compositor.c2
-rw-r--r--src/nvim/undo.c16
-rw-r--r--src/nvim/usercmd.c16
-rw-r--r--src/nvim/vim_defs.h1
-rw-r--r--src/nvim/vvars.lua261
-rw-r--r--src/nvim/window.c62
-rw-r--r--src/nvim/winfloat.c7
-rw-r--r--src/nvim/yankmap.c2
-rw-r--r--src/uncrustify.cfg13
-rw-r--r--src/vterm/vterm.c509
-rw-r--r--src/vterm/vterm.h37
112 files changed, 4375 insertions, 3292 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index c2a358327a..344b4bef00 100644
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -31,7 +31,7 @@ target_link_libraries(main_lib INTERFACE ${LUV_LIBRARY})
find_package(Iconv REQUIRED)
find_package(Libuv 1.28.0 REQUIRED)
find_package(Lpeg REQUIRED)
-find_package(Treesitter 0.23.0 REQUIRED)
+find_package(Treesitter 0.24.0 REQUIRED)
find_package(Unibilium 2.0 REQUIRED)
find_package(UTF8proc REQUIRED)
@@ -49,7 +49,7 @@ if(ENABLE_LIBINTL)
endif()
if(ENABLE_WASMTIME)
- find_package(Wasmtime 25.0.1 EXACT REQUIRED)
+ find_package(Wasmtime 25.0.2 EXACT REQUIRED)
target_link_libraries(main_lib INTERFACE wasmtime)
target_compile_definitions(nvim_bin PRIVATE HAVE_WASMTIME)
endif()
@@ -308,7 +308,6 @@ set(GENERATOR_C_GRAMMAR ${GENERATOR_DIR}/c_grammar.lua)
set(GENERATOR_HASHY ${GENERATOR_DIR}/hashy.lua)
set(GENERATOR_PRELOAD ${GENERATOR_DIR}/preload.lua)
set(HEADER_GENERATOR ${GENERATOR_DIR}/gen_declarations.lua)
-set(OPTIONS_ENUM_GENERATOR ${GENERATOR_DIR}/gen_options_enum.lua)
set(OPTIONS_GENERATOR ${GENERATOR_DIR}/gen_options.lua)
# GENERATED_DIR and GENERATED_INCLUDES_DIR
@@ -687,16 +686,11 @@ add_custom_command(OUTPUT ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP}
DEPENDS ${LUA_GEN_DEPS} ${EVENTS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/auevents.lua
)
-add_custom_command(OUTPUT ${GENERATED_OPTIONS}
- COMMAND ${LUA_GEN} ${OPTIONS_GENERATOR} ${GENERATED_OPTIONS}
+add_custom_command(OUTPUT ${GENERATED_OPTIONS} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP}
+ COMMAND ${LUA_GEN} ${OPTIONS_GENERATOR} ${GENERATED_OPTIONS} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP}
DEPENDS ${LUA_GEN_DEPS} ${OPTIONS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/options.lua
)
-add_custom_command(OUTPUT ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP}
- COMMAND ${LUA_GEN} ${OPTIONS_ENUM_GENERATOR} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP}
- DEPENDS ${LUA_GEN_DEPS} ${OPTIONS_ENUM_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/options.lua
-)
-
# NVIM_GENERATED_FOR_SOURCES and NVIM_GENERATED_FOR_HEADERS must be mutually exclusive.
foreach(hfile ${NVIM_GENERATED_FOR_HEADERS})
list(FIND NVIM_GENERATED_FOR_SOURCES ${hfile} hfile_idx)
@@ -750,6 +744,7 @@ add_custom_target(nvim_runtime_deps)
if(WIN32)
# Copy DLLs and third-party tools to bin/ and install them along with nvim
add_custom_command(TARGET nvim_runtime_deps
+ POST_BUILD
COMMAND ${CMAKE_COMMAND} -E ${COPY_DIRECTORY} ${PROJECT_BINARY_DIR}/windows_runtime_deps/
${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
install(DIRECTORY ${PROJECT_BINARY_DIR}/windows_runtime_deps/
@@ -791,7 +786,10 @@ file(MAKE_DIRECTORY ${BINARY_LIB_DIR})
# install treesitter parser if bundled
if(EXISTS ${DEPS_PREFIX}/lib/nvim/parser)
- add_custom_command(TARGET nvim_runtime_deps COMMAND ${CMAKE_COMMAND} -E ${COPY_DIRECTORY} ${DEPS_PREFIX}/lib/nvim/parser ${BINARY_LIB_DIR}/parser)
+ add_custom_command(
+ TARGET nvim_runtime_deps
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E ${COPY_DIRECTORY} ${DEPS_PREFIX}/lib/nvim/parser ${BINARY_LIB_DIR}/parser)
endif()
install(DIRECTORY ${BINARY_LIB_DIR}
diff --git a/src/nvim/api/deprecated.c b/src/nvim/api/deprecated.c
index 6376011106..b38a7d4173 100644
--- a/src/nvim/api/deprecated.c
+++ b/src/nvim/api/deprecated.c
@@ -533,7 +533,7 @@ void nvim_set_option(uint64_t channel_id, String name, Object value, Error *err)
FUNC_API_SINCE(1)
FUNC_API_DEPRECATED_SINCE(11)
{
- set_option_to(channel_id, NULL, kOptReqGlobal, name, value, err);
+ set_option_to(channel_id, NULL, kOptScopeGlobal, name, value, err);
}
/// Gets the global value of an option.
@@ -546,7 +546,7 @@ Object nvim_get_option(String name, Error *err)
FUNC_API_SINCE(1)
FUNC_API_DEPRECATED_SINCE(11)
{
- return get_option_from(NULL, kOptReqGlobal, name, err);
+ return get_option_from(NULL, kOptScopeGlobal, name, err);
}
/// Gets a buffer option value
@@ -566,7 +566,7 @@ Object nvim_buf_get_option(Buffer buffer, String name, Error *err)
return (Object)OBJECT_INIT;
}
- return get_option_from(buf, kOptReqBuf, name, err);
+ return get_option_from(buf, kOptScopeBuf, name, err);
}
/// Sets a buffer option value. Passing `nil` as value deletes the option (only
@@ -588,7 +588,7 @@ void nvim_buf_set_option(uint64_t channel_id, Buffer buffer, String name, Object
return;
}
- set_option_to(channel_id, buf, kOptReqBuf, name, value, err);
+ set_option_to(channel_id, buf, kOptScopeBuf, name, value, err);
}
/// Gets a window option value
@@ -608,7 +608,7 @@ Object nvim_win_get_option(Window window, String name, Error *err)
return (Object)OBJECT_INIT;
}
- return get_option_from(win, kOptReqWin, name, err);
+ return get_option_from(win, kOptScopeWin, name, err);
}
/// Sets a window option value. Passing `nil` as value deletes the option (only
@@ -630,26 +630,32 @@ void nvim_win_set_option(uint64_t channel_id, Window window, String name, Object
return;
}
- set_option_to(channel_id, win, kOptReqWin, name, value, err);
+ set_option_to(channel_id, win, kOptScopeWin, name, value, err);
}
/// Gets the value of a global or local (buffer, window) option.
///
/// @param[in] from Pointer to buffer or window for local option value.
-/// @param req_scope Requested option scope. See OptReqScope in option.h.
+/// @param req_scope Requested option scope. See OptScope in option.h.
/// @param name The option name.
/// @param[out] err Details of an error that may have occurred.
///
/// @return the option value.
-static Object get_option_from(void *from, OptReqScope req_scope, String name, Error *err)
+static Object get_option_from(void *from, OptScope req_scope, String name, Error *err)
{
VALIDATE_S(name.size > 0, "option name", "<empty>", {
return (Object)OBJECT_INIT;
});
- OptVal value = get_option_value_strict(find_option(name.data), req_scope, from, err);
- if (ERROR_SET(err)) {
- return (Object)OBJECT_INIT;
+ OptIndex opt_idx = find_option(name.data);
+ OptVal value = NIL_OPTVAL;
+
+ if (option_has_scope(opt_idx, req_scope)) {
+ value = get_option_value_for(opt_idx, req_scope == kOptScopeGlobal ? OPT_GLOBAL : OPT_LOCAL,
+ req_scope, from, err);
+ if (ERROR_SET(err)) {
+ return (Object)OBJECT_INIT;
+ }
}
VALIDATE_S(value.type != kOptValTypeNil, "option name", name.data, {
@@ -662,11 +668,11 @@ static Object get_option_from(void *from, OptReqScope req_scope, String name, Er
/// Sets the value of a global or local (buffer, window) option.
///
/// @param[in] to Pointer to buffer or window for local option value.
-/// @param req_scope Requested option scope. See OptReqScope in option.h.
+/// @param req_scope Requested option scope. See OptScope in option.h.
/// @param name The option name.
/// @param value New option value.
/// @param[out] err Details of an error that may have occurred.
-static void set_option_to(uint64_t channel_id, void *to, OptReqScope req_scope, String name,
+static void set_option_to(uint64_t channel_id, void *to, OptScope req_scope, String name,
Object value, Error *err)
{
VALIDATE_S(name.size > 0, "option name", "<empty>", {
@@ -689,12 +695,12 @@ static void set_option_to(uint64_t channel_id, void *to, OptReqScope req_scope,
return;
});
- int attrs = get_option_attrs(opt_idx);
// For global-win-local options -> setlocal
// For win-local options -> setglobal and setlocal (opt_flags == 0)
- const int opt_flags = (req_scope == kOptReqWin && !(attrs & SOPT_GLOBAL))
- ? 0
- : (req_scope == kOptReqGlobal) ? OPT_GLOBAL : OPT_LOCAL;
+ const int opt_flags
+ = (req_scope == kOptScopeWin && !option_has_scope(opt_idx, kOptScopeGlobal))
+ ? 0
+ : ((req_scope == kOptScopeGlobal) ? OPT_GLOBAL : OPT_LOCAL);
WITH_SCRIPT_CONTEXT(channel_id, {
set_option_value_for(name.data, opt_idx, optval, opt_flags, req_scope, to, err);
diff --git a/src/nvim/api/extmark.c b/src/nvim/api/extmark.c
index 7786c30624..c94b8df9ea 100644
--- a/