Skip to content

Commit

Permalink
fix: Modifies read to handle large LS messages (#52)
Browse files Browse the repository at this point in the history
* fix: Modifies read to handle large LS messages

* switched print statement to utils.debug

* removed accidentally added test2.typ

---------

Co-authored-by: chomosuke <[email protected]>
  • Loading branch information
cskeeters and chomosuke authored Oct 11, 2024
1 parent b4338fd commit a53a136
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions lua/typst-preview/servers/factory.lua
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@ end
---@param mode mode
---@param callback fun(server: Server)
function M.new(path, mode, callback)
local read_buffer = ''

spawn(path, mode, function(close, write, read, link)
---@type Server
local server = {
Expand All @@ -173,17 +175,26 @@ function M.new(path, mode, callback)

read(function(data)
vim.defer_fn(function()
while data:len() > 0 do
local s, _ = data:find '\n'
local event = assert(vim.json.decode(data:sub(1, s - 1)))
data = data:sub(s + 1, -1)
read_buffer = read_buffer .. data
local s, _ = read_buffer:find '\n'
while s ~= nil do
local event = assert(vim.json.decode(read_buffer:sub(1, s - 1)))

-- Make sure we keep the next message in the read buffer
read_buffer = read_buffer:sub(s + 1, -1)
s, _ = read_buffer:find '\n'

local listeners = server.listenerss[event.event]
if listeners ~= nil then
for _, listener in pairs(listeners) do
listener(event)
end
end
end

if read_buffer ~= '' then
utils.debug('Leaving for next read: '..read_buffer)
end
end, 0)
end)

Expand Down

0 comments on commit a53a136

Please sign in to comment.