aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/generators/gen_options.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-01-24 12:27:38 +0800
committerGitHub <noreply@github.com>2024-01-24 12:27:38 +0800
commitc8a27bae3faeaca137e5f67b1b052ce0f0225b36 (patch)
tree15b6e73e1e0d8ee6235c5c4365491e13cc13d812 /src/nvim/generators/gen_options.lua
parent65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b (diff)
downloadrneovim-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.lua42
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