diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-01-24 12:27:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-24 12:27:38 +0800 |
commit | c8a27bae3faeaca137e5f67b1b052ce0f0225b36 (patch) | |
tree | 15b6e73e1e0d8ee6235c5c4365491e13cc13d812 /src/nvim/generators/gen_options.lua | |
parent | 65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b (diff) | |
download | rneovim-c8a27bae3faeaca137e5f67b1b052ce0f0225b36.tar.gz rneovim-c8a27bae3faeaca137e5f67b1b052ce0f0225b36.tar.bz2 rneovim-c8a27bae3faeaca137e5f67b1b052ce0f0225b36.zip |
fix(options): use a union for def_val (#27169)
Problem:
APIs get wrong boolean option default values on big-endian platforms.
Solution:
Use a union for def_val.
Cannot use OptVal or OptValData yet as it needs to have the same types
as option variables.
Diffstat (limited to 'src/nvim/generators/gen_options.lua')
-rw-r--r-- | src/nvim/generators/gen_options.lua | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/src/nvim/generators/gen_options.lua b/src/nvim/generators/gen_options.lua index 2fd11e4c58..cdb77c4a0c 100644 --- a/src/nvim/generators/gen_options.lua +++ b/src/nvim/generators/gen_options.lua @@ -125,31 +125,27 @@ local function get_cond(c, base_string) return cond_string end -local value_dumpers = { - ['function'] = function(v) - return v() - end, - string = cstr, - boolean = function(v) - return v and 'true' or 'false' - end, - number = function(v) - return ('%iL'):format(v) - end, - ['nil'] = function(_) - return '0' - end, -} - -local get_value = function(v) - return '(void *) ' .. value_dumpers[type(v)](v) -end - local get_defaults = function(d, n) if d == nil then error("option '" .. n .. "' should have a default value") end - return get_value(d) + + local value_dumpers = { + ['function'] = function(v) + return v() + end, + string = function(v) + return '.string=' .. cstr(v) + end, + boolean = function(v) + return '.boolean=' .. (v and 'true' or 'false') + end, + number = function(v) + return ('.number=%iL'):format(v) + end, + } + + return value_dumpers[type(d)](d) end --- @type {[1]:string,[2]:string}[] @@ -213,11 +209,11 @@ local function dump_option(i, o) if o.defaults.condition then w(get_cond(o.defaults.condition)) end - w(' .def_val=' .. get_defaults(o.defaults.if_true, o.full_name)) + w(' .def_val' .. get_defaults(o.defaults.if_true, o.full_name)) if o.defaults.condition then if o.defaults.if_false then w('#else') - w(' .def_val=' .. get_defaults(o.defaults.if_false, o.full_name)) + w(' .def_val' .. get_defaults(o.defaults.if_false, o.full_name)) end w('#endif') end |