From 4c54762e63054ec8637a91b1afc10d267cb3f747 Mon Sep 17 00:00:00 2001 From: "ray.xu" Date: Fri, 21 Jan 2022 22:25:06 +1100 Subject: [PATCH] gopls vesion can be very slow, change to jobstart --- lua/go/gopls.lua | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/lua/go/gopls.lua b/lua/go/gopls.lua index 1bf2943..4c2be07 100644 --- a/lua/go/gopls.lua +++ b/lua/go/gopls.lua @@ -73,7 +73,46 @@ end -- check_for_upgrades({Modules = {'package'}}) function M.version() - return vim.fn.system("gopls version"):match("%s+v([%d%.]+)%s+") + -- return vim.fn.system("gopls version"):match("%s+v([%d%.]+)%s+") + + local cache_dir = vim.fn.stdpath("cache") + local path = string.format("%s%sversion.txt", cache_dir, utils.sep()) + + vim.fn.jobstart({ "gopls", "version" }, { + on_stdout = function(c, data, name) + local msg = "" + if type(data) == "table" and #data > 0 then + data = table.concat(data, " ") + end + if #data > 1 then + msg = msg .. data + end + log(msg) + + local version = string.match(msg, "%s+v([%d%.]+)%s+") + if version == nil then + log(version, msg) + return + end + + local f = io.open(path, "w+") + if f == nil then + return + end + f:write(version) + f:close() + log(version) + end, + }) + + local f = io.open(path, "r") + if f == nil then + return "0.7.1" + end + local version = f:read("*l") + f:close() + log(version) + return version end local setups = {