From c5f5f427c6f8d1b4136bf41171f8f0980561080e Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Wed, 26 Oct 2016 15:20:00 +0200 Subject: api: api_info()['version'] API level is disconnected from NVIM version. The API metadata holds the current API level, and the lowest backwards-compatible level supported by this instance. Release 0.1.6 is the first release that reports the Nvim version and API level. metadata['version'] = { major: 0, minor: 1, patch: 6, api_level: 1, api_compatible: 0, api_prerelease: false, } The API level may remain unchanged across Nvim releases if the API has not changed. When changing the API, - set NVIM_API_PRERELEASE to true - increment NVIM_API_LEVEL (at most once per Nvim version) - adjust NVIM_API_LEVEL_COMPAT if backwards-compatibility was broken api_level_0.mpack was generated from Nvim 0.1.5 with: nvim --api-info --- src/nvim/api/private/helpers.c | 15 ++------------- src/nvim/version.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 7fda2802c8..208c3b53c8 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -18,9 +18,9 @@ #include "nvim/map.h" #include "nvim/option.h" #include "nvim/option_defs.h" +#include "nvim/version.h" #include "nvim/eval/typval_encode.h" #include "nvim/lib/kvec.h" -#include "auto/versiondef.h" /// Helper structure for vim_to_object typedef struct { @@ -764,10 +764,10 @@ Dictionary api_metadata(void) static Dictionary metadata = ARRAY_DICT_INIT; if (!metadata.size) { + PUT(metadata, "version", DICTIONARY_OBJ(version_dict())); init_function_metadata(&metadata); init_error_type_metadata(&metadata); init_type_metadata(&metadata); - init_api_level_metadata(&metadata); } return copy_object(DICTIONARY_OBJ(metadata)).data.dictionary; @@ -827,17 +827,6 @@ static void init_type_metadata(Dictionary *metadata) PUT(*metadata, "types", DICTIONARY_OBJ(types)); } -static void init_api_level_metadata(Dictionary *metadata) -{ - Dictionary version = ARRAY_DICT_INIT; - PUT(version, "current", INTEGER_OBJ(NVIM_API_CURRENT)); - PUT(version, "compatibility", INTEGER_OBJ(NVIM_API_COMPATIBILITY)); -#ifdef NVIM_API_PRERELEASE - PUT(version, "prerelease", BOOLEAN_OBJ(true)); -#endif - - PUT(*metadata, "api_level", DICTIONARY_OBJ(version)); -} /// Creates a deep clone of an object Object copy_object(Object obj) diff --git a/src/nvim/version.c b/src/nvim/version.c index 498afa9656..7ab8c84569 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -7,6 +7,7 @@ #include #include +#include "nvim/api/private/helpers.h" #include "nvim/vim.h" #include "nvim/ascii.h" #include "nvim/iconv.h" @@ -2514,6 +2515,17 @@ bool has_vim_patch(int n) return false; } +Dictionary version_dict(void) { + Dictionary d = ARRAY_DICT_INIT; + PUT(d, "major", INTEGER_OBJ(NVIM_VERSION_MAJOR)); + PUT(d, "minor", INTEGER_OBJ(NVIM_VERSION_MINOR)); + PUT(d, "patch", INTEGER_OBJ(NVIM_VERSION_PATCH)); + PUT(d, "api_level", INTEGER_OBJ(NVIM_API_LEVEL)); + PUT(d, "api_compatible", INTEGER_OBJ(NVIM_API_LEVEL_COMPAT)); + PUT(d, "api_prerelease", BOOLEAN_OBJ(NVIM_API_PRERELEASE)); + return d; +} + void ex_version(exarg_T *eap) { // Ignore a ":version 9.99" command. -- cgit