aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-09-30 21:58:21 +0200
committerWilliam Boman <william@redwill.se>2021-09-30 21:58:21 +0200
commit8018bdf43bc4a8f1b83814e135cac8a197374e01 (patch)
treefb64841f9cf968e2d173b3968b0e47c4cf3957b4 /lua/nvim-lsp-installer
parentfix logging at correct level, also add :LspInstallLog command (diff)
downloadmason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar.gz
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar.bz2
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar.lz
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar.xz
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.tar.zst
mason-8018bdf43bc4a8f1b83814e135cac8a197374e01.zip
fix parsing stdout/stderr chunks into proper lines
Diffstat (limited to 'lua/nvim-lsp-installer')
-rw-r--r--lua/nvim-lsp-installer/ui/status-win/init.lua29
1 files changed, 15 insertions, 14 deletions
diff --git a/lua/nvim-lsp-installer/ui/status-win/init.lua b/lua/nvim-lsp-installer/ui/status-win/init.lua
index 57b215e4..211723ef 100644
--- a/lua/nvim-lsp-installer/ui/status-win/init.lua
+++ b/lua/nvim-lsp-installer/ui/status-win/init.lua
@@ -1,9 +1,9 @@
local Ui = require "nvim-lsp-installer.ui"
local fs = require "nvim-lsp-installer.fs"
-local settings = require "nvim-lsp-installer.settings"
local log = require "nvim-lsp-installer.log"
local Data = require "nvim-lsp-installer.data"
local display = require "nvim-lsp-installer.ui.display"
+local settings = require "nvim-lsp-installer.settings"
local function ServerGroupHeading(props)
return Ui.HlTextNode {
@@ -233,6 +233,14 @@ local function create_server_state(server)
}
end
+local function normalize_chunks_line_endings(chunk, dest)
+ local chunk_lines = vim.split(chunk, "\n")
+ dest[#dest] = (dest[#dest] or "") .. chunk_lines[1]
+ for i = 2, #chunk_lines do
+ dest[#dest + 1] = chunk_lines[i]
+ end
+end
+
local function init(all_servers)
local window = display.new_view_only_win "LSP servers"
@@ -283,26 +291,18 @@ local function init(all_servers)
stdout = function(chunk)
mutate_state(function(state)
local tailed_output = state.servers[server.name].installer.tailed_output
- local lines = vim.split(chunk, "\n")
- for i = 1, #lines do
- tailed_output[#tailed_output + 1] = lines[i]
- end
+ normalize_chunks_line_endings(chunk, tailed_output)
end)
end,
stderr = function(chunk)
mutate_state(function(state)
local tailed_output = state.servers[server.name].installer.tailed_output
- local lines = vim.split(chunk, "\n")
- for i = 1, #lines do
- tailed_output[#tailed_output + 1] = lines[i]
- end
+ normalize_chunks_line_endings(chunk, tailed_output)
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 = {}
@@ -317,7 +317,8 @@ local function init(all_servers)
end
-- We have a queue because installers have a tendency to hog resources.
- local queue = (function()
+ local queue
+ do
local max_running = 2
local q = {}
local r = 0
@@ -334,11 +335,11 @@ local function init(all_servers)
end
end)
- return function(server, version)
+ queue = function(server, version)
q[#q + 1] = { server, version }
check_queue()
end
- end)()
+ end
return {
open = open,