fix(ts): escape lang when loading parsers (#16668)

When trying to load a language parser, escape the value of
the language.

With language injection, the language might be picked up from the
buffer. If this value is erroneous it can cause `nvim_get_runtime_file`
to hard error.

E.g., the markdown expression `~~~{` will extract '{' as a language and
then try to get the parser using `parser/{*` as the pattern.
This commit is contained in:
Lewis Russell
2022-01-27 09:42:59 +00:00
committed by GitHub
parent 2320f705c4
commit f9080b24c4
2 changed files with 16 additions and 1 deletions

View File

@@ -14,7 +14,7 @@ function M.require_language(lang, path, silent)
return true
end
if path == nil then
local fname = 'parser/' .. lang .. '.*'
local fname = 'parser/' .. vim.fn.fnameescape(lang) .. '.*'
local paths = a.nvim_get_runtime_file(fname, false)
if #paths == 0 then
if silent then