diff options
| author | Björn Linse <bjorn.linse@gmail.com> | 2016-09-27 16:54:08 +0200 | 
|---|---|---|
| committer | Björn Linse <bjorn.linse@gmail.com> | 2016-10-19 09:06:30 +0200 | 
| commit | caf85b80ae46a921389ee4954b9a38d10dcde3dc (patch) | |
| tree | 6f240f1f8a473be4b11a0526af6c229cb28a9973 /src/nvim/api/private/helpers.c | |
| parent | 9d4fcec7c6b65ef04fd4416b014e96f33b1f708a (diff) | |
| download | rneovim-caf85b80ae46a921389ee4954b9a38d10dcde3dc.tar.gz rneovim-caf85b80ae46a921389ee4954b9a38d10dcde3dc.tar.bz2 rneovim-caf85b80ae46a921389ee4954b9a38d10dcde3dc.zip | |
api: move verbatim c code out of gendispatch.lua and into c files
Remove max_fname_len check, which caused false successful lookups,
and was an optimization for a very rare case.
Diffstat (limited to 'src/nvim/api/private/helpers.c')
| -rw-r--r-- | src/nvim/api/private/helpers.c | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index d80ee7dc67..c0ee735d1a 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -7,6 +7,7 @@  #include "nvim/api/private/helpers.h"  #include "nvim/api/private/defs.h"  #include "nvim/api/private/handle.h" +#include "nvim/msgpack_rpc/helpers.h"  #include "nvim/ascii.h"  #include "nvim/vim.h"  #include "nvim/buffer.h" @@ -27,6 +28,7 @@ typedef struct {  #ifdef INCLUDE_GENERATED_DECLARATIONS  # include "api/private/helpers.c.generated.h" +# include "api/private/funcs_metadata.generated.h"  #endif  /// Start block that may cause vimscript exceptions @@ -761,7 +763,7 @@ Dictionary api_metadata(void)    static Dictionary metadata = ARRAY_DICT_INIT;    if (!metadata.size) { -    msgpack_rpc_init_function_metadata(&metadata); +    init_function_metadata(&metadata);      init_error_type_metadata(&metadata);      init_type_metadata(&metadata);    } @@ -769,6 +771,22 @@ Dictionary api_metadata(void)    return copy_object(DICTIONARY_OBJ(metadata)).data.dictionary;  } +static void init_function_metadata(Dictionary *metadata) +{ +  msgpack_unpacked unpacked; +  msgpack_unpacked_init(&unpacked); +  if (msgpack_unpack_next(&unpacked, +                          (const char *)funcs_metadata, +                          sizeof(funcs_metadata), +                          NULL) != MSGPACK_UNPACK_SUCCESS) { +    abort(); +  } +  Object functions; +  msgpack_rpc_to_object(&unpacked.data, &functions); +  msgpack_unpacked_destroy(&unpacked); +  PUT(*metadata, "functions", functions); +} +  static void init_error_type_metadata(Dictionary *metadata)  {    Dictionary types = ARRAY_DICT_INIT; @@ -784,6 +802,7 @@ static void init_error_type_metadata(Dictionary *metadata)    PUT(*metadata, "error_types", DICTIONARY_OBJ(types));  } +  static void init_type_metadata(Dictionary *metadata)  {    Dictionary types = ARRAY_DICT_INIT; | 
