From 822b2c913c7d6690221eabf9b252850fb7c32513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Wed, 14 Dec 2016 21:39:30 +0100 Subject: lua: improve error message when failing to load lpeg/lexer module Differentiate between the case where the module is not found and the case where an error occured while loading it. This should make it easier to debug cases in which there is a Lua version mismatch between vis and lpeg. --- lua/vis-std.lua | 22 +++++++++++++++++++++- lua/vis.lua | 9 +-------- 2 files changed, 22 insertions(+), 9 deletions(-) (limited to 'lua') diff --git a/lua/vis-std.lua b/lua/vis-std.lua index 85defad..9ed0317 100644 --- a/lua/vis-std.lua +++ b/lua/vis-std.lua @@ -1,5 +1,25 @@ -- standard vis event handlers +vis.events.subscribe(vis.events.INIT, function() + local package_exist = function(name) + for _, searcher in ipairs(package.searchers or package.loaders) do + local loader = searcher(name) + if type(loader) == 'function' then + return true + end + end + return false + end + + if not package_exist('lpeg') then + vis:info('WARNING: could not find lpeg module') + elseif not package_exist('lexer') then + vis:info('WARNING: could not find lexer module') + else + vis.lexers = require('lexer') + end +end) + vis.events.subscribe(vis.events.THEME_CHANGE, function(name) if name ~= nil then local theme = 'themes/'..name @@ -7,7 +27,7 @@ vis.events.subscribe(vis.events.THEME_CHANGE, function(name) require(theme) end - if vis.lexers ~= nil then vis.lexers.lexers = {} end + if vis.lexers then vis.lexers.lexers = {} end for win in vis:windows() do win.syntax = win.syntax; diff --git a/lua/vis.lua b/lua/vis.lua index 97350a7..f1aff45 100644 --- a/lua/vis.lua +++ b/lua/vis.lua @@ -5,14 +5,7 @@ --- -- @type Vis -local ok, msg = pcall(function() - vis.lexers = {} - vis.lexers = require('lexer') -end) - -if not ok then - vis:info('WARNING: could not load lexer module, is lpeg installed?') -end +vis.lexers = {} --- Map a new motion. -- -- cgit v1.2.3