pub struct MD022BlanksAroundHeadings { /* private fields */ }Expand description
This rule enforces consistent spacing around headings to improve document readability and visual structure.
§Purpose
- Readability: Blank lines create visual separation, making headings stand out
- Parsing: Many Markdown parsers require blank lines around headings for proper rendering
- Consistency: Creates a uniform document style throughout
- Focus: Helps readers identify and focus on section transitions
§Configuration Options
The rule supports customizing the number of blank lines required:
MD022:
lines_above: 1 # Number of blank lines required above headings (default: 1)
lines_below: 1 # Number of blank lines required below headings (default: 1)§Examples
§Correct (with default configuration)
Regular paragraph text.
# Heading 1
Content under heading 1.
## Heading 2
More content here.§Incorrect (with default configuration)
Regular paragraph text.
# Heading 1
Content under heading 1.
## Heading 2
More content here.§Special Cases
This rule handles several special cases:
- First Heading: The first heading in a document doesn’t require blank lines above if it appears at the very start of the document
- Front Matter: YAML front matter is detected and skipped
- Code Blocks: Headings inside code blocks are ignored
- Document Start/End: Adjusts requirements for headings at the beginning or end of a document
§Fix Behavior
When applying automatic fixes, this rule:
- Adds the required number of blank lines above headings
- Adds the required number of blank lines below headings
- Preserves document structure and existing content
§Performance Considerations
The rule is optimized for performance with:
- Efficient line counting algorithms
- Proper handling of front matter
- Smart code block detection
Implementations§
Source§impl MD022BlanksAroundHeadings
impl MD022BlanksAroundHeadings
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new instance of the rule with default values: lines_above = 1, lines_below = 1
Sourcepub fn with_values(lines_above: usize, lines_below: usize) -> Self
pub fn with_values(lines_above: usize, lines_below: usize) -> Self
Create with custom numbers of blank lines (applies to all heading levels)
pub fn from_config_struct(config: MD022Config) -> Self
Trait Implementations§
Source§impl Clone for MD022BlanksAroundHeadings
impl Clone for MD022BlanksAroundHeadings
Source§fn clone(&self) -> MD022BlanksAroundHeadings
fn clone(&self) -> MD022BlanksAroundHeadings
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Default for MD022BlanksAroundHeadings
impl Default for MD022BlanksAroundHeadings
Source§fn default() -> MD022BlanksAroundHeadings
fn default() -> MD022BlanksAroundHeadings
Returns the “default value” for a type. Read more
Source§impl Rule for MD022BlanksAroundHeadings
impl Rule for MD022BlanksAroundHeadings
Source§fn category(&self) -> RuleCategory
fn category(&self) -> RuleCategory
Get the category of this rule for selective processing
Source§fn should_skip(&self, ctx: &LintContext<'_>) -> bool
fn should_skip(&self, ctx: &LintContext<'_>) -> bool
Check if this rule should be skipped
fn name(&self) -> &'static str
fn description(&self) -> &'static str
fn check(&self, ctx: &LintContext<'_>) -> LintResult
fn fix(&self, ctx: &LintContext<'_>) -> Result<String, LintError>
fn as_any(&self) -> &dyn Any
Source§fn default_config_section(&self) -> Option<(String, Value)>
fn default_config_section(&self) -> Option<(String, Value)>
Returns the rule name and default config table if the rule has config.
If a rule implements this, it MUST be defined on the
impl Rule for ... block,
not just the inherent impl.Source§fn from_config(config: &Config) -> Box<dyn Rule>where
Self: Sized,
fn from_config(config: &Config) -> Box<dyn Rule>where
Self: Sized,
Factory: create a rule from config (if present), or use defaults.
Source§fn config_aliases(&self) -> Option<HashMap<String, String>>
fn config_aliases(&self) -> Option<HashMap<String, String>>
Returns config key aliases for this rule
This allows rules to accept alternative config key names for backwards compatibility
Source§fn polymorphic_config_keys(&self) -> &'static [&'static str]
fn polymorphic_config_keys(&self) -> &'static [&'static str]
Returns the list of config keys whose deserializer accepts more than one TOML
type (e.g. either a scalar or a list). The schema is built from a serialized
default that can only encode one variant, so the validator would reject the
alternative form. The registry replaces the schema entry for each listed key
with a polymorphic sentinel so type checking is skipped while the key name
is still validated. Keep
default_config_section() returning clean defaults
— the sentinel is a schema concern and must not leak into user-facing output
like rumdl config --defaults.Source§fn fix_capability(&self) -> FixCapability
fn fix_capability(&self) -> FixCapability
Declares the fix capability of this rule
Source§fn cross_file_scope(&self) -> CrossFileScope
fn cross_file_scope(&self) -> CrossFileScope
Declares cross-file analysis requirements for this rule Read more
Source§fn contribute_to_index(
&self,
_ctx: &LintContext<'_>,
_file_index: &mut FileIndex,
)
fn contribute_to_index( &self, _ctx: &LintContext<'_>, _file_index: &mut FileIndex, )
Contribute data to the workspace index during linting Read more
Source§fn cross_file_check(
&self,
_file_path: &Path,
_file_index: &FileIndex,
_workspace_index: &WorkspaceIndex,
) -> LintResult
fn cross_file_check( &self, _file_path: &Path, _file_index: &FileIndex, _workspace_index: &WorkspaceIndex, ) -> LintResult
Perform cross-file validation after all files have been linted Read more
Auto Trait Implementations§
impl Freeze for MD022BlanksAroundHeadings
impl RefUnwindSafe for MD022BlanksAroundHeadings
impl Send for MD022BlanksAroundHeadings
impl Sync for MD022BlanksAroundHeadings
impl Unpin for MD022BlanksAroundHeadings
impl UnsafeUnpin for MD022BlanksAroundHeadings
impl UnwindSafe for MD022BlanksAroundHeadings
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more