vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

commit 1ac31b87f9853bcc48a9b434de37a40f67d1ffe1
parent 7c861770a09057df754f125d1f63e654f8bc29cd
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Wed, 14 Dec 2016 21:39:30 +0100

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.

Diffstat:
Mlua/vis-std.lua | 22+++++++++++++++++++++-
Mlua/vis.lua | 9+--------
2 files changed, 22 insertions(+), 9 deletions(-)

diff --git 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 @@ -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. --