aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/language_spec.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-02-21 17:09:18 +0000
committerGitHub <noreply@github.com>2023-02-21 17:09:18 +0000
commit8714a4009c0f0be0bb27a6b3eb486eeb3d9f3049 (patch)
treeba930952af970a189e735f3b6f001d92a0fff72f /test/functional/treesitter/language_spec.lua
parent344a1ee8e6b7d78120f8393d1babfd285e866334 (diff)
downloadrneovim-8714a4009c0f0be0bb27a6b3eb486eeb3d9f3049.tar.gz
rneovim-8714a4009c0f0be0bb27a6b3eb486eeb3d9f3049.tar.bz2
rneovim-8714a4009c0f0be0bb27a6b3eb486eeb3d9f3049.zip
feat(treesitter): add filetype -> lang API
Problem: vim.treesitter does not know how to map a specific filetype to a parser. This creates problems since in a few places (including in vim.treesitter itself), the filetype is incorrectly used in place of lang. Solution: Add an API to enable this: - Add vim.treesitter.language.add() as a replacement for vim.treesitter.language.require_language(). - Optional arguments are now passed via an opts table. - Also takes a filetype (or list of filetypes) so we can keep track of what filetypes are associated with which langs. - Deprecated vim.treesitter.language.require_language(). - Add vim.treesitter.language.get_lang() which returns the associated lang for a given filetype. - Add vim.treesitter.language.register() to associate filetypes to a lang without loading the parser.
Diffstat (limited to 'test/functional/treesitter/language_spec.lua')
-rw-r--r--test/functional/treesitter/language_spec.lua11
1 files changed, 6 insertions, 5 deletions
diff --git a/test/functional/treesitter/language_spec.lua b/test/functional/treesitter/language_spec.lua
index 51d8eb62f3..a8831b9a9b 100644
--- a/test/functional/treesitter/language_spec.lua
+++ b/test/functional/treesitter/language_spec.lua
@@ -18,22 +18,23 @@ describe('treesitter language API', function()
-- actual message depends on platform
matches("Failed to load parser for language 'borklang': uv_dlopen: .+",
- pcall_err(exec_lua, "parser = vim.treesitter.require_language('borklang', 'borkbork.so')"))
+ pcall_err(exec_lua, "parser = vim.treesitter.add('borklang', { path = 'borkbork.so' })"))
-- Should not throw an error when silent
- eq(false, exec_lua("return vim.treesitter.require_language('borklang', nil, true)"))
- eq(false, exec_lua("return vim.treesitter.require_language('borklang', 'borkbork.so', true)"))
+ eq(false, exec_lua("return vim.treesitter.add('borklang', { silent = true })"))
+
+ eq(false, exec_lua("return vim.treesitter.add('borklang', { path = 'borkbork.so', silent = true })"))
eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers",
pcall_err(exec_lua, "parser = vim.treesitter.inspect_language('borklang')"))
matches("Failed to load parser: uv_dlsym: .+",
- pcall_err(exec_lua, 'vim.treesitter.require_language("c", nil, false, "borklang")'))
+ pcall_err(exec_lua, 'vim.treesitter.add("c", { symbol_name = "borklang" })'))
end)
it('shows error for invalid language name', function()
eq(".../language.lua:0: '/foo/' is not a valid language name",
- pcall_err(exec_lua, 'vim.treesitter.require_language("/foo/", nil, false)'))
+ pcall_err(exec_lua, 'vim.treesitter.add("/foo/", nil, false)'))
end)
it('inspects language', function()