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).
This commit is contained in:
ymac
2026-08-16 04:11:30 +08:00
parent c9372de69b
commit d7dc609553
2 changed files with 4 additions and 1 deletions
+3 -1
View File
@@ -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<string, () => Language | LanguageSupport> = {
sql: () => sql(),
java: () => java(),
csharp: () => StreamLanguage.define(csharp),
kotlin: () => StreamLanguage.define(kotlin),
c: () => cpp(),
cpp: () => cpp(),
rust: () => rust(),
+1
View File
@@ -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()