Patches backported from https://github.com/neovim/neovim/pull/11890
---
src/nvim/eval/typval.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: neovim-0.4.3/src/nvim/eval/typval.h
===================================================================
--- neovim-0.4.3.orig/src/nvim/eval/typval.h
+++ neovim-0.4.3/src/nvim/eval/typval.h
@@ -33,7 +33,7 @@ typedef double float_T;
enum { DO_NOT_FREE_CNT = (INT_MAX / 2) };
/// Additional values for tv_list_alloc() len argument
-enum {
+enum ListLenSpecials {
/// List length is not known in advance
///
/// To be used when there is neither a way to know how many elements will be
@@ -49,7 +49,7 @@ enum {
///
/// To be used when it looks impractical to determine list length.
kListLenMayKnow = -3,
-} ListLenSpecials;
+};
/// Maximal possible value of varnumber_T variable
#define VARNUMBER_MAX INT64_MAX
Index: neovim-0.4.3/src/nvim/viml/parser/expressions.h
===================================================================
--- neovim-0.4.3.orig/src/nvim/viml/parser/expressions.h
+++ neovim-0.4.3/src/nvim/viml/parser/expressions.h
@@ -326,7 +326,7 @@ struct expr_ast_node {
} data;
};
-enum {
+enum ExprParserFlags {
/// Allow multiple expressions in a row: e.g. for :echo
///
/// Parser will still parse only one of them though.
@@ -345,7 +345,7 @@ enum {
// viml_expressions_parser.c, nvim_parse_expression() flags parsing
// alongside with its documentation and flag sets in check_parsing()
// function in expressions parser functional and unit tests.
-} ExprParserFlags;
+};
/// AST error definition
typedef struct {
Index: neovim-0.4.3/src/nvim/getchar.h
===================================================================
--- neovim-0.4.3.orig/src/nvim/getchar.h
+++ neovim-0.4.3/src/nvim/getchar.h
@@ -10,12 +10,12 @@
/// Values for "noremap" argument of ins_typebuf()
///
/// Also used for map->m_noremap and menu->noremap[].
-enum {
+enum RemapValues {
REMAP_YES = 0, ///< Allow remapping.
REMAP_NONE = -1, ///< No remapping.
REMAP_SCRIPT = -2, ///< Remap script-local mappings only.
REMAP_SKIP = -3, ///< No remapping for first char.
-} RemapValues;
+};
// Argument for flush_buffers().
typedef enum {
Index: neovim-0.4.3/src/nvim/msgpack_rpc/channel.h
===================================================================
--- neovim-0.4.3.orig/src/nvim/msgpack_rpc/channel.h
+++ neovim-0.4.3/src/nvim/msgpack_rpc/channel.h
@@ -15,7 +15,7 @@
/// HACK: os/input.c drains this queue immediately before blocking for input.
/// Events on this queue are async-safe, but they need the resolved state
/// of os_inchar(), so they are processed "just-in-time".
-MultiQueue *ch_before_blocking_events;
+EXTERN MultiQueue *ch_before_blocking_events INIT(= NULL);
#ifdef INCLUDE_GENERATED_DECLARATIONS
Index: neovim-0.4.3/src/nvim/os/input.c
===================================================================
--- neovim-0.4.3.orig/src/nvim/os/input.c
+++ neovim-0.4.3/src/nvim/os/input.c
@@ -7,13 +7,18 @@
#include <uv.h>
+// This needs to be included before we define EXTERN
+#include "nvim/ui.h"
+#include "nvim/msgpack_rpc/channel.h"
+
+#undef EXTERN
+#define EXTERN
#include "nvim/api/private/defs.h"
#include "nvim/os/input.h"
#include "nvim/event/loop.h"
#include "nvim/event/rstream.h"
#include "nvim/ascii.h"
#include "nvim/vim.h"
-#include "nvim/ui.h"
#include "nvim/memory.h"
#include "nvim/keymap.h"
#include "nvim/mbyte.h"
@@ -23,7 +28,6 @@
#include "nvim/main.h"
#include "nvim/misc1.h"
#include "nvim/state.h"
-#include "nvim/msgpack_rpc/channel.h"
#define READ_BUFFER_SIZE 0xfff
#define INPUT_BUFFER_SIZE (READ_BUFFER_SIZE * 4)
Index: neovim-0.4.3/src/nvim/channel.c
===================================================================
--- neovim-0.4.3.orig/src/nvim/channel.c
+++ neovim-0.4.3/src/nvim/channel.c
@@ -15,7 +15,6 @@
#include "nvim/ascii.h"
static bool did_stdio = false;
-PMap(uint64_t) *channels = NULL;
/// next free id for a job or rpc channel
/// 1 is reserved for stdio channel
Index: neovim-0.4.3/src/nvim/channel.h
===================================================================
--- neovim-0.4.3.orig/src/nvim/channel.h
+++ neovim-0.4.3/src/nvim/channel.h
@@ -85,7 +85,7 @@ struct Channel {
bool callback_scheduled;
};
-EXTERN PMap(uint64_t) *channels;
+EXTERN PMap(uint64_t) *channels INIT(= NULL);
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "channel.h.generated.h"
Index: neovim-0.4.3/CMakeLists.txt
===================================================================
--- neovim-0.4.3.orig/CMakeLists.txt
+++ neovim-0.4.3/CMakeLists.txt
@@ -312,6 +312,11 @@ if(UNIX)
elseif(HAS_FSTACK_PROTECTOR_FLAG)
add_compile_options(-fstack-protector --param ssp-buffer-size=4)
endif()
+
+ check_c_compiler_flag(-fno-common HAVE_FNO_COMMON)
+ if (HAVE_FNO_COMMON)
+ add_compile_options(-fno-common)
+ endif()
endif()
check_c_compiler_flag(-fdiagnostics-color=auto HAS_DIAG_COLOR_FLAG)