From c305e6532dd5c790ee8e9f94e42ac8a8ed2f2b60 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Sun, 30 May 2021 02:57:11 +0430 Subject: [PATCH 1/2] Fix formatting textedit range --- server/src/server.ts | 6 +----- server/src/utils.ts | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index d6e72584b..91cd0ebd3 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -398,13 +398,9 @@ function format(msg: p.RequestMessage): Array { extension === c.resiExt ); if (formattedResult.kind === "success") { - let max = formattedResult.result.length; let result: p.TextEdit[] = [ { - range: { - start: { line: 0, character: 0 }, - end: { line: max, character: max }, - }, + range: utils.getSourceRange(code), newText: formattedResult.result, }, ]; diff --git a/server/src/utils.ts b/server/src/utils.ts index 2c6d236f9..a3914f218 100644 --- a/server/src/utils.ts +++ b/server/src/utils.ts @@ -476,3 +476,23 @@ export let parseCompilerLogOutput = ( return { done, result }; }; + +export let getSourceRange = (source: string): p.Range => { + let start = { line: 0, character: 0 }; + + // Calculate end position + let len = source.length; + let line = 1; + let colStartIndex = 0; + + for (let i = 0; i < len; i++) { + if (source[i] === "\n") { + line++; + colStartIndex = i + 1; + } + } + + let end = { line: line, character: len - colStartIndex }; + + return { start, end }; +}; From 7b583fafcc53dcb56028e87a02a666f490fcbfdf Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Sun, 30 May 2021 13:41:17 +0430 Subject: [PATCH 2/2] Use current file length as max range --- server/src/server.ts | 6 +++++- server/src/utils.ts | 20 -------------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index 91cd0ebd3..bafd59003 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -398,9 +398,13 @@ function format(msg: p.RequestMessage): Array { extension === c.resiExt ); if (formattedResult.kind === "success") { + let max = code.length; let result: p.TextEdit[] = [ { - range: utils.getSourceRange(code), + range: { + start: { line: 0, character: 0 }, + end: { line: max, character: max }, + }, newText: formattedResult.result, }, ]; diff --git a/server/src/utils.ts b/server/src/utils.ts index a3914f218..2c6d236f9 100644 --- a/server/src/utils.ts +++ b/server/src/utils.ts @@ -476,23 +476,3 @@ export let parseCompilerLogOutput = ( return { done, result }; }; - -export let getSourceRange = (source: string): p.Range => { - let start = { line: 0, character: 0 }; - - // Calculate end position - let len = source.length; - let line = 1; - let colStartIndex = 0; - - for (let i = 0; i < len; i++) { - if (source[i] === "\n") { - line++; - colStartIndex = i + 1; - } - } - - let end = { line: line, character: len - colStartIndex }; - - return { start, end }; -};