aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/ui/status-win
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-09-29 13:48:39 +0200
committerGitHub <noreply@github.com>2021-09-29 13:48:39 +0200
commite267fe517feaaf7a48323349e3775944db49c158 (patch)
tree1c9d869d71c32b0d3b2f9304d9433dbb4ced9903 /lua/nvim-lsp-installer/ui/status-win
parentfix stylua (#104) (diff)
downloadmason-e267fe517feaaf7a48323349e3775944db49c158.tar
mason-e267fe517feaaf7a48323349e3775944db49c158.tar.gz
mason-e267fe517feaaf7a48323349e3775944db49c158.tar.bz2
mason-e267fe517feaaf7a48323349e3775944db49c158.tar.lz
mason-e267fe517feaaf7a48323349e3775944db49c158.tar.xz
mason-e267fe517feaaf7a48323349e3775944db49c158.tar.zst
mason-e267fe517feaaf7a48323349e3775944db49c158.zip
support installing specific version of language servers, defaults to latest (#106)
Diffstat (limited to 'lua/nvim-lsp-installer/ui/status-win')
-rw-r--r--lua/nvim-lsp-installer/ui/status-win/init.lua38
1 files changed, 25 insertions, 13 deletions
diff --git a/lua/nvim-lsp-installer/ui/status-win/init.lua b/lua/nvim-lsp-installer/ui/status-win/init.lua
index 10fd5559..a8bad050 100644
--- a/lua/nvim-lsp-installer/ui/status-win/init.lua
+++ b/lua/nvim-lsp-installer/ui/status-win/init.lua
@@ -1,6 +1,6 @@
local Ui = require "nvim-lsp-installer.ui"
local fs = require "nvim-lsp-installer.fs"
-local log = require "nvim-lsp-installer.log"
+local Log = require "nvim-lsp-installer.log"
local Data = require "nvim-lsp-installer.data"
local display = require "nvim-lsp-installer.ui.display"
@@ -267,29 +267,41 @@ local function init(all_servers)
}
end
- local function start_install(server, on_complete)
+ local function start_install(server_tuple, on_complete)
+ local server, requested_version = unpack(server_tuple)
mutate_state(function(state)
state.servers[server.name].installer.is_queued = false
state.servers[server.name].installer.is_running = true
end)
+ Log.debug("Starting install", server.name, requested_version)
+
server:install_attached({
+ requested_server_version = requested_version,
stdio_sink = {
- stdout = function(line)
+ stdout = function(chunk)
mutate_state(function(state)
local tailed_output = state.servers[server.name].installer.tailed_output
- tailed_output[#tailed_output + 1] = line
+ local lines = vim.split(chunk, "\n")
+ for i = 1, #lines do
+ tailed_output[#tailed_output + 1] = lines[i]
+ end
end)
end,
- stderr = function(line)
+ stderr = function(chunk)
mutate_state(function(state)
local tailed_output = state.servers[server.name].installer.tailed_output
- tailed_output[#tailed_output + 1] = line
+ local lines = vim.split(chunk, "\n")
+ for i = 1, #lines do
+ tailed_output[#tailed_output + 1] = lines[i]
+ end
end)
end,
},
}, function(success)
mutate_state(function(state)
+ -- can we log each line separately?
+ Log.debug("Installer output", server.name, state.servers[server.name].installer.tailed_output)
if success then
-- release stdout/err output table.. hopefully ¯\_(ツ)_/¯
state.servers[server.name].installer.tailed_output = {}
@@ -321,19 +333,19 @@ local function init(all_servers)
end
end)
- return function(server)
- q[#q + 1] = server
+ return function(server, version)
+ q[#q + 1] = { server, version }
check_queue()
end
end)()
return {
open = open,
- install_server = function(server)
- -- log.debug { "installing server", server }
+ install_server = function(server, version)
+ Log.debug("Installing server", server, version)
local server_state = get_state().servers[server.name]
if server_state and (server_state.installer.is_running or server_state.installer.is_queued) then
- -- log.debug { "Installer is already queued/running", server.name }
+ Log.debug("Installer is already queued/running", server.name)
return
end
mutate_state(function(state)
@@ -341,12 +353,12 @@ local function init(all_servers)
state.servers[server.name] = create_server_state(server)
state.servers[server.name].installer.is_queued = true
end)
- queue(server)
+ queue(server, version)
end,
uninstall_server = function(server)
local server_state = get_state().servers[server.name]
if server_state and (server_state.installer.is_running or server_state.installer.is_queued) then
- -- log.debug { "Installer is already queued/running", server.name }
+ Log.debug("Installer is already queued/running", server.name)
return
end