Blob Blame History Raw
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)