local helpers = require('test.functional.helpers') local Screen = require('test.functional.ui.screen') local os = require('os') local clear, feed = helpers.clear, helpers.feed local execute, request, eq = helpers.execute, helpers.request, helpers.eq describe('color scheme compatibility', function() before_each(function() clear() end) it('t_Co is set to 256 by default', function() eq('256', request('vim_eval', '&t_Co')) request('vim_set_option', 't_Co', '88') eq('88', request('vim_eval', '&t_Co')) end) end) describe('manual syntax highlight', function() -- When using manual syntax highlighting, it should be preserved even when -- switching buffers... bug did only occur without :set hidden -- Ref: vim patch 7.4.1236 local screen before_each(function() clear() screen = Screen.new(20,5) screen:attach() --ignore highligting of ~-lines screen:set_default_attr_ignore( {{bold=true, foreground=Screen.colors.Blue}} ) --syntax highlight for vimcscripts "echo" screen:set_default_attr_ids( {[1] = {bold=true, foreground=Screen.colors.Brown}} ) end) after_each(function() screen:detach() os.remove('Xtest-functional-ui-highlight.tmp.vim') end) -- test with "set hidden" even if the bug did not occur this way it("works with buffer switch and 'hidden'", function() execute('e tmp1.vim') execute('e Xtest-functional-ui-highlight.tmp.vim') execute('filetype on') execute('syntax manual') execute('set ft=vim') execute('set syntax=ON') feed('iecho 10') execute('set hidden') execute('w') execute('bn') execute('bp') screen:expect([[ {1:^echo} 1 | ~ | ~ | ~ | 0') execute('set nohidden') execute('w') execute('bn') execute('bp') screen:expect([[ {1:^echo} 1 | ~ | ~ | ~ | j') screen:expect([[ {2:|} {2:|} | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | {2:[No Name] [No Name] [No Name] }| ^ | ~ | ~ | ~ | ~ | {1:[No Name] }| | ]]) -- note that when moving to a window with small width nvim will increase -- the width of the new active window at the expense of a inactive window -- (upstream vim has the same behavior) feed('kl') screen:expect([[ {2:|}^ {2:|} | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | {2:[No Name] }{1:[No Name] }{2:[No Name] }| | ~ | ~ | ~ | ~ | {2:[No Name] }| | ]]) feed('l') screen:expect([[ {2:|} {2:|}^ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | {2:[No Name] [No Name] }{1:[No Name] }| | ~ | ~ | ~ | ~ | {2:[No Name] }| | ]]) feed('hh') screen:expect([[ ^ {2:|} {2:|} | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | ~ {2:|}~ {2:|}~ | {1:[No Name] }{2:[No Name] [No Name] }| | ~ | ~ | ~ | ~ | {2:[No Name] }| | ]]) end) it('insert mode text', function() feed('i') screen:expect([[ ^ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | {1:-- INSERT --} | ]], {[1] = {bold = true}}) end) it('end of file markers', function() screen:expect([[ ^ | {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| {1:~ }| | ]], {[1] = {bold = true, foreground = hlgroup_colors.NonText}}) end) it('"wait return" text', function() feed(':ls') screen:expect([[ ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | :ls | 1 %a "[No Name]" line 1 | {1:Press ENTER or type command to continue}^ | ]], {[1] = {bold = true, foreground = hlgroup_colors.Question}}) feed('') -- skip the "Press ENTER..." state or tests will hang end) it('can be cleared and linked to other highlight groups', function() execute('highlight clear ModeMsg') feed('i') screen:expect([[ ^ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | -- INSERT -- | ]], {}) feed('') execute('highlight CustomHLGroup guifg=red guibg=green') execute('highlight link ModeMsg CustomHLGroup') feed('i') screen:expect([[ ^ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | {1:-- INSERT --} | ]], {[1] = {foreground = Screen.colors.Red, background = Screen.colors.Green}}) end) end)