ui: use line-based rather than char-based updates in screen.c

Add ext_newgrid and ext_hlstate extensions. These use predefined
highlights and line-segment based updates, for efficiency and
simplicity.. The ext_hlstate extension in addition allows semantic
identification of builtin and syntax highlights.

Reimplement the old char-based updates in the remote UI layer, for
compatibility. For the moment, this is still the default. The bulitin
TUI uses the new line-based protocol.

cmdline uses curwin cursor position when ext_cmdline is active.
This commit is contained in:
Björn Linse
2018-07-06 14:39:50 +02:00
parent 2134396074
commit 1adb01c120
28 changed files with 979 additions and 576 deletions

View File

@@ -48,13 +48,13 @@ describe('screen', function()
end)
end)
describe('Screen', function()
local function screen_tests(newgrid)
local screen
before_each(function()
clear()
screen = Screen.new()
screen:attach()
screen:attach({rgb=true,ext_newgrid=newgrid})
screen:set_default_attr_ids( {
[0] = {bold=true, foreground=255},
[1] = {bold=true, reverse=true},
@@ -741,4 +741,12 @@ describe('Screen', function()
|
]])
end)
end
describe("Screen (char-based)", function()
screen_tests(false)
end)
describe("Screen (line-based)", function()
screen_tests(true)
end)