From d7dc60955366daaa2ff5ce6f87a54ab4f94b1597 Mon Sep 17 00:00:00 2001 From: ymac <707337118@qq.com> Date: Sun, 16 Aug 2026 04:11:30 +0800 Subject: [PATCH] feat(editor): add Kotlin (.kt/.kts) syntax highlighting Map .kt/.kts to the built-in kotlin StreamLanguage from @codemirror/legacy-modes/mode/clike (no new dependencies). --- src/client/lang.ts | 4 +++- tests/unit.spec.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/lang.ts b/src/client/lang.ts index c477232..f7ac214 100644 --- a/src/client/lang.ts +++ b/src/client/lang.ts @@ -23,7 +23,7 @@ import { toml } from '@codemirror/legacy-modes/mode/toml' import { nginx } from '@codemirror/legacy-modes/mode/nginx' import { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile' import { properties } from '@codemirror/legacy-modes/mode/properties' -import { csharp } from '@codemirror/legacy-modes/mode/clike' +import { csharp, kotlin } from '@codemirror/legacy-modes/mode/clike' /** The lowercased file extension of a path ('' when none). */ export function extOf(path: string): string { @@ -50,6 +50,7 @@ export function languageKeyForExt(ext: string): string | null { case 'sql': return 'sql' case 'java': return 'java' case 'cs': return 'csharp' + case 'kt': case 'kts': return 'kotlin' case 'c': case 'h': return 'c' case 'cc': case 'cpp': case 'cxx': case 'hpp': case 'hh': case 'hxx': return 'cpp' case 'rs': return 'rust' @@ -79,6 +80,7 @@ const FACTORIES: Record Language | LanguageSupport> = { sql: () => sql(), java: () => java(), csharp: () => StreamLanguage.define(csharp), + kotlin: () => StreamLanguage.define(kotlin), c: () => cpp(), cpp: () => cpp(), rust: () => rust(), diff --git a/tests/unit.spec.ts b/tests/unit.spec.ts index 3512998..d0292f2 100644 --- a/tests/unit.spec.ts +++ b/tests/unit.spec.ts @@ -1103,6 +1103,7 @@ describe('editor language mapping', () => { expect(languageKeyForExt('sh')).toBe('shell') expect(languageKeyForExt('md')).toBe('md') expect(languageKeyForExt('cs')).toBe('csharp') + expect(languageKeyForExt('kt')).toBe('kotlin') expect(languageKeyForExt('txt')).toBeNull() expect(languageKeyForExt('log')).toBeNull() expect(languageKeyForExt('')).toBeNull()