Hook up prettier in the editor.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4854 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2024-02-17 18:53:21 +00:00
parent a12f2fec5a
commit 498d8b6520
8 changed files with 139 additions and 9 deletions

View File

@ -205,7 +205,6 @@ class TfFilesElement extends LitElement {
gFiles[file.name] = {
doc: new cm6.EditorState.create({doc: text, extensions: cm6.extensions}),
buffer: buffer,
generation: -1,
isNew: true,
};
gCurrentFile = file.name;
@ -1010,7 +1009,6 @@ function updateFiles() {
function makeNewFile(name) {
gFiles[name] = {
doc: cm6.EditorState.create({extensions: cm6.extensions}),
generation: -1,
};
openFile(name);
}
@ -1121,6 +1119,27 @@ async function appImport() {
}
}
async function sourcePretty() {
let prettier = (await import('/prettier/standalone.mjs')).default;
let babel = (await import('/prettier/babel.mjs')).default;
let estree = (await import('/prettier/estree.mjs')).default;
let source = gEditor.state.doc.toString();
let formatted = await prettier.format(source, {
parser: 'babel',
plugins: [babel, estree],
useTabs: true,
});
if (source !== formatted) {
gEditor.dispatch({
changes: {
from: 0,
to: gEditor.state.doc.length,
insert: formatted,
}
});
}
}
window.addEventListener("load", function() {
window.addEventListener("hashchange", hashChange);
window.addEventListener("focus", focus);
@ -1134,6 +1153,7 @@ window.addEventListener("load", function() {
document.getElementById('delete').addEventListener('click', () => deleteApp());
document.getElementById('export').addEventListener('click', () => appExport());
document.getElementById('import').addEventListener('click', () => appImport());
document.getElementById('pretty').addEventListener('click', () => sourcePretty());
document.getElementById('trace_button').addEventListener('click', function(event) {
event.preventDefault();
trace();