(How to change settings in VScode)
All settings are under the bgforge namespace.
| Setting | Default | Description |
|---|---|---|
bgforge.validate |
saveAndType |
When validation runs: manual = only when invoked explicitly, save = on save, type = while editing, saveAndType = on both save and edit. type/saveAndType are disk-intensive and debounced at 300ms. |
bgforge.diagnostics |
true |
Report tree-sitter parse errors as diagnostics, alongside compiler diagnostics, for languages with a parser (Fallout SSL/MSG, WeiDU BAF/D/TP2/TRA). In-memory and instant, so it runs independently of bgforge.validate; set to false to silence the syntax source without disabling compiler validation. |
bgforge.binaryEditor.autoDumpJson |
false |
Whether saving a file in the binary editor should also write a JSON snapshot next to it. |
bgforge.debug |
false |
Enable debug logging in the Output panel (BGforge MLS channel) |
| Setting | Default | Description |
|---|---|---|
bgforge.falloutSSL.compilePath |
"" |
Path to sslc compiler. Drop exe into system PATH and enter filename, or use full path. Empty = use whichever compiler bgforge.falloutSSL.compiler selects. |
bgforge.falloutSSL.compileOptions |
-q -p -l -O2 -d -s -n |
Compiler flags |
bgforge.falloutSSL.outputDirectory |
"" |
Output directory for compiled scripts (default: next to source) |
bgforge.falloutSSL.headersDirectory |
"" |
Additional headers directory (workspace is always scanned) |
bgforge.falloutSSL.compileOnValidate |
true |
When enabled, validation on save/edit also writes the compiled .int. Disable to validate without overwriting output. |
bgforge.falloutSSL.compiler |
wasm |
Which compiler runs when no compilePath is set. wasm is the reference sslc built to WebAssembly, run in a separate process through a temporary file; built-in is the extension's own, which compiles the editor's text directly and matches the other's output at -O0 to -O2. |
A .tssl file compiles straight to Fallout .int bytecode - no SSL text is produced or parsed on the
way. The .int lands where bgforge.falloutSSL.outputDirectory says, and the optimisation switches in
bgforge.falloutSSL.compileOptions (-O, -s) apply; the rest of that line addresses an SSL text
compiler and names nothing a TypeScript source has.
| Setting | Default | Description |
|---|---|---|
bgforge.tssl.emitSsl |
false |
Also write the readable .ssl beside the bytecode. Enable this if your mod still ships generated .ssl, or to read what a script became. The emitted text is checked to compile to the same bytes the compiler wrote directly. |
| Setting | Default | Description |
|---|---|---|
bgforge.weidu.path |
weidu |
Path to WeiDU binary (or add to system PATH) |
bgforge.weidu.gamePath |
"" |
Absolute path to IE game directory: BAF/D diagnostics, binary-editor resolution for workspace files, auto-loaded in the IE Resources view. Opening a game in that view writes this setting. |
@N references in Fallout SSL/MSG and WeiDU D/TRA resolve to their text - shown in hover, inlay hints, and the
dialog editor - from a .tra/.msg file. When resolution fails, every @N renders as its raw ref (the dialog
editor shows a banner saying so). Resolution is configured per project in a .bgforge.yml at the workspace root,
plus an optional per-file directive:
| Key | Default | Description |
|---|---|---|
translation.directory |
tra |
Directory scanned for .tra/.msg, relative to the workspace root (a path resolving outside it is ignored with a warning). |
translation.auto_tra |
true |
Match a source file to <basename>.tra/.msg within directory (e.g. x#viconia.d -> x#viconia.tra). |
For a per-language layout such as tra/english/x#viconia.tra, point translation.directory at the language
subdirectory: auto_tra matches by basename within directory, so a bare tra never finds a file nested under
tra/<language>/, and every @N stays unresolved.
The same setting decides which language a tp2 path like COMPILE ~mymod/dlg/x#npc.d~ USING ~mymod/tra/%LANGUAGE%/x#npc.tra~ navigates to. %LANGUAGE% has no value until install time and the file exists
once per language, so go-to-definition opens the copy in translation.directory; with the setting unset it stays
put rather than picking a language for you.
The keys nest under a top-level mls: block (a bare top-level translation: is not read):
# .bgforge.yml (workspace root)
mls:
translation:
directory: tra/englishTo override resolution for a single file, put a directive on its first line (it takes precedence over
auto_tra):
/** @tra myfile.tra */
The directive names a word-character file only ([A-Za-z0-9_]); for a name containing other characters (e.g. the
# in x#viconia), use translation.directory instead.
.tra/.msg files are decoded as UTF-8 first; a file that is not valid UTF-8 (most classic-era mods predate it and
use a legacy codepage) falls back to windows-1252, which covers the common Western-European accented characters.
There is no setting for this - it is automatic and needs no configuration.
Saving @N edits (from the dialog editor) preserves whichever encoding the file was read as: an edited windows-1252
file writes back windows-1252, so its untouched entries stay byte-for-byte identical. If an edit introduces a
character the file's encoding cannot represent, the save is refused with an error rather than silently rewriting the
whole file as UTF-8 or dropping the character - re-save the file as UTF-8 first (or remove the character) to keep
that edit.
Depends on the editor. See the editor-specific pages for examples:
- Sublime Text -
settingsin LSP client config - Neovim -
settingstable invim.lsp.config - Emacs -
eglot-workspace-configurationor lsp-mode - JetBrains - LSP4IJ Configuration tab
- Helix -
configtable inlanguages.toml - Zed -
settingsinlspconfig - Geany -
initialization_optionsin LSP Client config - Kate -
settingsin LSP client config (Kate 25.08+) - Notepad++ -
settingsin NppLspClient config