Skip to content
Snippets Groups Projects
Commit 3e2f2bf2 authored by Liangliang Zhu's avatar Liangliang Zhu
Browse files

Fix newline handling for tex-fmt input and output.

parent db813d51
No related branches found
Tags v10.7.3
No related merge requests found
......@@ -42,14 +42,15 @@ async function formatDocument(document: vscode.TextDocument, range?: vscode.Rang
resolve(vscode.TextEdit.replace(range ?? document.validateRange(new vscode.Range(0, 0, Number.MAX_VALUE, Number.MAX_VALUE)), stdoutStr))
})
})
// write the document to the process, and add a newline at the end
process.stdin?.write(document.getText(range)+'\n')
process.stdin?.end()
const edits = await promise
// remove extra newline at the end
// 2024-12-4, for tex-fmt 0.4.7, when using `--stdin`, it requires a newline at the end of the input; Therefore, we need to add a newline at the end of the input if it doesn't exist, and remove it from the output if it exists.
const text = document.getText(range);
const endsWithNewline = text.endsWith('\n');
process.stdin?.write(endsWithNewline ? text : text + '\n');
process.stdin?.end();
const edits = await promise;
if (edits) {
edits.newText = edits.newText.replace(/\n$/, '')
edits.newText = endsWithNewline ? edits.newText : edits.newText.replace(/\n$/, '');
}
return edits
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment