mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 13:15:09 -07:00
Merge pull request #9021 from bfredl/embed_fix
startup: don't erase screen on `:hi Normal` during startup (for non-newgrid UIs)
This commit is contained in:
commit
e55ebae373
@ -6884,7 +6884,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
|
|||||||
// "fg", which have been changed now.
|
// "fg", which have been changed now.
|
||||||
highlight_attr_set_all();
|
highlight_attr_set_all();
|
||||||
|
|
||||||
if (!ui_is_external(kUINewgrid) && starting != NO_SCREEN) {
|
if (!ui_is_external(kUINewgrid) && starting == 0) {
|
||||||
// Older UIs assume that we clear the screen after normal group is
|
// Older UIs assume that we clear the screen after normal group is
|
||||||
// changed
|
// changed
|
||||||
ui_refresh();
|
ui_refresh();
|
||||||
|
@ -2,11 +2,12 @@ local helpers = require('test.functional.helpers')(after_each)
|
|||||||
local Screen = require('test.functional.ui.screen')
|
local Screen = require('test.functional.ui.screen')
|
||||||
|
|
||||||
local feed = helpers.feed
|
local feed = helpers.feed
|
||||||
|
local eq = helpers.eq
|
||||||
local spawn, set_session = helpers.spawn, helpers.set_session
|
local spawn, set_session = helpers.spawn, helpers.set_session
|
||||||
local nvim_prog, nvim_set = helpers.nvim_prog, helpers.nvim_set
|
local nvim_prog, nvim_set = helpers.nvim_prog, helpers.nvim_set
|
||||||
local merge_args, prepend_argv = helpers.merge_args, helpers.prepend_argv
|
local merge_args, prepend_argv = helpers.merge_args, helpers.prepend_argv
|
||||||
|
|
||||||
describe('--embed UI on startup', function()
|
local function test_embed(ext_newgrid)
|
||||||
local session, screen
|
local session, screen
|
||||||
local function startup(...)
|
local function startup(...)
|
||||||
local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE',
|
local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE',
|
||||||
@ -17,7 +18,7 @@ describe('--embed UI on startup', function()
|
|||||||
|
|
||||||
-- attach immediately after startup, for early UI
|
-- attach immediately after startup, for early UI
|
||||||
screen = Screen.new(60, 8)
|
screen = Screen.new(60, 8)
|
||||||
screen:attach()
|
screen:attach{ext_newgrid=ext_newgrid}
|
||||||
screen:set_default_attr_ids({
|
screen:set_default_attr_ids({
|
||||||
[1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
[1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||||
[2] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
[2] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||||
@ -55,7 +56,7 @@ describe('--embed UI on startup', function()
|
|||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("doesn't erase output when setting colors", function()
|
it("doesn't erase output when setting color scheme", function()
|
||||||
startup('--cmd', 'echoerr "foo"', '--cmd', 'color default', '--cmd', 'echoerr "bar"')
|
startup('--cmd', 'echoerr "foo"', '--cmd', 'color default', '--cmd', 'echoerr "bar"')
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
|
|
|
|
||||||
@ -68,4 +69,23 @@ describe('--embed UI on startup', function()
|
|||||||
{2:Press ENTER or type command to continue}^ |
|
{2:Press ENTER or type command to continue}^ |
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
end)
|
|
||||||
|
it("doesn't erase output when setting Normal colors", function()
|
||||||
|
startup('--cmd', 'echoerr "foo"', '--cmd', 'hi Normal guibg=Green', '--cmd', 'echoerr "bar"')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
Error detected while processing pre-vimrc command line: |
|
||||||
|
foo |
|
||||||
|
bar |
|
||||||
|
Press ENTER or type command to continue^ |
|
||||||
|
]], condition=function()
|
||||||
|
eq(Screen.colors.Green, screen.default_colors.rgb_bg)
|
||||||
|
end}
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe('--embed UI on startup (ext_newgrid=true)', function() test_embed(true) end)
|
||||||
|
describe('--embed UI on startup (ext_newgrid=false)', function() test_embed(false) end)
|
||||||
|
@ -183,7 +183,7 @@ end
|
|||||||
|
|
||||||
function Screen:attach(options)
|
function Screen:attach(options)
|
||||||
if options == nil then
|
if options == nil then
|
||||||
options = {rgb=true}
|
options = {}
|
||||||
end
|
end
|
||||||
if options.ext_newgrid == nil then
|
if options.ext_newgrid == nil then
|
||||||
options.ext_newgrid = true
|
options.ext_newgrid = true
|
||||||
@ -191,6 +191,11 @@ function Screen:attach(options)
|
|||||||
self._options = options
|
self._options = options
|
||||||
self._clear_attrs = (options.ext_newgrid and {{},{}}) or {}
|
self._clear_attrs = (options.ext_newgrid and {{},{}}) or {}
|
||||||
uimeths.attach(self._width, self._height, options)
|
uimeths.attach(self._width, self._height, options)
|
||||||
|
if self._options.rgb == nil then
|
||||||
|
-- nvim defaults to rgb=true internally,
|
||||||
|
-- simplify test code by doing the same.
|
||||||
|
self._options.rgb = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Screen:detach()
|
function Screen:detach()
|
||||||
@ -641,7 +646,14 @@ function Screen:_handle_visual_bell()
|
|||||||
self.visual_bell = true
|
self.visual_bell = true
|
||||||
end
|
end
|
||||||
|
|
||||||
function Screen:_handle_default_colors_set()
|
function Screen:_handle_default_colors_set(rgb_fg, rgb_bg, rgb_sp, cterm_fg, cterm_bg)
|
||||||
|
self.default_colors = {
|
||||||
|
rgb_fg=rgb_fg,
|
||||||
|
rgb_bg=rgb_bg,
|
||||||
|
rgb_sp=rgb_sp,
|
||||||
|
cterm_fg=cterm_fg,
|
||||||
|
cterm_bg=cterm_bg
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function Screen:_handle_update_fg(fg)
|
function Screen:_handle_update_fg(fg)
|
||||||
|
Loading…
Reference in New Issue
Block a user