mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-22 07:33:48 +01:00
allow json (#1137)
Allow creating .json files. Also added the json language server so syntax highlighting and validation works with the ingame editor
This commit is contained in:
parent
863ac2c8c0
commit
d2dd6916b1
@ -7,7 +7,7 @@ export type TextFilePath = FilePath & WithTextExtension;
|
||||
|
||||
/** Check extension only */
|
||||
export function hasTextExtension(path: string): path is WithTextExtension {
|
||||
return path.endsWith(".txt");
|
||||
return path.endsWith(".txt") || path.endsWith(".json");
|
||||
}
|
||||
|
||||
/** Sanitize a player input, resolve any relative paths, and for imports add the correct extension if missing */
|
||||
|
@ -60,6 +60,12 @@ export class ScriptEditor {
|
||||
const source = (libSource + "").replace(/export /g, "");
|
||||
monaco.languages.typescript.javascriptDefaults.addExtraLib(source, "netscript.d.ts");
|
||||
monaco.languages.typescript.typescriptDefaults.addExtraLib(source, "netscript.d.ts");
|
||||
monaco.languages.json.jsonDefaults.setModeConfiguration({
|
||||
...monaco.languages.json.jsonDefaults.modeConfiguration,
|
||||
//completion should be disabled because the
|
||||
//json language server tries to load a schema by default
|
||||
completionItems: false,
|
||||
});
|
||||
// Load themes
|
||||
loadThemes(monaco.editor.defineTheme);
|
||||
sanitizeTheme(Settings.EditorTheme);
|
||||
|
@ -1,6 +1,7 @@
|
||||
import type { ContentFilePath } from "../../Paths/ContentFile";
|
||||
import { editor, Position } from "monaco-editor";
|
||||
import { makeModel } from "./utils";
|
||||
import { hasTextExtension } from "../../Paths/TextFilePath";
|
||||
|
||||
type ITextModel = editor.ITextModel;
|
||||
|
||||
@ -21,7 +22,7 @@ export class OpenScript {
|
||||
this.hostname = hostname;
|
||||
this.lastPosition = lastPosition;
|
||||
this.model = model;
|
||||
this.isTxt = path.endsWith(".txt");
|
||||
this.isTxt = hasTextExtension(path);
|
||||
}
|
||||
|
||||
regenerateModel(): void {
|
||||
|
@ -26,7 +26,7 @@ function makeModel(hostname: string, filename: string, code: string) {
|
||||
scheme: "file",
|
||||
path: `${hostname}/${filename}`,
|
||||
});
|
||||
const language = filename.endsWith(".txt") ? "plaintext" : "javascript";
|
||||
const language = filename.endsWith(".txt") ? "plaintext" : filename.endsWith(".json") ? "json" : "javascript";
|
||||
//if somehow a model already exist return it
|
||||
return editor.getModel(uri) ?? editor.createModel(code, language, uri);
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ module.exports = (env, argv) => {
|
||||
|
||||
return {
|
||||
plugins: [
|
||||
new MonacoWebpackPlugin({ languages: ["javascript", "typescript"] }),
|
||||
new MonacoWebpackPlugin({ languages: ["javascript", "typescript", "json"] }),
|
||||
new webpack.DefinePlugin({
|
||||
"process.env.NODE_ENV": isDevelopment ? '"development"' : '"production"',
|
||||
}),
|
||||
|
Loading…
Reference in New Issue
Block a user