diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index c332933a2..770aab870 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -3147,6 +3147,21 @@ static int internal_getCommandHelp(lua_State *L) return 1; } +static int internal_isPluginEnableable(lua_State *L) +{ + auto plugins = Core::getInstance().getPluginManager(); + + const char *name = luaL_checkstring(L, 1); + + auto plugin = plugins->getPluginByName(name); + if (plugin) + lua_pushboolean(L, plugin->can_be_enabled()); + else + lua_pushnil(L); + + return 1; +} + static int internal_threadid(lua_State *L) { std::stringstream ss; @@ -3221,6 +3236,7 @@ static const luaL_Reg dfhack_internal_funcs[] = { { "listPlugins", internal_listPlugins }, { "listCommands", internal_listCommands }, { "getCommandHelp", internal_getCommandHelp }, + { "isPluginEnableable", internal_isPluginEnableable }, { "threadid", internal_threadid }, { "md5File", internal_md5file }, { NULL, NULL } diff --git a/library/lua/helpdb.lua b/library/lua/helpdb.lua index f6f9ed864..e35d2f125 100644 --- a/library/lua/helpdb.lua +++ b/library/lua/helpdb.lua @@ -305,7 +305,8 @@ local function scan_plugins(old_db, db) HELP_SOURCES.RENDERED or HELP_SOURCES.PLUGIN, command, {entry_types=entry_types}) end - if not includes_plugin then + if not includes_plugin and + dfhack.internal.isPluginEnableable(plugin) then update_db(old_db, db, has_rendered_help(plugin) and HELP_SOURCES.RENDERED or HELP_SOURCES.STUB,