pub struct Config {
pub extends: Option<String>,
pub global: GlobalConfig,
pub per_file_ignores: BTreeMap<String, Vec<String>>,
pub per_file_flavor: IndexMap<String, MarkdownFlavor>,
pub code_block_tools: CodeBlockToolsConfig,
pub rules: BTreeMap<String, RuleConfig>,
pub project_root: Option<PathBuf>,
/* private fields */
}Expand description
Represents the complete configuration loaded from rumdl.toml
Fields§
§extends: Option<String>Path to a base config file to inherit settings from.
Supports relative paths, absolute paths, ~/ for the home directory, and
$VAR / ${VAR} environment-variable expansion (a literal $ is written $$).
Example: extends = "../base.rumdl.toml" or extends = "$GEM_PATH/base.rumdl.toml"
global: GlobalConfigGlobal configuration options
per_file_ignores: BTreeMap<String, Vec<String>>Per-file rule ignores: maps file patterns to lists of rules to ignore Example: { “README.md”: [“MD033”], “docs/**/*.md”: [“MD013”] }
per_file_flavor: IndexMap<String, MarkdownFlavor>Per-file flavor overrides: maps file patterns to Markdown flavors Example: { “docs//*.md”: MkDocs, “/*.mdx”: MDX } Uses IndexMap to preserve config file order for “first match wins” semantics
code_block_tools: CodeBlockToolsConfigCode block tools configuration for per-language linting and formatting using external tools like ruff, prettier, shellcheck, etc.
rules: BTreeMap<String, RuleConfig>Rule-specific configurations (e.g., MD013, MD007, MD044) Each rule section can contain options specific to that rule.
Common examples:
- MD013: line_length, code_blocks, tables, headings
- MD007: indent
- MD003: style (“atx”, “atx-closed”, “setext”)
- MD044: names (array of proper names to check)
See https://github.com/rvben/rumdl for full rule documentation.
project_root: Option<PathBuf>Project root directory, used for resolving relative paths in per-file-ignores
Implementations§
Source§impl Config
impl Config
Sourcepub fn is_mkdocs_flavor(&self) -> bool
pub fn is_mkdocs_flavor(&self) -> bool
Check if the Markdown flavor is set to MkDocs
Sourcepub fn markdown_flavor(&self) -> MarkdownFlavor
pub fn markdown_flavor(&self) -> MarkdownFlavor
Get the configured Markdown flavor
Sourcepub fn is_mkdocs_project(&self) -> bool
pub fn is_mkdocs_project(&self) -> bool
Legacy method for backwards compatibility - redirects to is_mkdocs_flavor
Sourcepub fn apply_per_rule_enabled(&mut self)
pub fn apply_per_rule_enabled(&mut self)
Apply per-rule enabled config to the global enable/disable lists.
For [MD060] enabled = true: adds the rule to extend_enable and
removes it from disable and extend_disable, ensuring the rule is active.
For [MD041] enabled = false: adds the rule to disable and
removes it from extend_enable, ensuring the rule is inactive.
Per-rule enabled takes precedence over global lists when there
is a conflict, since it represents a more specific intent.
Sourcepub fn get_rule_severity(&self, rule_name: &str) -> Option<Severity>
pub fn get_rule_severity(&self, rule_name: &str) -> Option<Severity>
Get the severity override for a specific rule, if configured
Sourcepub fn get_ignored_rules_for_file(&self, file_path: &Path) -> HashSet<String>
pub fn get_ignored_rules_for_file(&self, file_path: &Path) -> HashSet<String>
Get the set of rules that should be ignored for a specific file based on per-file-ignores configuration Returns a HashSet of rule names (uppercase, e.g., “MD033”) that match the given file path
Sourcepub fn get_flavor_for_file(&self, file_path: &Path) -> MarkdownFlavor
pub fn get_flavor_for_file(&self, file_path: &Path) -> MarkdownFlavor
Get the MarkdownFlavor for a specific file based on per-file-flavor configuration. Returns the first matching pattern’s flavor, or falls back to global flavor, or auto-detects from extension, or defaults to Standard.
Sourcepub fn canonicalize_rule_lists(&mut self)
pub fn canonicalize_rule_lists(&mut self)
Canonicalize every rule-name list inside this Config.
This is the single enforcement point for the runtime invariant:
after a Config is fully built, every rule-name list contains
canonical rule IDs ("MD033") — never aliases ("no-inline-html").
The invariant lets every consumer (rules::filter_rules, the LSP,
WASM, fix coordinator, per-file-ignore lookups) match against
Rule::name() with simple string equality. Mutation boundaries
(From<SourcedConfig> for Config, LSP apply_lsp_settings_*, WASM
to_config_with_warnings) call this before handing the Config to
the linting pipeline.
Covers global.{enable,disable,extend_enable,extend_disable,fixable,unfixable}
and the values of per_file_ignores. Idempotent.
Sourcepub fn merge_with_inline_config(&self, inline_config: &InlineConfig) -> Self
pub fn merge_with_inline_config(&self, inline_config: &InlineConfig) -> Self
Merge inline configuration overrides into a copy of this config
This enables automatic inline config support - the engine can merge inline overrides and recreate rules without any per-rule changes.
Returns a new Config with the inline overrides merged in. If there are no inline overrides, returns a clone of self.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<SourcedConfig<ConfigValidated>> for Config
Convert a validated configuration to the final Config type.
impl From<SourcedConfig<ConfigValidated>> for Config
Convert a validated configuration to the final Config type.
This implementation only exists for SourcedConfig<ConfigValidated>,
ensuring that validation must occur before conversion.
Source§fn from(sourced: SourcedConfig<ConfigValidated>) -> Self
fn from(sourced: SourcedConfig<ConfigValidated>) -> Self
Source§impl JsonSchema for Config
impl JsonSchema for Config
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more