aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/legacy/088_conceal_tabs_spec.lua117
1 files changed, 117 insertions, 0 deletions
diff --git a/test/functional/legacy/088_conceal_tabs_spec.lua b/test/functional/legacy/088_conceal_tabs_spec.lua
new file mode 100644
index 0000000000..78cdf433fb
--- /dev/null
+++ b/test/functional/legacy/088_conceal_tabs_spec.lua
@@ -0,0 +1,117 @@
+-- Tests for correct display (cursor column position) with +conceal and
+-- tabulators.
+
+local helpers = require('test.functional.helpers')
+local feed, insert, eq, eval = helpers.feed, helpers.insert, helpers.eq, helpers.eval
+local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
+
+describe('cursor and column position with conceal and tabulators', function()
+ setup(clear)
+
+ it('are working', function()
+ insert([[
+ start:
+ .concealed. text
+ |concealed| text
+
+ .concealed. text
+ |concealed| text
+
+ .a. .b. .c. .d.
+ |a| |b| |c| |d|]])
+
+ -- Conceal settings.
+ execute('set conceallevel=2')
+ execute('set concealcursor=nc')
+ execute('syntax match test /|/ conceal')
+ -- Save current cursor position. Only works in <expr> mode, can't be used
+ -- with :normal because it moves the cursor to the command line. Thanks to
+ -- ZyX <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
+ execute('let positions = []')
+ execute([[nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"]])
+ -- Start test.
+ execute('/^start:')
+ feed('ztj')
+ feed('GG')
+ -- We should end up in the same column when running these commands on the
+ -- two lines.
+ execute('normal ft')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ feed('0j')
+ feed('GG')
+ execute('normal ft')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ feed('j0j')
+ feed('GG')
+ -- Same for next test block.
+ execute('normal ft')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ feed('0j')
+ feed('GG')
+ execute('normal ft')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ feed('0j0j')
+ feed('GG')
+ -- And check W with multiple tabs and conceals in a line.
+ feed('W')
+ feed('GG')
+ feed('W')
+ feed('GG')
+ feed('W')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ feed('0j')
+ feed('GG')
+ feed('W')
+ feed('GG')
+ feed('W')
+ feed('GG')
+ feed('W')
+ feed('GG')
+ feed('$')
+ feed('GG')
+ execute('set lbr')
+ feed('$')
+ feed('GG')
+ -- Display result.
+ execute([[call append('$', 'end:')]])
+ execute([[call append('$', positions)]])
+ execute('0,/^end/-1 d')
+
+ -- Assert buffer contents.
+ expect([[
+ end:
+ 2:1
+ 2:17
+ 2:20
+ 3:1
+ 3:17
+ 3:20
+ 5:8
+ 5:25
+ 5:28
+ 6:8
+ 6:25
+ 6:28
+ 8:1
+ 8:9
+ 8:17
+ 8:25
+ 8:27
+ 9:1
+ 9:9
+ 9:17
+ 9:25
+ 9:26
+ 9:26]])
+ end)
+end)