rumdl 0.2.21

A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)
Documentation
# Obsidian Flavor

For content created in [Obsidian](https://obsidian.md/), the popular knowledge management application. Extends standard flavor with Obsidian-specific syntax support.

## Supported Patterns

### Tags with Hash Syntax

MD018 recognizes Obsidian's tag syntax to avoid false positives:

```markdown
This is a #tag not a malformed heading.
Multiple #tags #in-one-line are supported.
Nested #tags/with/hierarchy work too.
```

### Callouts (Admonitions)

MD028 recognizes Obsidian callout syntax to prevent false positives when blank lines appear between callout blocks:

```markdown
> [!NOTE]
> This is a note callout.

> [!WARNING]
> This is a warning.

> [!TIP]+ Foldable (expanded by default)
> Tip content here.

> [!INFO]- Collapsed by default
> Info content here.
```

Supported callout types include:
- `note`, `abstract`, `summary`, `tldr`
- `info`, `todo`, `tip`, `hint`, `important`
- `success`, `check`, `done`
- `question`, `help`, `faq`
- `warning`, `caution`, `attention`
- `failure`, `fail`, `missing`
- `danger`, `error`, `bug`
- `example`, `quote`, `cite`

Custom callout types are also supported.

### Comments

Rules skip Obsidian comment syntax to avoid false positives inside comments:

```markdown
This is visible %%this is hidden%% and visible again.

%%
Multi-line
comments are
also supported
%%
```

Rules affected: MD011, MD012, MD034, MD037, MD044, MD049, MD061, MD064, MD069

### Highlights

MD037 and other emphasis-related rules recognize Obsidian highlight syntax:

```markdown
This is ==highlighted text== in a sentence.
```

### Dataview Inline Queries

MD038 recognizes Dataview plugin inline query syntax:

```markdown
The file name is `= this.file.name`.
Dynamic content: `$= dv.current().field`.
```

### Dataview Inline Fields

MD011 recognizes Dataview inline field syntax to prevent false positives:

```markdown
(status:: active)[link text]
(author:: John Doe)[read more]
(date:: 2024-01-01)[view]
```

These patterns look like reversed links but are valid Dataview inline field syntax.

### Extended Task Checkboxes

MD064 recognizes extended task checkbox syntax beyond the standard `[ ]`, `[x]`, and `[X]`:

```markdown
- [/] In progress
- [-] Cancelled
- [>] Deferred
- [<] Scheduled
- [?] Question
- [!] Important
- [*] Star/highlight
```

These extended checkboxes are commonly used in Obsidian with plugins like Tasks or custom CSS.

### Templater Syntax

MD033 correctly ignores Templater plugin syntax (not flagged as inline HTML):

```markdown
<% tp.date.now() %>
<%* javascript code %>
<%+ expression %>
<% tp.file.title %>
```

## Rule Behavior Changes

| Rule  | Standard Behavior              | Obsidian Behavior                                |
| ----- | ------------------------------ | ------------------------------------------------ |
| MD018 | Flag `#text` without space     | Allow `#tag` syntax                              |
| MD028 | Flag blanks between blockquotes| Recognize callout blocks                         |
| MD033 | Flag inline HTML               | Ignore Templater `<% %>` syntax                  |
| MD037 | Check emphasis spacing         | Recognize `==highlight==` syntax                 |
| MD038 | Check code span spacing        | Allow `= ` and `$= ` Dataview prefixes           |
| MD011 | Check reversed links           | Skip `%%comments%%` and `(field:: value)` patterns |
| MD012 | Check multiple blanks          | Skip content in `%%comments%%`                   |
| MD034 | Check bare URLs                | Skip content in `%%comments%%`                   |
| MD044 | Check proper names             | Skip content in `%%comments%%`                   |
| MD049 | Check emphasis style           | Skip content in `%%comments%%`                   |
| MD061 | Check link fragments           | Skip content in `%%comments%%`                   |
| MD064 | Check multiple consecutive spaces | Skip `%%comments%%`, allow extended checkboxes `[/]`, `[-]`, etc. |
| MD069 | Check reference links          | Skip content in `%%comments%%`                   |

## Configuration

```toml
[global]
flavor = "obsidian"
```

## When to Use

Use the Obsidian flavor when:

- Linting notes from your Obsidian vault
- Using Obsidian-specific syntax like callouts or comments
- Using the Dataview plugin for dynamic content
- Using the Templater plugin for templates
- Using Obsidian's tag syntax extensively

## Plugin Compatibility

The Obsidian flavor is designed to work with common Obsidian plugins:

- **Dataview**: Inline queries with `= ` and `$= ` prefixes
- **Templater**: Template syntax with `<% %>` delimiters
- **Core plugins**: Callouts, tags, wiki-links, block references

## See Also

- [Flavors Overview]../flavors.md - Compare all flavors
- [Standard Flavor]standard.md - Base flavor without Obsidian extensions
- [Obsidian Help - Callouts]https://help.obsidian.md/callouts
- [Obsidian Help - Tags]https://help.obsidian.md/tags
- [Dataview Documentation]https://blacksmithgu.github.io/obsidian-dataview/
- [Templater Documentation]https://silentvoid13.github.io/Templater/