diff options
| author | William Boman <william@redwill.se> | 2021-09-29 13:48:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-29 13:48:39 +0200 |
| commit | e267fe517feaaf7a48323349e3775944db49c158 (patch) | |
| tree | 1c9d869d71c32b0d3b2f9304d9433dbb4ced9903 /lua/nvim-lsp-installer/ui/status-win | |
| parent | fix stylua (#104) (diff) | |
| download | mason-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.lua | 38 |
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 |
