mirror of
https://github.com/neovim/neovim.git
synced 2026-02-20 09:19:43 +10:00
highlight: show "hi Group" message correctly when not using the screen
ext_message doesn't set msg_col. Add a space and let client deal with wrapping. When using silent redirect show the unwrapped message form. Removed check is already part of msg_advance()
This commit is contained in:
@@ -5,6 +5,7 @@ local eval = helpers.eval
|
||||
local eq = helpers.eq
|
||||
local command = helpers.command
|
||||
local set_method_error = helpers.set_method_error
|
||||
local meths = helpers.meths
|
||||
|
||||
|
||||
describe('ui/ext_messages', function()
|
||||
@@ -332,6 +333,22 @@ describe('ui/ext_messages', function()
|
||||
}}
|
||||
end)
|
||||
|
||||
it(':hi Group output', function()
|
||||
feed(':hi ErrorMsg<cr>')
|
||||
screen:expect{grid=[[
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]], messages={
|
||||
{content = {{"\nErrorMsg " }, {"xxx", 2}, {" "},
|
||||
{"ctermfg=", 5 }, { "15 " }, { "ctermbg=", 5 }, { "1 " },
|
||||
{"guifg=", 5 }, { "White " }, { "guibg=", 5 }, { "Red" }},
|
||||
kind = ""}
|
||||
}}
|
||||
end)
|
||||
|
||||
it("doesn't crash with column adjustment #10069", function()
|
||||
feed(':let [x,y] = [1,2]<cr>')
|
||||
feed(':let x y<cr>')
|
||||
@@ -786,6 +803,7 @@ describe('ui/builtin messages', function()
|
||||
[2] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||
[3] = {bold = true, reverse = true},
|
||||
[4] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||
[5] = {foreground = Screen.colors.Blue1},
|
||||
})
|
||||
end)
|
||||
|
||||
@@ -806,6 +824,38 @@ describe('ui/builtin messages', function()
|
||||
end
|
||||
end}
|
||||
end)
|
||||
|
||||
it(':hi Group output', function()
|
||||
screen:try_resize(70,7)
|
||||
feed(':hi ErrorMsg<cr>')
|
||||
screen:expect([[
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{3: }|
|
||||
:hi ErrorMsg |
|
||||
ErrorMsg {2:xxx} {5:ctermfg=}15 {5:ctermbg=}1 {5:guifg=}White {5:guibg=}Red |
|
||||
{4:Press ENTER or type command to continue}^ |
|
||||
]])
|
||||
|
||||
feed('<cr>')
|
||||
screen:try_resize(30,7)
|
||||
feed(':hi ErrorMsg<cr>')
|
||||
screen:expect([[
|
||||
:hi ErrorMsg |
|
||||
ErrorMsg {2:xxx} {5:ctermfg=}15 |
|
||||
{5:ctermbg=}1 |
|
||||
{5:guifg=}White|
|
||||
{5:guibg=}Red |
|
||||
{4:Press ENTER or type command to}|
|
||||
{4: continue}^ |
|
||||
]])
|
||||
feed('<cr>')
|
||||
|
||||
-- screen size doesn't affect internal output #10285
|
||||
eq('ErrorMsg xxx ctermfg=15 ctermbg=1 guifg=White guibg=Red',
|
||||
meths.command_output("hi ErrorMsg"))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('ui/ext_messages', function()
|
||||
|
||||
@@ -1194,6 +1194,10 @@ function Screen:render(headers, attr_state, preview)
|
||||
return rv
|
||||
end
|
||||
|
||||
local remove_all_metatables = function(item, path)
|
||||
if path[#path] ~= inspect.METATABLE then return item end
|
||||
end
|
||||
|
||||
function Screen:print_snapshot(attrs, ignore)
|
||||
attrs = attrs or self._default_attr_ids
|
||||
if ignore == nil then
|
||||
@@ -1247,8 +1251,8 @@ function Screen:print_snapshot(attrs, ignore)
|
||||
io.stdout:write( "]]"..attrstr)
|
||||
for _, k in ipairs(ext_keys) do
|
||||
if ext_state[k] ~= nil then
|
||||
-- TODO(bfredl): improve formating, remove ext metatables
|
||||
io.stdout:write(", "..k.."="..inspect(ext_state[k]))
|
||||
-- TODO(bfredl): improve formatting
|
||||
io.stdout:write(", "..k.."="..inspect(ext_state[k],{process=remove_all_metatables}))
|
||||
end
|
||||
end
|
||||
print((keys and "}" or ")").."\n")
|
||||
|
||||
Reference in New Issue
Block a user