diff options
author | Gregory Anders <8965202+gpanders@users.noreply.github.com> | 2022-01-04 07:28:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-04 07:28:29 -0700 |
commit | 3fd454bd4a6ceb1989d15cf2d3d5e11d7a253b2d (patch) | |
tree | 1718a362cf49adabd478fe16a6e35335681d8611 /test/functional/lua | |
parent | cc62f3d6cb639abffb1b0b6ce47a481bc67003d2 (diff) | |
download | rneovim-3fd454bd4a6ceb1989d15cf2d3d5e11d7a253b2d.tar.gz rneovim-3fd454bd4a6ceb1989d15cf2d3d5e11d7a253b2d.tar.bz2 rneovim-3fd454bd4a6ceb1989d15cf2d3d5e11d7a253b2d.zip |
feat: filetype.lua (#16600)
Adds a new vim.filetype module that provides support for filetype detection in
Lua.
Diffstat (limited to 'test/functional/lua')
-rw-r--r-- | test/functional/lua/filetype_spec.lua | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/test/functional/lua/filetype_spec.lua b/test/functional/lua/filetype_spec.lua new file mode 100644 index 0000000000..90035d7ecb --- /dev/null +++ b/test/functional/lua/filetype_spec.lua @@ -0,0 +1,100 @@ +local helpers = require('test.functional.helpers')(after_each) +local exec_lua = helpers.exec_lua +local eq = helpers.eq +local clear = helpers.clear + +describe('vim.filetype', function() + before_each(function() + clear() + + exec_lua [[ + local bufnr = vim.api.nvim_create_buf(true, false) + vim.api.nvim_set_current_buf(bufnr) + + ]] + end) + + it('works with extensions', function() + eq('radicalscript', exec_lua [[ + vim.filetype.add({ + extension = { + rs = 'radicalscript', + }, + }) + vim.api.nvim_buf_set_name(0, '/home/user/src/main.rs') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + end) + + it('prioritizes filenames over extensions', function() + eq('somethingelse', exec_lua [[ + vim.filetype.add({ + extension = { + rs = 'radicalscript', + }, + filename = { + ['main.rs'] = 'somethingelse', + }, + }) + vim.api.nvim_buf_set_name(0, '/home/usr/src/main.rs') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + end) + + it('works with filenames', function() + eq('nim', exec_lua [[ + vim.filetype.add({ + filename = { + ['s_O_m_e_F_i_l_e'] = 'nim', + }, + }) + vim.api.nvim_buf_set_name(0, '/home/user/src/s_O_m_e_F_i_l_e') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + + eq('dosini', exec_lua [[ + vim.filetype.add({ + filename = { + ['config'] = 'toml', + ['~/.config/fun/config'] = 'dosini', + }, + }) + vim.api.nvim_buf_set_name(0, '~/.config/fun/config') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + end) + + it('works with patterns', function() + eq('markdown', exec_lua [[ + vim.filetype.add({ + pattern = { + ['~/blog/.*%.txt'] = 'markdown', + } + }) + vim.api.nvim_buf_set_name(0, '~/blog/why_neovim_is_awesome.txt') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + end) + + it('works with functions', function() + eq('foss', exec_lua [[ + vim.filetype.add({ + pattern = { + ["relevant_to_(%a+)"] = function(path, bufnr, capture) + if capture == "me" then + return "foss" + end + end, + } + }) + vim.api.nvim_buf_set_name(0, 'relevant_to_me') + vim.filetype.match(0) + return vim.bo.filetype + ]]) + end) +end) |