diff --git a/src/client/nvim/codemp.lua b/src/client/nvim/codemp.lua index 430658f..97fee00 100644 --- a/src/client/nvim/codemp.lua +++ b/src/client/nvim/codemp.lua @@ -60,16 +60,26 @@ local function unhook_callbacks(buffer) vim.keymap.del('i', '', { buffer = buffer }) end +local function auto_address(addr) + if not string.find(addr, "://") then + addr = string.format("http://%s", addr) + end + if not string.find(addr, ":", 7) then -- skip first 7 chars because 'https://' + addr = string.format("%s:50051", addr) + end + return addr +end + vim.api.nvim_create_user_command('Connect', function(args) - if M.jobid ~= nil then + if M.jobid ~= nil and M.jobid > 0 then print("already connected, disconnect first") return end local bin_args = { BINARY } if #args.fargs > 0 then table.insert(bin_args, "--host") - table.insert(bin_args, args.fargs[1]) + table.insert(bin_args, auto_address(args.fargs[1])) end if vim.g.codemp_remote_debug then table.insert(bin_args, "--remote-debug") diff --git a/src/client/nvim/main.rs b/src/client/nvim/main.rs index 4743fe5..0b6662e 100644 --- a/src/client/nvim/main.rs +++ b/src/client/nvim/main.rs @@ -255,7 +255,7 @@ async fn main() -> Result<(), Box> { .init(), } - let client = BufferClient::connect(args.host).await?; + let client = BufferClient::connect(args.host.clone()).await?; let handler: NeovimHandler = NeovimHandler { client: client.into(), @@ -263,7 +263,7 @@ async fn main() -> Result<(), Box> { let (_nvim, io_handler) = create::new_parent(handler).await; - info!("++ codemp started"); + info!("++ codemp connected: {}", args.host); if let Err(e) = io_handler.await? { error!("worker stopped with error: {}", e);