chore: updated to codemp 0.8

This commit is contained in:
əlemi 2024-10-26 18:15:30 +02:00
parent 9e22411df8
commit c92b1799b6
Signed by: alemi
GPG key ID: A4895B84D311642C
9 changed files with 49 additions and 47 deletions

View file

@ -8,6 +8,8 @@
-- `native.(so|dll|dylib)` file in this plugin folder, next to
-- the `loader.lua` file.
local version = "v0.8.0"
local plugin_dir = vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":p:h") -- got this from https://lazy.folke.io/developers#building
@ -43,8 +45,6 @@ if os_uname.sysname == "Windows_NT" then sep = '\\' end
local new_ext = ext
if os_uname.sysname == "Darwin" then new_ext = "so" end
local version = "v0.7.3"
local native_path = plugin_dir..sep.."lua"..sep.."codemp"..sep.."new-native."..new_ext
local replace_native_path = plugin_dir..sep.."lua"..sep.."codemp"..sep.."native."..new_ext
local download_url_native = string.format("https://codemp.dev/releases/lua/codemp-lua-%s-%s-%s.%s", version, arch, platform, ext)

View file

@ -15,7 +15,7 @@ local function detach(name)
id_buffer_map[buffer] = nil
buffer_id_map[name] = nil
CODEMP.workspace:get_buffer(name):clear_callback()
if not CODEMP.workspace:detach(name) then
if not CODEMP.workspace:detach_buffer(name) then
collectgarbage("collect") -- clear dangling references
end
@ -58,7 +58,7 @@ local function attach(name, opts)
vim.api.nvim_buf_set_name(buffer, name)
CODEMP.workspace:attach(name):and_then(function (controller)
CODEMP.workspace:attach_buffer(name):and_then(function (controller)
vim.schedule(function()
-- TODO disgusting! but poll blocks forever on empty buffers...
if not opts.nowait then
@ -124,7 +124,7 @@ local function attach(name, opts)
print(string.format("sending: %s..%s '%s'", start_offset, start_offset + old_end_byte_len, change_content))
end
controller:send({
start = start_offset, finish = end_offset, content = change_content
start_idx = start_offset, end_idx = end_offset, content = change_content
}):await()
end,
})
@ -139,9 +139,9 @@ local function attach(name, opts)
ticks[buffer] = vim.api.nvim_buf_get_changedtick(buffer)
CODEMP.ignore_following_action = true
if CODEMP.config.debug then
print(" ~~ applying change ~~ " .. event.change.start .. ".." .. event.change.finish .. "::[" .. event.change.content .. "]")
print(" ~~ applying change ~~ " .. event.change.start_idx .. ".." .. event.change.end_idx .. "::[" .. event.change.content .. "]")
end
utils.buffer.set_content(buffer, event.change.content, event.change.start, event.change.finish)
utils.buffer.set_content(buffer, event.change.content, event.change.start_idx, event.change.end_idx)
if event.hash ~= nil then
if CODEMP.native.hash(utils.buffer.get_content(buffer)) ~= event.hash then
if CODEMP.config.auto_sync then
@ -173,7 +173,7 @@ local function attach(name, opts)
if opts.content ~= nil then
-- TODO this may happen too soon!!
local _ = controller:send({
start = 0, finish = #remote_content, content = opts.content
start_idx = 0, end_idx = #remote_content, content = opts.content
}) -- no need to await
else
local current_content = utils.buffer.get_content(buffer)
@ -227,7 +227,7 @@ local function create(buffer)
if CODEMP.workspace == nil then
error("join a workspace first")
end
CODEMP.workspace:create(buffer):and_then(function ()
CODEMP.workspace:create_buffer(buffer):and_then(function ()
print(" ++ created buffer " .. buffer)
require('codemp.window').update()
end)

View file

@ -31,7 +31,7 @@ local base_actions = {
-- only available if state.client is not nil
local connected_actions = {
id = function()
print("> codemp::" .. CODEMP.client.id)
print("> codemp::" .. CODEMP.client:current_user().id)
end,
join = function(ws)
@ -56,11 +56,11 @@ local connected_actions = {
available = function()
CODEMP.available = {}
for _, ws in ipairs(CODEMP.client:list_workspaces(true, false):await()) do
for _, ws in ipairs(CODEMP.client:fetch_owned_workspaces():await()) do
print(" ++ " .. ws)
table.insert(CODEMP.available, ws)
end
for _, ws in ipairs(CODEMP.client:list_workspaces(false, true):await()) do
for _, ws in ipairs(CODEMP.client:fetch_joined_workspaces():await()) do
print(" -- " .. ws)
table.insert(CODEMP.available, ws)
end
@ -70,7 +70,7 @@ local connected_actions = {
invite = function(user)
local ws
if CODEMP.workspace ~= nil then
ws = CODEMP.workspace.name
ws = CODEMP.workspace:id()
else
ws = vim.fn.input("workspace > ", "")
end
@ -81,10 +81,10 @@ local connected_actions = {
disconnect = function()
if CODEMP.workspace ~= nil then
print(" xx leaving workspace " .. CODEMP.workspace.name)
print(" xx leaving workspace " .. CODEMP.workspace:id())
workspace.leave()
end
print(" xx disconnecting client " .. CODEMP.client.id)
print(" xx disconnecting client " .. CODEMP.client:current_user().id)
CODEMP.client = nil -- should drop and thus close everything
collectgarbage("collect") -- make sure we drop
require('codemp.window').update()
@ -118,13 +118,13 @@ local joined_actions = {
delete = function(path)
if path == nil then error("missing buffer name") end
CODEMP.workspace:delete(path):and_then(function()
CODEMP.workspace:delete_buffer(path):and_then(function()
print(" xx deleted buffer " .. path)
end)
end,
buffers = function()
for _, buf in ipairs(CODEMP.workspace:filetree()) do
for _, buf in ipairs(CODEMP.workspace:search_buffers()) do
if buffers.map_rev[buf] ~= nil then
print(" +- " .. buf)
else
@ -149,7 +149,7 @@ local joined_actions = {
buffers.attach(p, { buffer = buffer })
end
if path == nil then
local filetree = CODEMP.workspace:filetree(nil, false)
local filetree = CODEMP.workspace:search_buffers()
return vim.ui.select(filetree, { prompt = "Select buffer to attach to:" }, function (choice)
if choice == nil then return end -- action canceled by user
doit(filetree[choice])
@ -233,7 +233,7 @@ vim.api.nvim_create_user_command(
if CODEMP.client ~= nil and CODEMP.workspace ~= nil then
local choices
if last_arg == "attach" then
choices = CODEMP.workspace:filetree()
choices = CODEMP.workspace:search_buffers()
elseif last_arg == "detach" then
choices = CODEMP.workspace.active_buffers
end

View file

@ -38,7 +38,7 @@ if CODEMP == nil then
{
callback = function (_ev)
if CODEMP.workspace ~= nil then
print(" xx leaving workspace " .. CODEMP.workspace.name)
print(" xx leaving workspace " .. CODEMP.workspace:id())
require('codemp.workspace').leave()
end
if CODEMP.client ~= nil then

View file

@ -130,16 +130,16 @@ M.update_state = function(state)
state.default_expanded_nodes = {}
if CODEMP.workspace ~= nil then
local ws_section = new_root("#" .. CODEMP.workspace.name)
local ws_section = new_root("#" .. CODEMP.workspace:id())
table.insert(state.default_expanded_nodes, ws_section.id)
for i, path in ipairs(CODEMP.workspace:filetree()) do
table.insert(ws_section.children, new_item(CODEMP.workspace.name, path))
for i, path in ipairs(CODEMP.workspace:search_buffers()) do
table.insert(ws_section.children, new_item(CODEMP.workspace:id(), path))
end
local usr_section = new_root("users")
table.insert(state.default_expanded_nodes, usr_section.id)
for user, buffer in pairs(buf_manager.users) do
table.insert(usr_section.children, new_user(CODEMP.workspace.name, user))
table.insert(usr_section.children, new_user(CODEMP.workspace:id(), user))
end
table.insert(ws_section.children, spacer())
table.insert(ws_section.children, usr_section)
@ -159,8 +159,8 @@ M.update_state = function(state)
local status_section = new_root("client")
table.insert(state.default_expanded_nodes, status_section.id)
table.insert(status_section.children, new_entry("id", CODEMP.client.id))
table.insert(status_section.children, new_entry("name", CODEMP.client.username))
table.insert(status_section.children, new_entry("id", CODEMP.client:current_user().id))
table.insert(status_section.children, new_entry("name", CODEMP.client:current_user().name))
table.insert(root, spacer())
table.insert(root, status_section)

View file

@ -38,7 +38,7 @@ M.open = function(state, path, extra)
return
end
if selected.type == "workspace" then
if CODEMP.workspace ~= nil and CODEMP.workspace.name ~= selected.name then
if CODEMP.workspace ~= nil and CODEMP.workspace:id() ~= selected.name then
error("must leave current workspace first")
end
if CODEMP.workspace == nil then
@ -62,10 +62,12 @@ M.open = function(state, path, extra)
local usr = ws_manager.map[selected.name]
print(" /\\/ following " .. selected.name)
CODEMP.following = selected.name
local _ = CODEMP.workspace.cursor:send({
local _ = CODEMP.workspace:cursor():send({
buffer = "",
start = { 0, 0 },
finish = { 0, 0 },
start_row = 0,
start_col = 0,
end_row = 0,
end_col = 0,
}) -- clear current cursor
if usr ~= nil then
local buf_name = buf_manager.users[selected.name]
@ -133,7 +135,7 @@ M.delete = function(state, path, extra)
if buf_manager.map_rev[selected.name] ~= nil then
buf_manager.detach(selected.name)
end
CODEMP.workspace:delete(selected.name):and_then(function ()
CODEMP.workspace:delete_buffer(selected.name):and_then(function ()
print("deleted buffer " .. selected.name)
manager.refresh("codemp")
end)
@ -156,7 +158,7 @@ M.add = function(state, path, extra)
if vim.startswith(selected.name, "#") then
vim.ui.input({ prompt = "new buffer path" }, function(input)
if input == nil or input == "" then return end
CODEMP.workspace:create(input):and_then(function ()
CODEMP.workspace:create_buffer(input):and_then(function ()
manager.refresh("codemp")
end)
end)

View file

@ -225,7 +225,7 @@ return {
get_content = buffer_get_content,
set_content = buffer_set_content,
},
available_colors = available_colors,
available_colors = colors,
color = color,
poller = async_poller,
sep = separator,

View file

@ -40,10 +40,10 @@ local function update_window()
local buffer_to_row = {}
local user_to_row = {}
local off = {}
local tree = CODEMP.workspace:filetree()
local tree = CODEMP.workspace:search_buffers()
vim.api.nvim_set_option_value('modifiable', true, { buf = buffer_id })
local tmp = ">| codemp\n"
tmp = tmp .. " |: " .. CODEMP.workspace.name .. "\n"
tmp = tmp .. " |: " .. CODEMP.workspace:id() .. "\n"
tmp = tmp .. " |\n"
local base_row = 3
for n, path in pairs(tree) do

View file

@ -12,14 +12,14 @@ local user_hl = {}
local function fetch_workspaces_list()
local new_list = {}
CODEMP.client:list_workspaces(true, false):and_then(function (owned)
CODEMP.client:fetch_owned_workspaces():and_then(function (owned)
for _, ws in pairs(owned) do
table.insert(new_list, {
name = ws,
owned = true,
})
end
CODEMP.client:list_workspaces(false, true):and_then(function (invited)
CODEMP.client:fetch_joined_workspaces():and_then(function (invited)
for _, ws in pairs(invited) do
table.insert(new_list, {
name = ws,
@ -77,8 +77,8 @@ local function register_cursor_callback(controller, name)
end
once = false
end
local oldbuf = buffers.users[CODEMP.client.username]
buffers.users[CODEMP.client.username] = bufname
local oldbuf = buffers.users[CODEMP.client:current_user().name]
buffers.users[CODEMP.client:current_user().name] = bufname
if oldbuf ~= bufname then
require('codemp.window').update()
end
@ -175,22 +175,22 @@ local events_poller = nil
---join a workspace and register event handlers
local function join(workspace)
print(" <> joining workspace " .. workspace .. " ...")
CODEMP.client:join_workspace(workspace):and_then(function (ws)
print(" >< joined workspace " .. ws.name)
register_cursor_callback(ws.cursor, ws.name)
register_cursor_handler(ws.cursor)
CODEMP.client:attach_workspace(workspace):and_then(function (ws)
print(" >< joined workspace " .. ws:id())
register_cursor_callback(ws:cursor(), ws:id())
register_cursor_handler(ws:cursor())
CODEMP.workspace = ws
for _, user in pairs(CODEMP.workspace:user_list()) do
buffers.users[user] = ""
user_hl[user] = {
ns = vim.api.nvim_create_namespace("codemp-cursor-" .. user),
hi = utils.color(user),
hi = utils.color(user.name),
pos = { 0, 0 },
mark = nil,
}
end
require('codemp.window').update()
local ws_name = ws.name
local ws_name = ws:id()
events_poller = utils.poller(
function()
if CODEMP.client == nil then return nil end
@ -225,8 +225,8 @@ local function join(workspace)
end
local function leave()
local ws_name = CODEMP.workspace.name
CODEMP.workspace.cursor:clear_callback()
local ws_name = CODEMP.workspace:id()
CODEMP.workspace:cursor():clear_callback()
vim.api.nvim_clear_autocmds({ group = workspace_callback_group })
for id, name in pairs(buffers.map) do
CODEMP.workspace:get_buffer(name):clear_callback()