Skip to content

Configuration

Joël Deffner edited this page Jul 14, 2026 · 1 revision

Configuration

Settings are grouped in the VS Code Settings UI under Setup, Mods, Validation and Editor. The default answer to "what do I need to configure?" is: nothing. Open your mod folder(s), run CK3: Run Setup & Health Check once (see Getting Started), and everything below is optional.

Setup

Machine paths. These are auto-detected, and they are machine-scoped so Settings Sync does not copy one computer's paths onto another.

Setting Meaning
ck3.gamePath .../steamapps/common/Crusader Kings III/game. Empty means auto-detected via Setup (Steam), or a game folder opened in the workspace.
ck3.logsPath folder with the script_docs logs. Empty means auto-detect Documents.
ck3.tigerPath your own ck3-tiger binary. Empty means the auto-downloaded copy.

Mods

Setting Meaning
ck3.modPath a mod folder NOT opened in the workspace; usually leave empty. Workspace mods are found automatically, and there is no primary mod.
ck3.parentMods read-only dependency mods (load order, base first) for submods and compatibility patches. Never list mods you edit; open those as workspace folders.
ck3.excludedMods workspace mods to skip entirely; easiest to set via CK3: Exclude Workspace Mods from Indexing.
ck3.locLanguage reference localization language (default english).

Validation

Setting Meaning
ck3.tigerRunOn save (debounced) or manual.
ck3.diagnostics.ignore diagnostic codes to suppress everywhere (the extension's own codes plus tiger keys).
ck3.diagnostics.ignorePatterns globs (workspace-relative paths) whose diagnostics are suppressed.
ck3.diagnostics.vanilla diagnose files under ck3.gamePath (default off: mod files only).

Editor

Setting Meaning
ck3.scopeInlayHints show the inferred scope after block openers (default off).
ck3.enableForWorkspace escape hatch for the txt / yml language switching.
ck3.trace.server LSP trace level off / messages / verbose (default off).

Inline diagnostic suppression

To silence a diagnostic on a single line without changing any setting, use a comment:

  • # ck3m:ignore <code...> on the offending line, or
  • # ck3m:ignore-next-line <code...> on the line above it.

A bare # ck3m:ignore (no code) suppresses every diagnostic on the line. You can list several codes after the keyword.

This works for both the extension's own structural checks and ck3-tiger's forwarded reports. A code is either one of the extension's own codes or a ck3-tiger report key.

The extension's own diagnostic codes:

Code What it flags
missing-bom a localization file saved without a UTF-8 BOM
unclosed-brace an opening brace with no matching close (rest of file ignored by the game)
stray-close a closing brace with no matching open
unterminated-string a quoted string with no closing quote
missing-value a key with no value
wrong-on-action-folder content placed in common/on_actions (it is singular, on_action)
unknown-event a reference to a mod-namespace event that does not exist
missing-required-loc a schema-required localization key that is missing
loc-header-mismatch the l_english: header does not match the filename language
loc-bad-filename a localization filename that does not follow _l_<language>.yml
wrong-localization-folder content under localisation/ instead of localization/
loc-no-header a localization file with no l_<language>: header line
loc-bad-entry a malformed localization entry
loc-tab-indent a tab used for indentation in a localization file
loc-unterminated-value a localization value with no closing quote
loc-content-before-header content appearing before the l_<language>: header

Descriptor checks additionally use the source ck3-descriptor (missing descriptor, missing name / version / supported_version, unknown or duplicate keys, path= shipped inside descriptor.mod).

Clone this wiki locally