Skip to content

Commit f2b2ef8

Browse files
committed
Don't ignore errors, warn user when snippet loading fails
1 parent c9b9a22 commit f2b2ef8

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

lua/luasnip/loaders/from_lua.lua

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,19 @@ local function _luasnip_load_file(file)
160160
get_loaded_file_debuginfo,
161161
nil
162162
)
163-
local run_ok, file_snippets, file_autosnippets = pcall(func)
163+
local run_ok, file_snippets_or_err, file_autosnippets = pcall(func)
164164
-- immediately nil it.
165165
_G.__luasnip_get_loaded_file_frame_debuginfo = nil
166166

167167
if not run_ok then
168-
log.error("Failed to execute\n: %s", file, file_snippets)
169-
error("Failed to execute " .. file .. "\n: " .. file_snippets)
168+
local err = file_snippets_or_err
169+
log.error("Failed to execute snippet file %s\n: %s", file, err)
170+
loader_util.msg_user_on_snippet_load_error("from_lua loader", file, err)
171+
error(("Failed to execute snippet file %s\n: %s"):format(file, err))
170172
end
171173

174+
local file_snippets = file_snippets_or_err
175+
172176
-- make sure these aren't nil.
173177
file_snippets = file_snippets or {}
174178
file_autosnippets = file_autosnippets or {}

lua/luasnip/loaders/util.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,19 @@ local function scopestring_to_filetypes(str)
286286
return vim.split(str_trimmed, "%s*[.,]%s*")
287287
end
288288

289+
--- Notify the user that loading a snippet file failed
290+
---@param what string
291+
---@param where string
292+
---@param error string
293+
local function msg_user_on_snippet_load_error(what, where, error)
294+
local message = "LuaSnip: " .. what .. " failed to load snippets from " .. where
295+
local see_more = "-> Use `:lua require'luasnip'.log.open()` for more details"
296+
vim.notify(
297+
("%s\n: %s\n\n%s"):format(message, error, see_more),
298+
vim.log.levels.WARN
299+
)
300+
end
301+
289302
return {
290303
filetypelist_to_set = filetypelist_to_set,
291304
split_lines = split_lines,
@@ -302,4 +315,5 @@ return {
302315
add_file_snippets = add_file_snippets,
303316
normalize_opts = normalize_opts,
304317
scopestring_to_filetypes = scopestring_to_filetypes,
318+
msg_user_on_snippet_load_error = msg_user_on_snippet_load_error,
305319
}

0 commit comments

Comments
 (0)