aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/syntax_conceal_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/ui/syntax_conceal_spec.lua')
-rw-r--r--test/functional/ui/syntax_conceal_spec.lua328
1 files changed, 328 insertions, 0 deletions
diff --git a/test/functional/ui/syntax_conceal_spec.lua b/test/functional/ui/syntax_conceal_spec.lua
new file mode 100644
index 0000000000..ebfe067bbe
--- /dev/null
+++ b/test/functional/ui/syntax_conceal_spec.lua
@@ -0,0 +1,328 @@
+local helpers = require('test.functional.helpers')
+local Screen = require('test.functional.ui.screen')
+local clear, feed, execute = helpers.clear, helpers.feed, helpers.execute
+local insert = helpers.insert
+
+describe('Screen', function()
+ local screen
+
+ before_each(function()
+ clear()
+ screen = Screen.new(nil,10)
+ screen:attach()
+ screen:set_default_attr_ignore( {{bold=true, foreground=255}} )
+ screen:set_default_attr_ids( {{foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray}} )
+ end)
+
+ after_each(function()
+ screen:detach()
+ end)
+
+ describe("match and conceal", function()
+
+ before_each(function()
+ execute("let &conceallevel=1")
+ end)
+
+ describe("multiple", function()
+ before_each(function()
+ insert([[
+ &&
+ &&
+ &&
+ &&
+ &&
+ &&
+ ]])
+ execute("syn match dAmpersand '[&][&]' conceal cchar=∧")
+ end)
+
+ it("double characters.", function()
+ screen:expect([[
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ ^ |
+ ~ |
+ ~ |
+ :syn match dAmpersand '[&][&]' conceal cchar=∧ |
+ ]])
+ end)
+
+ it('double characters and move the cursor one line up.', function()
+ feed("k")
+ screen:expect([[
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ ^&& |
+ |
+ ~ |
+ ~ |
+ :syn match dAmpersand '[&][&]' conceal cchar=∧ |
+ ]])
+ end)
+
+ it('double characters and move the cursor to the beginning of the file.', function()
+ feed("gg")
+ screen:expect([[
+ ^&& |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ |
+ ~ |
+ ~ |
+ :syn match dAmpersand '[&][&]' conceal cchar=∧ |
+ ]])
+ end)
+
+ it('double characters and move the cursor to the second line in the file.', function()
+ feed("ggj")
+ screen:expect([[
+ {1:∧} |
+ ^&& |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ |
+ ~ |
+ ~ |
+ :syn match dAmpersand '[&][&]' conceal cchar=∧ |
+ ]])
+ end)
+
+ it('double characters and then move the cursor to the beginning of the file and back to the end of the file.', function()
+ feed("ggG")
+ screen:expect([[
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ {1:∧} |
+ ^ |
+ ~ |
+ ~ |
+ :syn match dAmpersand '[&][&]' conceal cchar=∧ |
+ ]])
+ end)
+ end) -- multiple
+
+ it("keyword instances in initially in the document.", function()
+ feed("2ilambda<cr><ESC>")
+ execute("let &conceallevel=1")
+ execute("syn keyword kLambda lambda conceal cchar=λ")
+ screen:expect([[
+ {1:λ} |
+ {1:λ} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :syn keyword kLambda lambda conceal cchar=λ |
+ ]])
+ end) -- Keyword
+
+ describe("regions in the document", function()
+
+ before_each(function()
+ feed("2")
+ insert("<r> a region of text </r>\n")
+ execute("let &conceallevel=1")
+ end)
+
+ it('initially and conceal it.', function()
+ execute("syn region rText start='<r>' end='</r>' conceal cchar=R")
+ screen:expect([[
+ {1:R} |
+ {1:R} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('initially and conceal its start tag and end tag.', function()
+ execute("syn region rText matchgroup=rMatch start='<r>' end='</r>' concealends cchar=-")
+ screen:expect([[
+ {1:-} a region of text {1:-} |
+ {1:-} a region of text {1:-} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('that are nested and conceal the nested region\'s start and end tags.', function()
+ execute("syn region rText contains=rText matchgroup=rMatch start='<r>' end='</r>' concealends cchar=-")
+ insert("<r> A region with <r> a nested <r> nested region.</r> </r> </r>\n")
+ screen:expect([[
+ {1:-} a region of text {1:-} |
+ {1:-} a region of text {1:-} |
+ {1:-} A region with {1:-} a nested {1:-} nested region.{1:-} |
+ {1:-} {1:-} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+ end) -- regions in the document
+
+ describe("a region of text", function()
+ before_each(function()
+ execute("syntax conceal on")
+ feed("2")
+ insert("<r> a region of text </r>\n")
+ execute("syn region rText start='<r>' end='</r>' cchar=-")
+ end)
+
+ it("and turn on implicit concealing", function()
+ screen:expect([[
+ {1:-} |
+ {1:-} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :syn region rText start='<r>' end='</r>' cchar=- |
+ ]])
+ end)
+
+ it("and then turn on, then off, and then back on implicit concealing.", function()
+ execute("syntax conceal off")
+ feed("2")
+ insert("<i> italian text </i>\n")
+ execute("syn region iText start='<i>' end='</i>' cchar=*")
+ screen:expect([[
+ {1:-} |
+ {1:-} |
+ <i> italian text </i> |
+ <i> italian text </i> |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :syn region iText start='<i>' end='</i>' cchar=* |
+ ]])
+ execute("syntax conceal on")
+ execute("syn region iText start='<i>' end='</i>' cchar=*")
+ screen:expect([[
+ {1:-} |
+ {1:-} |
+ {1:*} |
+ {1:*} |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :syn region iText start='<i>' end='</i>' cchar=* |
+ ]])
+ end)
+ end) -- a region of text (implicit concealing)
+ end) -- match and conceal
+
+ describe("let the conceal level be", function()
+ before_each(function()
+ insert("// No Conceal\n")
+ insert('"Conceal without a cchar"\n')
+ insert("+ With cchar\n\n")
+ execute("syn match noConceal '^//.*$'")
+ execute("syn match concealNoCchar '\".\\{-}\"$' conceal")
+ execute("syn match concealWCchar '^+.\\{-}$' conceal cchar=C")
+ end)
+
+ it("0. No concealing.", function()
+ execute("let &conceallevel=0")
+ screen:expect([[
+ // No Conceal |
+ "Conceal without a cchar" |
+ + With cchar |
+ |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :let &conceallevel=0 |
+ ]])
+ end)
+
+ it("1. Conceal using cchar or reference listchars.", function()
+ execute("let &conceallevel=1")
+ screen:expect([[
+ // No Conceal |
+ {1:-} |
+ {1:C} |
+ |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :let &conceallevel=1 |
+ ]])
+ end)
+
+ it("2. Hidden unless cchar is set.", function()
+ execute("let &conceallevel=2")
+ screen:expect([[
+ // No Conceal |
+ |
+ {1:C} |
+ |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :let &conceallevel=2 |
+ ]])
+ end)
+
+ it("3. Hide all concealed text.", function()
+ execute("let &conceallevel=3")
+ screen:expect([[
+ // No Conceal |
+ |
+ |
+ |
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ ~ |
+ :let &conceallevel=3 |
+ ]])
+ end)
+ end) -- conceallevel
+end)