diff --git a/src/Highlighter.php b/src/Highlighter.php index 6c2236c..4ad8162 100644 --- a/src/Highlighter.php +++ b/src/Highlighter.php @@ -84,6 +84,7 @@ public function __construct( ->addLanguage(new ScssLanguage()) ->addLanguage(new SqlLanguage()) ->addLanguage(new TerminalLanguage()) + ->addLanguage(new TextLanguage()) ->addLanguage(new TerraformLanguage()) ->addLanguage(new TypeScriptLanguage()) ->addLanguage(new XmlLanguage()) diff --git a/tests/Bench/Fixtures/text.txt b/tests/Bench/Fixtures/text.txt new file mode 100644 index 0000000..024e04d --- /dev/null +++ b/tests/Bench/Fixtures/text.txt @@ -0,0 +1,3 @@ +Plain text may contain protocol method names such as resources/list and mcp:list. +It may also contain HTTP header names such as Sec-Fetch-Site. +No syntax highlighting should be applied to this content. diff --git a/tests/Bench/HighlighterBench.php b/tests/Bench/HighlighterBench.php index f44f669..da86b8b 100644 --- a/tests/Bench/HighlighterBench.php +++ b/tests/Bench/HighlighterBench.php @@ -42,6 +42,7 @@ final class HighlighterBench 'terminal' => 'terminal.txt', 'terraform' => 'terraform.txt', 'typescript' => 'typescript.txt', + 'txt' => 'text.txt', 'twig' => 'twig.txt', 'vue' => 'vue.txt', 'xml' => 'xml.txt', diff --git a/tests/HighlighterTest.php b/tests/HighlighterTest.php index 1916337..b4638ac 100644 --- a/tests/HighlighterTest.php +++ b/tests/HighlighterTest.php @@ -151,4 +151,14 @@ public function test_fallback_language(): void $highlighted, ); } + + #[Test] + public function text_language_does_not_use_the_configured_fallback_language(): void + { + $highlighter = new Highlighter(fallbackLanguage: new PhpLanguage()); + + $this->assertSame('mcp:list', $highlighter->parse('mcp:list', 'txt')); + $this->assertSame('resources/list', $highlighter->parse('resources/list', 'text')); + $this->assertSame('Sec-Fetch-Site', $highlighter->parse('Sec-Fetch-Site', 'txt')); + } }