From 716eb0d09613f4b55a20db2cdc8aadab69a23448 Mon Sep 17 00:00:00 2001 From: Daniel Imfeld Date: Fri, 17 Apr 2026 16:21:52 -1000 Subject: [PATCH] Fix plain-text language attachment detection in diffs --- .../languages/areLanguagesAttached.ts | 3 +++ .../diffs/test/areLanguagesAttached.test.ts | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 packages/diffs/test/areLanguagesAttached.test.ts diff --git a/packages/diffs/src/highlighter/languages/areLanguagesAttached.ts b/packages/diffs/src/highlighter/languages/areLanguagesAttached.ts index defcea51b..34c614b08 100644 --- a/packages/diffs/src/highlighter/languages/areLanguagesAttached.ts +++ b/packages/diffs/src/highlighter/languages/areLanguagesAttached.ts @@ -5,6 +5,9 @@ export function areLanguagesAttached( languages: SupportedLanguages | SupportedLanguages[] ): boolean { for (const language of Array.isArray(languages) ? languages : [languages]) { + if (language === 'text' || language === 'ansi') { + continue; + } if (!AttachedLanguages.has(language)) { return false; } diff --git a/packages/diffs/test/areLanguagesAttached.test.ts b/packages/diffs/test/areLanguagesAttached.test.ts new file mode 100644 index 000000000..203c46334 --- /dev/null +++ b/packages/diffs/test/areLanguagesAttached.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, test } from 'bun:test'; + +import { areLanguagesAttached } from '../src/highlighter/languages/areLanguagesAttached'; +import { AttachedLanguages } from '../src/highlighter/languages/constants'; + +describe('areLanguagesAttached', () => { + test('treats builtin text-like languages as already attached', () => { + AttachedLanguages.clear(); + + expect(areLanguagesAttached('text')).toBe(true); + expect(areLanguagesAttached('ansi')).toBe(true); + }); + + test('still requires explicit attachment for non-builtin languages', () => { + AttachedLanguages.clear(); + + expect(areLanguagesAttached('typescript')).toBe(false); + + AttachedLanguages.add('typescript'); + expect(areLanguagesAttached('typescript')).toBe(true); + }); +});