mirror of
https://github.com/hexedtech/codemp-vscode.git
synced 2024-11-22 07:24:49 +01:00
fix: re-get editors, fixes edits stopping
This commit is contained in:
parent
770758b8bf
commit
0983019175
2 changed files with 8 additions and 7 deletions
|
@ -112,6 +112,7 @@ export async function attach(selected: vscode.TreeItem | undefined) {
|
||||||
}
|
}
|
||||||
if (!buffer_name) return; // action cancelled by user
|
if (!buffer_name) return; // action cancelled by user
|
||||||
let buffer: codemp.BufferController = await workspace.attach(buffer_name);
|
let buffer: codemp.BufferController = await workspace.attach(buffer_name);
|
||||||
|
await buffer.poll(); // wait for server changes
|
||||||
LOGGER.info(`attached to buffer ${buffer_name}`);
|
LOGGER.info(`attached to buffer ${buffer_name}`);
|
||||||
let editor = vscode.window.activeTextEditor;
|
let editor = vscode.window.activeTextEditor;
|
||||||
if (editor === undefined) {
|
if (editor === undefined) {
|
||||||
|
@ -125,15 +126,14 @@ export async function attach(selected: vscode.TreeItem | undefined) {
|
||||||
vscode.window.showInformationMessage(`Connected to codemp workspace buffer @[${buffer_name}]`);
|
vscode.window.showInformationMessage(`Connected to codemp workspace buffer @[${buffer_name}]`);
|
||||||
|
|
||||||
let file_uri: vscode.Uri = editor.document.uri;
|
let file_uri: vscode.Uri = editor.document.uri;
|
||||||
mapping.bufferMapper.register(buffer.get_path(), editor);
|
mapping.bufferMapper.register(buffer.get_path(), file_uri);
|
||||||
let bufferContent = await buffer.content();
|
let bufferContent = await buffer.content();
|
||||||
|
|
||||||
|
|
||||||
let range = new vscode.Range(
|
let range = new vscode.Range(
|
||||||
editor.document.positionAt(0),
|
editor.document.positionAt(0),
|
||||||
editor.document.positionAt(0)
|
editor.document.positionAt(bufferContent.length)
|
||||||
);
|
);
|
||||||
CACHE.put(buffer_name, 0, bufferContent, 0)
|
CACHE.put(buffer_name, 0, bufferContent, bufferContent.length)
|
||||||
editor.edit(editBuilder => {
|
editor.edit(editBuilder => {
|
||||||
editBuilder
|
editBuilder
|
||||||
.replace(range, bufferContent)
|
.replace(range, bufferContent)
|
||||||
|
@ -158,6 +158,7 @@ export async function attach(selected: vscode.TreeItem | undefined) {
|
||||||
if (event === null) break;
|
if (event === null) break;
|
||||||
LOGGER.debug(`buffer.callback(event: [${event.start}, ${event.content}, ${event.end}])`)
|
LOGGER.debug(`buffer.callback(event: [${event.start}, ${event.content}, ${event.end}])`)
|
||||||
CACHE.put(buffer_name, event.start, event.content, event.end);
|
CACHE.put(buffer_name, event.start, event.content, event.end);
|
||||||
|
let editor = mapping.bufferMapper.by_buffer(buffer_name);
|
||||||
if (editor === undefined) { throw "Open an editor first" }
|
if (editor === undefined) { throw "Open an editor first" }
|
||||||
let range = new vscode.Range(
|
let range = new vscode.Range(
|
||||||
editor.document.positionAt(event.start),
|
editor.document.positionAt(event.start),
|
||||||
|
|
|
@ -5,9 +5,9 @@ class BufferMapper {
|
||||||
bufferToEditorMapping: Map<string, vscode.Uri> = new Map();
|
bufferToEditorMapping: Map<string, vscode.Uri> = new Map();
|
||||||
editorToBufferMapping: Map<vscode.Uri, string> = new Map();
|
editorToBufferMapping: Map<vscode.Uri, string> = new Map();
|
||||||
|
|
||||||
public register(buffer: string, editor: vscode.TextEditor) {
|
public register(buffer: string, uri: vscode.Uri) {
|
||||||
this.bufferToEditorMapping.set(buffer, editor.document.uri);
|
this.bufferToEditorMapping.set(buffer, uri);
|
||||||
this.editorToBufferMapping.set(editor.document.uri, buffer);
|
this.editorToBufferMapping.set(uri, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public by_buffer(name: string): vscode.TextEditor | undefined {
|
public by_buffer(name: string): vscode.TextEditor | undefined {
|
||||||
|
|
Loading…
Reference in a new issue