updated to v0.5.1

This commit is contained in:
frelodev 2023-12-22 19:39:29 +01:00
parent aca8d31e1e
commit ffa86902d7
4 changed files with 69 additions and 8 deletions

View file

@ -9,7 +9,7 @@ crate-type = ["cdylib"]
path = "src/rust/lib.rs"
[dependencies]
codemp = { git = "ssh://git@github.com/codewithotherpeopleandchangenamelater/codemp.git", rev = "7fc03e3fd936240fdbadd368bfce38832ce34767", features = ["global"] }
codemp = { git = "ssh://git@github.com/codewithotherpeopleandchangenamelater/codemp.git", tag="v0.5.1", features = ["global"] }
#codemp = { git = "ssh://git@github.com/codewithotherpeopleandchangenamelater/codemp.git", features = ["global"] }
tracing = "0.1"
tracing-subscriber = "0.3.17"

View file

@ -35,6 +35,10 @@
"command": "codempvscode.disconnectBuffer",
"title": "disconnect from a codemp Buffer"
},
{
"command": "codempvscode.sync",
"title": "Sync the current buffer"
},
{
"command": "codempvscode.helloWorld",
"title": "Hello World (debug)"

View file

@ -8,6 +8,7 @@ import { JsTextChange } from '..';
const codemp = require("/home/***REMOVED***/projects/codemp/mine/codempvscode/codemp.node");
var CACHE : string = "";
var BUFFERS : any = [];
let smallNumberDecorationType = vscode.window.createTextEditorDecorationType({});
//import * as codemp from "/home/***REMOVED***/projects/codemp/mine/vscode/target/debug/libcodemp_vscode.node";
@ -32,13 +33,16 @@ export function activate(context: vscode.ExtensionContext) {
let attachCommand = vscode.commands.registerCommand('codempvscode.attach', attach);
let createBufferCommand = vscode.commands.registerCommand('codempvscode.createBuffer', createBuffer);
let disconnectBufferCommand = vscode.commands.registerCommand('codempvscode.disconnectBuffer', disconnectBuffer);
let syncBufferCommand = vscode.commands.registerCommand('codempvscode.sync', sync);
context.subscriptions.push(connectCommand);
context.subscriptions.push(joinCommand);
context.subscriptions.push(attachCommand);
context.subscriptions.push(createBufferCommand);
context.subscriptions.push(disconnectBufferCommand)
context.subscriptions.push(disconnectBufferCommand);
context.subscriptions.push(syncBufferCommand);
context.subscriptions.push(disposable);
}
@ -61,7 +65,7 @@ async function join() {
if (workspace.length == 0) workspace = "default"
if (buffer === undefined) return // user cancelled with ESC
if (buffer.length == 0) {workspace = "test"; buffer="test"; }
if (buffer.length == 0) {workspace = "default"; buffer="fucl"; }
let controller = await codemp.join(workspace)
try{
@ -147,18 +151,32 @@ async function createBuffer() {
async function attach() {
let workspace="test";
let buffer = await codemp.attach(workspace);
let buffer_name : any = (await vscode.window.showInputBox({prompt: "buffer to attach to"}))!;
let buffer = await codemp.attach(buffer_name);
console.log("attached to buffer", buffer_name);
console.log("buffer", buffer);
let editor = vscode.window.activeTextEditor;
let fileUri = buffer_name;
const fileName = 'untitled-1';
const newFileUri = vscode.Uri.file(fileName).with({ scheme: 'untitled', path: fileName });
await vscode.workspace.openTextDocument(newFileUri);
vscode.commands.executeCommand('vscode.open', newFileUri);
if (editor === undefined) { return } // TODO say something!!!!!!
if (editor === undefined) {
vscode.window.showInformationMessage(`Open a file first`);
return;
}
editor = vscode.window.activeTextEditor!;
console.log("Buffer = ", buffer, "\n");
vscode.window.showInformationMessage(`Connected to codemp workspace buffer @[${workspace}]`);
vscode.window.showInformationMessage(`Connected to codemp workspace buffer @[${buffer_name}]`);
let file_uri = editor.document.uri;
BUFFERS.push([file_uri, buffer_name]);
vscode.workspace.onDidChangeTextDocument((event:vscode.TextDocumentChangeEvent) => {
console.log(event.reason);
if (event.document.uri != file_uri) return; // ?
for (let change of event.contentChanges) {
if (`${change.rangeOffset}${change.text}${change.rangeOffset+change.rangeLength}` === CACHE) continue; // LMAO
buffer.send({
@ -192,6 +210,30 @@ async function disconnectBuffer() {
vscode.window.showInformationMessage(`Disconnected from codemp workspace buffer @[${buffer}]`);
}
function sync() {
let editor = vscode.window.activeTextEditor;
if (editor === undefined) { return }
for (let tuple of BUFFERS) {
if (tuple[0] == editor?.document.uri) {
let buffer = codemp.getBuffer(tuple[1]);
if (buffer==null) {
vscode.window.showErrorMessage("This buffer does not exist anymore");
return;
}
let range = new vscode.Range(
editor.document.positionAt(0),
editor.document.positionAt(editor.document.getText().length)
)
let content = buffer.content()
CACHE = `${range.start}${content}${range.end}`;
editor.edit(editBuilder => editBuilder.replace(range, content))
return;
}
}
vscode.window.showErrorMessage("This buffer is not managed by codemp");
}

View file

@ -33,6 +33,13 @@ pub async fn connect(addr: String) -> napi::Result<()> {
.map_err(|e| JsCodempError(e).into())
}
#[napi]
pub async fn get_buffer(path: String) -> Option<JsBufferController> {
let x = CODEMP_INSTANCE.get_buffer(&path)
.await
.ok()?;
Some(JsBufferController(x))
}
#[napi]
pub async fn leave_workspace() -> Result<(), napi::Error> {
@ -237,6 +244,14 @@ impl JsBufferController {
}
#[napi]
pub fn content(&self) -> napi::Result<String> {
Ok(self.0.content())
}
#[napi]
pub async fn recv(&self) -> napi::Result<JsTextChange> {
Ok(