diff --git a/data/core/init.lua b/data/core/init.lua index d1118a45..59944c9a 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -552,6 +552,35 @@ function core.restart() end +local function version_components(version) + local a, b, c = version:match('(%d+)%.(%d+)%.(%d+)') + if a then + return tonumber(a), tonumber(b), tonumber(c) + end + a, b = version:match('(%d+)%.(%d+)') + if a then + return tonumber(a), tonumber(b) + end +end + + +local function check_plugin_version(filename) + local f = io.open(filename, "r") + if not f then return false end + local version_match = false + for line in f:lines() do + local version = line:match('%-%-%s*lite%-xl%s*(%d+%.%d+)%s*$') + if not version then break end + local ver_major, ver_minor = version_components(version) + local ref_major, ref_minor = version_components(VERSION) + version_match = (ver_major == ref_major and ver_minor == ref_minor) + break + end + f:close() + return version_match +end + + function core.load_plugins() local no_errors = true for _, root_dir in ipairs {USERDIR, DATADIR} do @@ -559,7 +588,12 @@ function core.load_plugins() local files = system.list_dir(plugin_dir) for _, filename in ipairs(files or {}) do local basename = filename:match("(.-)%.lua$") or filename - if config[basename] ~= false then + local version_match = check_plugin_version(plugin_dir .. '/' .. filename) + if not version_match then + core.log_quiet("Version mismatch for plugin %q from %s", basename, plugin_dir) + no_errors = false + end + if version_match and config[basename] ~= false then local modname = "plugins." .. basename local ok = core.try(require, modname) if ok then core.log_quiet("Loaded plugin %q from %s", basename, plugin_dir) end diff --git a/data/plugins/autocomplete.lua b/data/plugins/autocomplete.lua index ee318a1c..c0a3d36a 100644 --- a/data/plugins/autocomplete.lua +++ b/data/plugins/autocomplete.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local common = require "core.common" local config = require "core.config" diff --git a/data/plugins/autoreload.lua b/data/plugins/autoreload.lua index a077b6d6..cbef8a21 100644 --- a/data/plugins/autoreload.lua +++ b/data/plugins/autoreload.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local config = require "core.config" local Doc = require "core.doc" diff --git a/data/plugins/detectindent.lua b/data/plugins/detectindent.lua index 2a97e291..9ee171e9 100644 --- a/data/plugins/detectindent.lua +++ b/data/plugins/detectindent.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local command = require "core.command" local common = require "core.common" diff --git a/data/plugins/language_c.lua b/data/plugins/language_c.lua index 8e8ee985..9bb074bf 100644 --- a/data/plugins/language_c.lua +++ b/data/plugins/language_c.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_css.lua b/data/plugins/language_css.lua index 021c5d33..2f934551 100644 --- a/data/plugins/language_css.lua +++ b/data/plugins/language_css.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_js.lua b/data/plugins/language_js.lua index af650655..9f877ef0 100644 --- a/data/plugins/language_js.lua +++ b/data/plugins/language_js.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_lua.lua b/data/plugins/language_lua.lua index 915d2732..64b7847f 100644 --- a/data/plugins/language_lua.lua +++ b/data/plugins/language_lua.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_md.lua b/data/plugins/language_md.lua index 9f0f14e6..0998c11e 100644 --- a/data/plugins/language_md.lua +++ b/data/plugins/language_md.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_python.lua b/data/plugins/language_python.lua index e6315c4b..b9c07e4e 100644 --- a/data/plugins/language_python.lua +++ b/data/plugins/language_python.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/language_xml.lua b/data/plugins/language_xml.lua index 5240bdc4..8687ab6a 100644 --- a/data/plugins/language_xml.lua +++ b/data/plugins/language_xml.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local syntax = require "core.syntax" syntax.add { diff --git a/data/plugins/macro.lua b/data/plugins/macro.lua index 3458977a..c8873102 100644 --- a/data/plugins/macro.lua +++ b/data/plugins/macro.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local command = require "core.command" local keymap = require "core.keymap" diff --git a/data/plugins/projectsearch.lua b/data/plugins/projectsearch.lua index 22c16ef8..c4499339 100644 --- a/data/plugins/projectsearch.lua +++ b/data/plugins/projectsearch.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local common = require "core.common" local keymap = require "core.keymap" diff --git a/data/plugins/quote.lua b/data/plugins/quote.lua index b17407d3..bca0797b 100644 --- a/data/plugins/quote.lua +++ b/data/plugins/quote.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local command = require "core.command" local keymap = require "core.keymap" diff --git a/data/plugins/reflow.lua b/data/plugins/reflow.lua index 95090a64..9556e37e 100644 --- a/data/plugins/reflow.lua +++ b/data/plugins/reflow.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local config = require "core.config" local command = require "core.command" diff --git a/data/plugins/tabularize.lua b/data/plugins/tabularize.lua index f4dda1f9..31821525 100644 --- a/data/plugins/tabularize.lua +++ b/data/plugins/tabularize.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local command = require "core.command" local translate = require "core.doc.translate" diff --git a/data/plugins/toolbarview.lua b/data/plugins/toolbarview.lua index 65e782ae..2edfa8bc 100644 --- a/data/plugins/toolbarview.lua +++ b/data/plugins/toolbarview.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local common = require "core.common" local command = require "core.command" diff --git a/data/plugins/treeview.lua b/data/plugins/treeview.lua index 5e16ce55..44422b77 100644 --- a/data/plugins/treeview.lua +++ b/data/plugins/treeview.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local common = require "core.common" local command = require "core.command" diff --git a/data/plugins/trimwhitespace.lua b/data/plugins/trimwhitespace.lua index d4d25c8f..5a43653b 100644 --- a/data/plugins/trimwhitespace.lua +++ b/data/plugins/trimwhitespace.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local command = require "core.command" local Doc = require "core.doc" diff --git a/data/plugins/workspace.lua b/data/plugins/workspace.lua index 81d2207d..c24358c2 100644 --- a/data/plugins/workspace.lua +++ b/data/plugins/workspace.lua @@ -1,3 +1,4 @@ +-- lite-xl 1.16 local core = require "core" local common = require "core.common" local DocView = require "core.docview"