|
| 1 | +// CodeMirror 6 Language Modes Registry |
| 2 | +// Supports all languages from CM5 Makefile (lines 84-86) |
| 3 | + |
| 4 | +import { LanguageDescription, StreamLanguage } from '@codemirror/language'; |
| 5 | + |
| 6 | +// Dedicated language packages |
| 7 | +import { javascript } from '@codemirror/lang-javascript'; |
| 8 | +import { python } from '@codemirror/lang-python'; |
| 9 | +import { xml } from '@codemirror/lang-xml'; |
| 10 | +import { markdown } from '@codemirror/lang-markdown'; |
| 11 | +import { php } from '@codemirror/lang-php'; |
| 12 | +import { sql } from '@codemirror/lang-sql'; |
| 13 | +import { go } from '@codemirror/lang-go'; |
| 14 | +import { rust } from '@codemirror/lang-rust'; |
| 15 | +import { yaml } from '@codemirror/lang-yaml'; |
| 16 | +import { html } from '@codemirror/lang-html'; |
| 17 | +import { css } from '@codemirror/lang-css'; |
| 18 | +import { json } from '@codemirror/lang-json'; |
| 19 | + |
| 20 | +// Legacy StreamLanguage modes |
| 21 | +import { shell } from '@codemirror/legacy-modes/mode/shell'; |
| 22 | +import { c, cpp, java, csharp, scala, kotlin } from '@codemirror/legacy-modes/mode/clike'; |
| 23 | +import { toml } from '@codemirror/legacy-modes/mode/toml'; |
| 24 | +import { cmake } from '@codemirror/legacy-modes/mode/cmake'; |
| 25 | +import { perl } from '@codemirror/legacy-modes/mode/perl'; |
| 26 | +import { http } from '@codemirror/legacy-modes/mode/http'; |
| 27 | +import { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile'; |
| 28 | +import { powerShell } from '@codemirror/legacy-modes/mode/powershell'; |
| 29 | +import { properties } from '@codemirror/legacy-modes/mode/properties'; |
| 30 | +import { stex } from '@codemirror/legacy-modes/mode/stex'; |
| 31 | +import { nginx } from '@codemirror/legacy-modes/mode/nginx'; |
| 32 | +import { haskell } from '@codemirror/legacy-modes/mode/haskell'; |
| 33 | +import { lua } from '@codemirror/legacy-modes/mode/lua'; |
| 34 | +import { jinja2 } from '@codemirror/legacy-modes/mode/jinja2'; |
| 35 | +import { ruby } from '@codemirror/legacy-modes/mode/ruby'; |
| 36 | + |
| 37 | +/** |
| 38 | + * Language registry for CodeMirror 6 |
| 39 | + * Covers all languages from CM5 Makefile: shell, clike, xml, python, javascript, markdown, yaml, php, sql, toml, cmake, perl, http, go, rust, dockerfile, powershell, properties, stex, nginx, haskell, lua, jinja2, ruby |
| 40 | + */ |
| 41 | +export const codeLanguages = [ |
| 42 | + LanguageDescription.of({ |
| 43 | + name: 'JavaScript', |
| 44 | + alias: ['javascript', 'js'], |
| 45 | + support: javascript() |
| 46 | + }), |
| 47 | + LanguageDescription.of({ |
| 48 | + name: 'TypeScript', |
| 49 | + alias: ['typescript', 'ts'], |
| 50 | + support: javascript({ typescript: true }) |
| 51 | + }), |
| 52 | + LanguageDescription.of({ |
| 53 | + name: 'Python', |
| 54 | + alias: ['python', 'py'], |
| 55 | + support: python() |
| 56 | + }), |
| 57 | + LanguageDescription.of({ |
| 58 | + name: 'XML', |
| 59 | + alias: ['xml'], |
| 60 | + support: xml() |
| 61 | + }), |
| 62 | + LanguageDescription.of({ |
| 63 | + name: 'HTML', |
| 64 | + alias: ['html'], |
| 65 | + support: html() |
| 66 | + }), |
| 67 | + LanguageDescription.of({ |
| 68 | + name: 'CSS', |
| 69 | + alias: ['css'], |
| 70 | + support: css() |
| 71 | + }), |
| 72 | + LanguageDescription.of({ |
| 73 | + name: 'JSON', |
| 74 | + alias: ['json'], |
| 75 | + support: json() |
| 76 | + }), |
| 77 | + LanguageDescription.of({ |
| 78 | + name: 'Markdown', |
| 79 | + alias: ['markdown', 'md'], |
| 80 | + support: markdown() |
| 81 | + }), |
| 82 | + LanguageDescription.of({ |
| 83 | + name: 'YAML', |
| 84 | + alias: ['yaml', 'yml'], |
| 85 | + support: yaml() |
| 86 | + }), |
| 87 | + LanguageDescription.of({ |
| 88 | + name: 'PHP', |
| 89 | + alias: ['php'], |
| 90 | + support: php() |
| 91 | + }), |
| 92 | + LanguageDescription.of({ |
| 93 | + name: 'SQL', |
| 94 | + alias: ['sql'], |
| 95 | + support: sql() |
| 96 | + }), |
| 97 | + LanguageDescription.of({ |
| 98 | + name: 'Go', |
| 99 | + alias: ['go'], |
| 100 | + support: go() |
| 101 | + }), |
| 102 | + LanguageDescription.of({ |
| 103 | + name: 'Rust', |
| 104 | + alias: ['rust'], |
| 105 | + support: rust() |
| 106 | + }), |
| 107 | + LanguageDescription.of({ |
| 108 | + name: 'Shell', |
| 109 | + alias: ['shell', 'bash', 'sh'], |
| 110 | + support: StreamLanguage.define(shell) |
| 111 | + }), |
| 112 | + LanguageDescription.of({ |
| 113 | + name: 'C', |
| 114 | + alias: ['c'], |
| 115 | + support: StreamLanguage.define(c) |
| 116 | + }), |
| 117 | + LanguageDescription.of({ |
| 118 | + name: 'C++', |
| 119 | + alias: ['cpp', 'c++'], |
| 120 | + support: StreamLanguage.define(cpp) |
| 121 | + }), |
| 122 | + LanguageDescription.of({ |
| 123 | + name: 'Java', |
| 124 | + alias: ['java'], |
| 125 | + support: StreamLanguage.define(java) |
| 126 | + }), |
| 127 | + LanguageDescription.of({ |
| 128 | + name: 'C#', |
| 129 | + alias: ['csharp', 'cs'], |
| 130 | + support: StreamLanguage.define(csharp) |
| 131 | + }), |
| 132 | + LanguageDescription.of({ |
| 133 | + name: 'Scala', |
| 134 | + alias: ['scala'], |
| 135 | + support: StreamLanguage.define(scala) |
| 136 | + }), |
| 137 | + LanguageDescription.of({ |
| 138 | + name: 'Kotlin', |
| 139 | + alias: ['kotlin'], |
| 140 | + support: StreamLanguage.define(kotlin) |
| 141 | + }), |
| 142 | + LanguageDescription.of({ |
| 143 | + name: 'TOML', |
| 144 | + alias: ['toml'], |
| 145 | + support: StreamLanguage.define(toml) |
| 146 | + }), |
| 147 | + LanguageDescription.of({ |
| 148 | + name: 'CMake', |
| 149 | + alias: ['cmake'], |
| 150 | + support: StreamLanguage.define(cmake) |
| 151 | + }), |
| 152 | + LanguageDescription.of({ |
| 153 | + name: 'Perl', |
| 154 | + alias: ['perl'], |
| 155 | + support: StreamLanguage.define(perl) |
| 156 | + }), |
| 157 | + LanguageDescription.of({ |
| 158 | + name: 'HTTP', |
| 159 | + alias: ['http'], |
| 160 | + support: StreamLanguage.define(http) |
| 161 | + }), |
| 162 | + LanguageDescription.of({ |
| 163 | + name: 'Dockerfile', |
| 164 | + alias: ['dockerfile'], |
| 165 | + support: StreamLanguage.define(dockerFile) |
| 166 | + }), |
| 167 | + LanguageDescription.of({ |
| 168 | + name: 'PowerShell', |
| 169 | + alias: ['powershell', 'ps1'], |
| 170 | + support: StreamLanguage.define(powerShell) |
| 171 | + }), |
| 172 | + LanguageDescription.of({ |
| 173 | + name: 'Properties', |
| 174 | + alias: ['properties'], |
| 175 | + support: StreamLanguage.define(properties) |
| 176 | + }), |
| 177 | + LanguageDescription.of({ |
| 178 | + name: 'LaTeX', |
| 179 | + alias: ['latex', 'tex', 'stex'], |
| 180 | + support: StreamLanguage.define(stex) |
| 181 | + }), |
| 182 | + LanguageDescription.of({ |
| 183 | + name: 'Nginx', |
| 184 | + alias: ['nginx'], |
| 185 | + support: StreamLanguage.define(nginx) |
| 186 | + }), |
| 187 | + LanguageDescription.of({ |
| 188 | + name: 'Haskell', |
| 189 | + alias: ['haskell'], |
| 190 | + support: StreamLanguage.define(haskell) |
| 191 | + }), |
| 192 | + LanguageDescription.of({ |
| 193 | + name: 'Lua', |
| 194 | + alias: ['lua'], |
| 195 | + support: StreamLanguage.define(lua) |
| 196 | + }), |
| 197 | + LanguageDescription.of({ |
| 198 | + name: 'Jinja2', |
| 199 | + alias: ['jinja2', 'jinja'], |
| 200 | + support: StreamLanguage.define(jinja2) |
| 201 | + }), |
| 202 | + LanguageDescription.of({ |
| 203 | + name: 'Ruby', |
| 204 | + alias: ['ruby', 'rb'], |
| 205 | + support: StreamLanguage.define(ruby) |
| 206 | + }) |
| 207 | +]; |
| 208 | + |
| 209 | +/** |
| 210 | + * Get language support by name (case-insensitive) |
| 211 | + * Supports all aliases defined in codeLanguages |
| 212 | + * @param {string} name - Language name or alias |
| 213 | + * @returns {LanguageSupport|null} Language support or null if not found |
| 214 | + */ |
| 215 | +export function getLanguage(name) { |
| 216 | + if (!name) return null; |
| 217 | + |
| 218 | + const lower = name.toLowerCase(); |
| 219 | + |
| 220 | + // Find language by alias |
| 221 | + const desc = codeLanguages.find(d => d.alias.includes(lower)); |
| 222 | + return desc ? desc.support : null; |
| 223 | +} |
0 commit comments