diff --git a/package-lock.json b/package-lock.json index 86f59e9..cac9931 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,8 @@ "@codemirror/collab": "^6.1.1", "@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-javascript": "^6.2.2", + "@codemirror/language": "^6.10.2", + "@codemirror/legacy-modes": "^6.4.0", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.26.3", "@emailjs/browser": "^4.3.3", @@ -2493,9 +2495,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -2505,6 +2507,14 @@ "style-mod": "^4.0.0" } }, + "node_modules/@codemirror/legacy-modes": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.4.0.tgz", + "integrity": "sha512-5m/K+1A6gYR0e+h/dEde7LoGimMjRtWXZFg4Lo70cc8HzjSdHe3fLwjWMR0VRl5KFT1SxalSap7uMgPKF28wBA==", + "dependencies": { + "@codemirror/language": "^6.0.0" + } + }, "node_modules/@codemirror/lint": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.7.0.tgz", diff --git a/package.json b/package.json index 146e396..c00d434 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,8 @@ "@codemirror/collab": "^6.1.1", "@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-javascript": "^6.2.2", + "@codemirror/language": "^6.10.2", + "@codemirror/legacy-modes": "^6.4.0", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.26.3", "@emailjs/browser": "^4.3.3", diff --git a/src/app/components/editor/editor.component.ts b/src/app/components/editor/editor.component.ts index 29519d7..063a7c2 100644 --- a/src/app/components/editor/editor.component.ts +++ b/src/app/components/editor/editor.component.ts @@ -161,7 +161,13 @@ export class EditorComponent { constructor( private router: Router, private backendService: BackendService - ) {} + ) { + backendService.getResult().subscribe((msg) => { + if (msg.type === 'stdout' || msg.type === 'stderr') { + this.resultContent += msg.text; + } + }) + } // Efface le contenu de l'éditeur clear(): void { diff --git a/src/app/components/languages.ts b/src/app/components/languages.ts index 219a7ac..054a060 100644 --- a/src/app/components/languages.ts +++ b/src/app/components/languages.ts @@ -1,6 +1,10 @@ -import { LanguageDescription } from '@codemirror/language'; +import { LanguageDescription, LanguageSupport, StreamLanguage, StreamParser } from '@codemirror/language'; import { javascript } from '@codemirror/lang-javascript'; +function legacy(parser: StreamParser): LanguageSupport { + return new LanguageSupport(StreamLanguage.define(parser)) +} + export const CODE_DEFAULTS = { C: /** @lang C */ `#include int main() { @@ -14,6 +18,7 @@ int main() { }`, JavaScript: /** @lang JS */ `console.log("Hello, World!");`, TypeScript: /** @lang TS */ `console.log("Hello, World!");`, + Bash: 'echo "Hello, world!"', }; export const LANGUAGES = [ @@ -48,4 +53,13 @@ export const LANGUAGES = [ ); }, }), + LanguageDescription.of({ + name: 'Bash', + alias: ['bash', 'sh', 'sh'], + extensions: ['sh', 'ksh', 'bash'], + filename: /^PKGBUILD$/, + load() { + return import('@codemirror/legacy-modes/mode/shell').then(m => legacy(m.shell)) + } + }), ];