aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/snippet_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/lua/snippet_spec.lua')
-rw-r--r--test/functional/lua/snippet_spec.lua78
1 files changed, 62 insertions, 16 deletions
diff --git a/test/functional/lua/snippet_spec.lua b/test/functional/lua/snippet_spec.lua
index e981bc6261..413aa93994 100644
--- a/test/functional/lua/snippet_spec.lua
+++ b/test/functional/lua/snippet_spec.lua
@@ -1,15 +1,17 @@
-local helpers = require('test.functional.helpers')(after_each)
-
-local buf_lines = helpers.buf_lines
-local clear = helpers.clear
-local eq = helpers.eq
-local exec_lua = helpers.exec_lua
-local feed = helpers.feed
-local fn = helpers.fn
-local matches = helpers.matches
-local pcall_err = helpers.pcall_err
-local poke_eventloop = helpers.poke_eventloop
-local retry = helpers.retry
+local t = require('test.testutil')
+local n = require('test.functional.testnvim')()
+
+local buf_lines = n.buf_lines
+local clear = n.clear
+local eq = t.eq
+local exec_lua = n.exec_lua
+local feed = n.feed
+local api = n.api
+local fn = n.fn
+local matches = t.matches
+local pcall_err = t.pcall_err
+local poke_eventloop = n.poke_eventloop
+local retry = t.retry
describe('vim.snippet', function()
before_each(function()
@@ -95,9 +97,9 @@ describe('vim.snippet', function()
it('does not jump outside snippet range', function()
test_expand_success({ 'function $1($2)', ' $0', 'end' }, { 'function ()', ' ', 'end' })
- eq(false, exec_lua('return vim.snippet.jumpable(-1)'))
+ eq(false, exec_lua('return vim.snippet.active({ direction = -1 })'))
feed('<Tab><Tab>i')
- eq(false, exec_lua('return vim.snippet.jumpable(1)'))
+ eq(false, exec_lua('return vim.snippet.active( { direction = 1 })'))
end)
it('navigates backwards', function()
@@ -230,7 +232,7 @@ describe('vim.snippet', function()
end)
it('updates snippet state when built-in completion menu is visible', function()
- test_expand_success({ '$1 = function($2)\n$3\nend' }, { ' = function()', '', 'end' })
+ test_expand_success({ '$1 = function($2)\nend' }, { ' = function()', 'end' })
-- Show the completion menu.
feed('<C-n>')
-- Make sure no item is selected.
@@ -238,6 +240,50 @@ describe('vim.snippet', function()
-- Jump forward (the 2nd tabstop).
exec_lua('vim.snippet.jump(1)')
feed('foo')
- eq({ ' = function(foo)', '', 'end' }, buf_lines(0))
+ eq({ ' = function(foo)', 'end' }, buf_lines(0))
+ end)
+
+ it('correctly indents with newlines', function()
+ local curbuf = api.nvim_get_current_buf()
+ test_expand_success(
+ { 'function($2)\n\t$3\nend' },
+ { 'function()', ' ', 'end' },
+ [[
+ vim.opt.sw = 2
+ vim.opt.expandtab = true
+ ]]
+ )
+ api.nvim_buf_set_lines(curbuf, 0, -1, false, {})
+ test_expand_success(
+ { 'function($2)\n$3\nend' },
+ { 'function()', '', 'end' },
+ [[
+ vim.opt.sw = 2
+ vim.opt.expandtab = true
+ ]]
+ )
+ api.nvim_buf_set_lines(curbuf, 0, -1, false, {})
+ test_expand_success(
+ { 'func main() {\n\t$1\n}' },
+ { 'func main() {', '\t', '}' },
+ [[
+ vim.opt.sw = 4
+ vim.opt.ts = 4
+ vim.opt.expandtab = false
+ ]]
+ )
+ api.nvim_buf_set_lines(curbuf, 0, -1, false, {})
+ test_expand_success(
+ { '${1:name} :: ${2}\n${1:name} ${3}= ${0:undefined}' },
+ {
+ 'name :: ',
+ 'name = undefined',
+ },
+ [[
+ vim.opt.sw = 4
+ vim.opt.ts = 4
+ vim.opt.expandtab = false
+ ]]
+ )
end)
end)