diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/reason.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/reason.py new file mode 100644 index 00000000000000..21b532fda3adbb --- /dev/null +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/reason.py @@ -0,0 +1,27 @@ +# fmt: off +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on reason + +# fmt: off reason +x = 1 +# fmt: on reason + +# fmt: off - reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on - reason diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_skip/reason.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_skip/reason.py new file mode 100644 index 00000000000000..5fd434823af3cc --- /dev/null +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_skip/reason.py @@ -0,0 +1,3 @@ +x = 1 # fmt: skip +x = 1 # fmt: skip reason +x = 1 # fmt: skip - reason diff --git a/crates/ruff_python_formatter/src/comments/mod.rs b/crates/ruff_python_formatter/src/comments/mod.rs index 32e68982ec2a8c..e619a0c8e863e1 100644 --- a/crates/ruff_python_formatter/src/comments/mod.rs +++ b/crates/ruff_python_formatter/src/comments/mod.rs @@ -178,7 +178,14 @@ impl SourceComment { "off" => Some(SuppressionKind::Off), "on" => Some(SuppressionKind::On), "skip" => Some(SuppressionKind::Skip), - _ => None, + + // Allow additional context separated by whitespace + command => match command.split_whitespace().next() { + Some("off") => Some(SuppressionKind::Off), + Some("on") => Some(SuppressionKind::On), + Some("skip") => Some(SuppressionKind::Skip), + _ => None, + }, } } else if let Some(command) = trimmed.strip_prefix("yapf:") { match command.trim_whitespace_start() { diff --git a/crates/ruff_python_formatter/tests/snapshots/format@fmt_on_off__reason.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@fmt_on_off__reason.py.snap new file mode 100644 index 00000000000000..23972c2d0a6433 --- /dev/null +++ b/crates/ruff_python_formatter/tests/snapshots/format@fmt_on_off__reason.py.snap @@ -0,0 +1,68 @@ +--- +source: crates/ruff_python_formatter/tests/fixtures.rs +input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/reason.py +--- +## Input +```python +# fmt: off +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on reason + +# fmt: off reason +x = 1 +# fmt: on reason + +# fmt: off - reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on - reason +``` + +## Output +```python +# fmt: off +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on reason + +# fmt: off reason +x = 1 +# fmt: on reason + +# fmt: off - reason +x = 1 +# fmt: on + +# fmt: off +x = 1 +# fmt: on - reason +``` + + + diff --git a/crates/ruff_python_formatter/tests/snapshots/format@fmt_skip__reason.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@fmt_skip__reason.py.snap new file mode 100644 index 00000000000000..a6d90dc0149fce --- /dev/null +++ b/crates/ruff_python_formatter/tests/snapshots/format@fmt_skip__reason.py.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_formatter/tests/fixtures.rs +input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_skip/reason.py +--- +## Input +```python +x = 1 # fmt: skip +x = 1 # fmt: skip reason +x = 1 # fmt: skip - reason +``` + +## Output +```python +x = 1 # fmt: skip +x = 1 # fmt: skip reason +x = 1 # fmt: skip - reason +``` + + +