mirror of
https://github.com/neovim/neovim.git
synced 2025-09-15 07:48:18 +00:00
strings: make vim_snprintf handle %d correctly again
This was broken in #9369 (4680ca2
)
This commit is contained in:
@@ -999,7 +999,10 @@ int vim_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap,
|
|||||||
} else if (fmt_spec == 'd') {
|
} else if (fmt_spec == 'd') {
|
||||||
// signed
|
// signed
|
||||||
switch (length_modifier) {
|
switch (length_modifier) {
|
||||||
case '\0':
|
case '\0': {
|
||||||
|
arg = (int)(tvs ? tv_nr(tvs, &arg_idx) : va_arg(ap, int));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'h': {
|
case 'h': {
|
||||||
// char and short arguments are passed as int16_t
|
// char and short arguments are passed as int16_t
|
||||||
arg = (int16_t)(tvs ? tv_nr(tvs, &arg_idx) : va_arg(ap, int));
|
arg = (int16_t)(tvs ? tv_nr(tvs, &arg_idx) : va_arg(ap, int));
|
||||||
@@ -1031,11 +1034,16 @@ int vim_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap,
|
|||||||
} else {
|
} else {
|
||||||
// unsigned
|
// unsigned
|
||||||
switch (length_modifier) {
|
switch (length_modifier) {
|
||||||
case '\0':
|
case '\0': {
|
||||||
|
uarg = (unsigned int)(tvs
|
||||||
|
? tv_nr(tvs, &arg_idx)
|
||||||
|
: va_arg(ap, unsigned int));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'h': {
|
case 'h': {
|
||||||
uarg = (uint16_t)(tvs
|
uarg = (uint16_t)(tvs
|
||||||
? tv_nr(tvs, &arg_idx)
|
? tv_nr(tvs, &arg_idx)
|
||||||
: va_arg(ap, unsigned));
|
: va_arg(ap, unsigned int));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'l': {
|
case 'l': {
|
||||||
|
@@ -20,6 +20,9 @@ describe('Signs', function()
|
|||||||
[6] = {foreground = Screen.colors.Brown},
|
[6] = {foreground = Screen.colors.Brown},
|
||||||
[7] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey},
|
[7] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey},
|
||||||
[8] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
[8] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||||
|
[9] = {bold = true, foreground = Screen.colors.Magenta},
|
||||||
|
[10] = {foreground = Screen.colors.Blue1},
|
||||||
|
[11] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||||
} )
|
} )
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -111,5 +114,45 @@ describe('Signs', function()
|
|||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('can have 32bit sign IDs', function()
|
||||||
|
command('sign define piet text=>> texthl=Search')
|
||||||
|
command('sign place 100000 line=1 name=piet buffer=1')
|
||||||
|
feed(':sign place<cr>')
|
||||||
|
screen:expect([[
|
||||||
|
{1:>>} |
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{4: }|
|
||||||
|
:sign place |
|
||||||
|
{9:--- Signs ---} |
|
||||||
|
{10:Signs for [NULL]:} |
|
||||||
|
line=1 id=100000 name=piet |
|
||||||
|
|
|
||||||
|
{11:Press ENTER or type command to continue}^ |
|
||||||
|
]])
|
||||||
|
|
||||||
|
feed('<cr>')
|
||||||
|
screen:expect([[
|
||||||
|
{1:>>}^ |
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
{2: }{0:~ }|
|
||||||
|
|
|
||||||
|
]])
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user