[] Better editor handling

This commit is contained in:
ThinLiquid 2023-10-18 20:57:42 +01:00
parent ae536ba584
commit b1ceeb0fe3
No known key found for this signature in database
GPG key ID: D5085759953E6CAA

View file

@ -3,16 +3,15 @@ import { App } from '../types.ts'
import { fullEditor } from 'prism-code-editor/setups'
import Prism from 'prism-code-editor/prism-core'
import 'prismjs/components/prism-clike.js'
import 'prismjs/components/prism-markup.js'
import 'prismjs/components/prism-clike.js'
import 'prismjs/components/prism-javascript.js'
import 'prismjs/components/prism-typescript.js'
import 'prismjs/components/prism-css.js'
import 'prismjs/components/prism-json.js'
import 'prismjs/components/prism-c.js'
import 'prismjs/components/prism-csharp.js'
import 'prismjs/components/prism-cpp.js'
import 'prismjs/components/prism-jsx.js'
import 'prismjs/components/prism-tsx.js'
import 'prism-code-editor/languages'
import 'prism-code-editor/prism-markdown'
import { FlowWindow } from '../wm.ts'
interface EditorConfig {
@ -125,12 +124,77 @@ export default class EditorApp implements App {
}
})
let language
switch (data.path.split('.').at(-1)?.toLowerCase()) {
case 'c':
case 'cs':
case 'cpp':
case 'java': {
language = 'clike'
break
}
case 'ts': {
language = 'typescript'
break
}
case 'js':
case 'mjs':
case 'cjs': {
language = 'javascript'
break
}
case 'jsx': {
language = 'jsx'
break
}
case 'tsx': {
language = 'tsx'
break
}
case 'html': {
language = 'html'
break
}
case 'md': {
language = 'md'
break
}
case 'css': {
language = 'css'
break
}
case 'xml': {
language = 'xml'
break
}
case 'py': {
language = 'python'
break
}
default: {
language = 'text'
break
}
}
const value = (await window.fs.promises.readFile(data.path)).toString()
const editor = fullEditor(
Prism,
win.content.querySelector('.editor'),
{
language: data.path.split('.').at(-1),
language,
theme: 'github-dark',
value
}