diff --git a/l4d2web/l4d2web/static/js/files-overlay.js b/l4d2web/l4d2web/static/js/files-overlay.js index cffc9fe..8f30ce0 100644 --- a/l4d2web/l4d2web/static/js/files-overlay.js +++ b/l4d2web/l4d2web/static/js/files-overlay.js @@ -281,6 +281,16 @@ saveBtn: editorDialog.querySelector(".files-editor-save"), }; + function setEditorContent(text) { + const editor = editorEls.contentBox._codeEditor; + if (editor) { + editor.setValue(text); + editor.setLanguage("auto"); // re-derive from filename + } else { + editorEls.contentBox.value = text; + } + } + function setEditorTitle(text) { editorEls.title.textContent = text; } @@ -342,7 +352,7 @@ setEditorTitle(`${folder ? folder + "/" : ""}…new file`); editorEls.filename.value = ""; editorEls.filename.disabled = false; - editorEls.contentBox.value = ""; + setEditorContent(""); editorEls.contentBox.disabled = false; editorEls.renameHint.hidden = true; editorEls.textPanel.hidden = false; @@ -375,14 +385,14 @@ editor.mode = "text"; editorEls.textPanel.hidden = false; editorEls.binaryPanel.hidden = true; - editorEls.contentBox.value = "Loading…"; + setEditorContent("Loading…"); editorEls.contentBox.disabled = true; const r = await fetchJson( `${baseUrl}/files/content?path=${encodeURIComponent(path)}` ); if (r.ok && r.body) { - editorEls.contentBox.value = r.body.content; + setEditorContent(r.body.content); editorEls.contentBox.disabled = false; updateByteCount(); updateSaveEnabled(); @@ -407,9 +417,21 @@ setTimeout(() => editorEls.filename.focus(), 0); } + const languageSelect = document.querySelector(".files-editor-language"); + if (languageSelect) { + languageSelect.addEventListener("change", function () { + const editor = editorEls.contentBox._codeEditor; + if (editor) editor.setLanguage(languageSelect.value); + }); + } + editorEls.filename.addEventListener("input", () => { updateRenameHint(); updateSaveEnabled(); + const _editor = editorEls.contentBox._codeEditor; + if (_editor && languageSelect && languageSelect.value === "auto") { + _editor.setLanguage("auto"); + } }); editorEls.contentBox.addEventListener("input", () => { updateByteCount(); diff --git a/l4d2web/l4d2web/templates/overlay_detail.html b/l4d2web/l4d2web/templates/overlay_detail.html index 01c78a5..c570bbe 100644 --- a/l4d2web/l4d2web/templates/overlay_detail.html +++ b/l4d2web/l4d2web/templates/overlay_detail.html @@ -175,7 +175,16 @@
+
UTF-8 · 0 bytes