Skip to content

Latest commit

 

History

History
109 lines (82 loc) · 10.8 KB

File metadata and controls

109 lines (82 loc) · 10.8 KB

Settings

(How to change settings in VScode)

All settings are under the bgforge namespace.

General

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)

Fallout SSL

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.

TSSL

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.

WeiDU

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.

Translations (@N message text)

@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/english

To 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.

Encoding

.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.

How to Pass Settings

Depends on the editor. See the editor-specific pages for examples:

  • Sublime Text - settings in LSP client config
  • Neovim - settings table in vim.lsp.config
  • Emacs - eglot-workspace-configuration or lsp-mode
  • JetBrains - LSP4IJ Configuration tab
  • Helix - config table in languages.toml
  • Zed - settings in lsp config
  • Geany - initialization_options in LSP Client config
  • Kate - settings in LSP client config (Kate 25.08+)
  • Notepad++ - settings in NppLspClient config