-
Notifications
You must be signed in to change notification settings - Fork 1
Configuration
Settings are grouped in the VS Code Settings UI under Setup, Mods, Validation and Editor, all under the px. prefix. The default answer to "what do I need to configure?" is: nothing. Open your mod folder(s), run Paradox: Run Setup & Health Check once (see Getting Started), and everything below is optional.
Coming from the old
ck3.*settings? Every one of them moved topx.*in 0.3.0. See Upgrading.
px.gameId picks the game. The three paths describe whichever game is active, are honored whenever you set them, and are auto-detected per game when left empty. They are machine-scoped, so Settings Sync does not copy one computer's paths onto another.
| Setting | Default | Meaning |
|---|---|---|
px.gameId |
auto |
auto, ck3, vic3 or eu5. auto reads the mod's descriptor shape and is right for almost everyone; set it explicitly when detection guesses wrong. See Supported Games. |
px.gamePath |
(empty) | The active game's data folder, e.g. .../steamapps/common/Crusader Kings III/game. Empty means auto-detected via Setup (Steam), or a game folder opened in the workspace. |
px.logsPath |
(empty) | Folder holding the script_docs dump files (triggers.log, effects.log, event_targets.log, modifiers.log). Empty means auto-detect per game: Documents/Paradox Interactive/<game>/logs for CK3, <game>/docs for Victoria 3 and EU5. |
px.tigerPath |
(empty) | Your own tiger binary (ck3-tiger or vic3-tiger, matching the active game). Empty means the copy installed by Paradox Tiger: Download or Update Binary. |
| Setting | Default | Meaning |
|---|---|---|
px.modPath |
(empty) | A mod folder that is not part of the workspace. Usually leave empty: every workspace folder that is a mod of the active game is detected and fully indexed automatically. |
px.parentMods |
[] |
Read-only dependency mods (absolute paths, load order, base first) for submods and compatibility patches. Never list mods you edit; open those as workspace folders instead. |
px.excludedMods |
[] |
Workspace mod folders to skip entirely (absolute paths): no indexing, completion, hover, navigation, diagnostics or views. Easiest via the per-mod switches in the Project view, or Paradox: Exclude Workspace Mods from Indexing. |
px.locLanguage |
english |
Localization language to index and display (matches l_<language> yml files), e.g. english, french, german. |
| Setting | Default | Meaning |
|---|---|---|
px.tigerRunOn |
manual |
manual (run via the command or the status-bar item) or save (debounced, on every save of a mod script file). |
px.diagnostics.ignore |
[] |
Diagnostic codes to suppress everywhere. Applies to the toolkit's own structural and localization codes (e.g. missing-bom, unknown-event) and to tiger report keys (e.g. unknown-field). |
px.diagnostics.ignorePatterns |
[] |
Globs matched against workspace-relative paths; all diagnostics (ours and tiger's) in matching files are suppressed. Supports * within a path segment and ** across segments, e.g. common/**/vendor/*.txt or *.generated.txt. A pattern with no slash also matches the basename, gitignore-style. |
px.diagnostics.vanilla |
false |
Diagnose files under px.gamePath (vanilla game content). Off by default: the toolkit only ever diagnoses your mod's files. |
| Setting | Default | Meaning |
|---|---|---|
px.scopeInlayHints |
false |
Show the inferred scope (e.g. character) after scope-changing block openers like every_vassal = {. Best-effort inference, display only. |
px.enableForWorkspace |
true |
Escape hatch: set to false to stop this workspace's txt/yml files from being switched to the Paradox language modes. |
px.trace.server |
off |
off / messages / verbose. Traces the LSP conversation for bug reports. |
px.trace.perf |
false |
Log how long the server spends on each request, file rescan, index change and indexing phase to the Paradox Modding Toolkit output channel. Turn it on when reporting a slow save or slow completion, then paste the perf … lines into the report. |
Only five commands bind a key by default. Ctrl+Alt+<letter> is AltGr on many European layouts (AltGr+L types ł, AltGr+O types ó), so the set is deliberately small; everything else keeps its button and palette entry and is rebindable as usual.
| Key | Command | When |
|---|---|---|
Ctrl+Alt+T |
Edit Key at Cursor (localization) | in a script or loc file |
Ctrl+Alt+J |
Go to Script Usage | in a loc file |
Ctrl+Alt+V |
Run Validation (tiger) | in a script, loc or .gui file |
Ctrl+Alt+P |
Open GUI Editor | in a .gui file |
Ctrl+Alt+H |
GUI Tree: Toggle Ancestors / Subtree Focus | in the GUI widget tree |
To silence a diagnostic on a single line without changing any setting, use a comment:
-
# px:ignore <code...>on the offending line, or -
# px:ignore-next-line <code...>on the line above it.
A bare # px:ignore (no code) suppresses every diagnostic on the line, and you can list several codes after the keyword. A trailing -- <reason> is allowed and ignored, so # px:ignore unknown-event -- fired by the base mod documents itself:
trigger_event = agot_dragon.0031 # px:ignore unknown-event -- defined by the base mod
This works for both the toolkit's own structural checks and tiger's forwarded reports. A code is either one of the codes below or a tiger report key.
The marker changed in 0.3.0.
# ck3m:ignorecomments no longer suppress anything; the codes themselves are unchanged, so a find-and-replace of the marker is the whole migration. See Upgrading.
The toolkit's own structural diagnostics carry a stable code. They target the silent-failure class: mistakes that make the game quietly ignore your content with no error output anywhere. The source label is per game (ck3-script, vic3-script, eu5-script).
| Code | Severity | What breaks in game |
|---|---|---|
unclosed-brace |
Error | Everything after the { is ignored |
stray-close |
Error | The engine misreads the rest of the file |
unterminated-string |
Warning | Following tokens get absorbed into the string |
missing-value |
Warning | Assignment has no value; the setting is lost |
missing-bom |
Error | The whole loc file is ignored (no UTF-8 BOM) |
loc-header-mismatch |
Error | Loc entries do not load (header language ≠ filename language) |
loc-no-header |
Error | No l_<lang>: header, so no entries load |
loc-bad-entry |
Warning | Malformed line skipped; the key shows raw |
loc-tab-indent |
Error | Tab-indented entries are rejected |
loc-unterminated-value |
Warning | Loc value with no closing quote |
loc-content-before-header |
Warning | Entries above the header are dropped |
loc-bad-filename |
Error | A file without the _l_<lang>.yml marker is ignored |
wrong-on-action-folder |
Error |
common/on_actions (plural) is ignored on CK3 |
wrong-localization-folder |
Error |
localisation/ (British spelling) is ignored |
unknown-event |
Warning |
trigger_event to a non-existent mod event does nothing |
missing-required-loc |
Warning | The definition shows raw loc keys in game |
Mod descriptors get their own checks under the source px-descriptor:
| Code | Severity | What breaks |
|---|---|---|
descriptor-missing |
Error | The mod folder has no descriptor.mod; the launcher, Workshop and tiger cannot use it |
descriptor-missing-field |
Error / Warning | The launcher cannot list the mod (name, version) or check compatibility (supported_version) |
descriptor-unknown-key |
Warning | The key is silently ignored by the launcher |
descriptor-duplicate-key |
Warning | Only the last of the duplicate values counts |
descriptor-path-ignored |
Warning | A path= inside descriptor.mod is dead weight and leaks machine paths |
Most of these codes have a page of their own, with the in-game consequence, why it happens and how to fix it, in docs/diagnostics/ in the repository.
Anything deeper than structure is tiger's job, by design. Its reports carry tiger's own keys (unknown-field and friends) and suppress the same way.
While the error.log watcher is on, the game's own script errors appear as Problems with the source ck3-game / vic3-game / eu5-game. Those deliberately survive stopping the watcher, so you can work through them with the game closed; Paradox: Clear Game Problems (error.log) removes them, and there is a "Clear Game Problems (N)" row in the Project view while there is something to clear.