fix(loaders): trim whitespace around comma and at start/end of "scope".

Closes #1199.
Apparently this is supported by vscode, and its' no biggie, so let's
just do it too.
This commit is contained in:
L3MON4D3 2024-06-28 22:07:17 +02:00
parent ee20ddd026
commit 365bebd79a
3 changed files with 24 additions and 1 deletions

View file

@ -102,7 +102,7 @@ local function get_file_snippets(file)
-- vscode documents `,`, but `.` also works.
-- an entry `false` in this list will cause a `ft=nil` for the snippet.
local filetypes = parts.scope and vim.split(parts.scope, "[.,]")
local filetypes = parts.scope and util.scopestring_to_filetypes(parts.scope)
or { false }
local contexts = {}

View file

@ -281,6 +281,11 @@ local function normalize_opts(opts)
}
end
local function scopestring_to_filetypes(str)
local str_trimmed = str:gsub("^%s+", ""):gsub("%s+$", "")
return vim.split(str_trimmed, "%s*[.,]%s*")
end
return {
filetypelist_to_set = filetypelist_to_set,
split_lines = split_lines,
@ -296,4 +301,5 @@ return {
get_load_fts = get_load_fts,
add_file_snippets = add_file_snippets,
normalize_opts = normalize_opts,
scopestring_to_filetypes = scopestring_to_filetypes
}

View file

@ -0,0 +1,17 @@
local ls_helpers = require("helpers")
local exec_lua, _, exec =
ls_helpers.exec_lua, ls_helpers.feed, ls_helpers.exec
describe("luasnip.loaders.util:", function()
ls_helpers.clear()
exec("set rtp+=" .. os.getenv("LUASNIP_SOURCE"))
it("Correctly splits scopes with spaces.", function()
local res = exec_lua[[return require("luasnip.loaders.util").scopestring_to_filetypes("javascript, typescript")]]
assert.are.same({"javascript", "typescript"}, res)
local res = exec_lua[[return require("luasnip.loaders.util").scopestring_to_filetypes(" javascript, typescript")]]
assert.are.same({"javascript", "typescript"}, res)
local res = exec_lua[[return require("luasnip.loaders.util").scopestring_to_filetypes("javascript , typescript ")]]
assert.are.same({"javascript", "typescript"}, res)
end)
end)