22
33import { EditorView } from "@codemirror/view" ;
44import { useExtensionWithDependency } from "./useExtensionWithDependency" ;
5- import { javascript } from "@codemirror/lang-javascript" ;
6- import { python } from "@codemirror/lang-python" ;
7- import { markdown } from "@codemirror/lang-markdown" ;
5+ import { StreamLanguage } from "@codemirror/language" ;
6+
7+ // CodeMirror 6 languages
8+
9+ import { css } from "@codemirror/lang-css" ;
810import { cpp } from "@codemirror/lang-cpp" ;
911import { csharp } from "@replit/codemirror-lang-csharp" ;
10- import { json } from "@codemirror/lang-json" ;
12+ import { go } from "@codemirror/lang-go" ;
13+ import { html } from "@codemirror/lang-html" ;
1114import { java } from "@codemirror/lang-java" ;
15+ import { javascript } from "@codemirror/lang-javascript" ;
16+ import { json } from "@codemirror/lang-json" ;
17+ import { less } from "@codemirror/lang-less" ;
18+ import { liquid } from "@codemirror/lang-liquid" ;
19+ import { markdown } from "@codemirror/lang-markdown" ;
20+ import { php } from "@codemirror/lang-php" ;
21+ import { python } from "@codemirror/lang-python" ;
1222import { rust } from "@codemirror/lang-rust" ;
13- import { go } from "@codemirror/lang-go " ;
23+ import { sass } from "@codemirror/lang-sass " ;
1424import { sql } from "@codemirror/lang-sql" ;
15- import { php } from "@codemirror/lang-php " ;
16- import { html } from "@codemirror/lang-html" ;
17- import { css } from "@codemirror/lang-css " ;
25+ import { vue } from "@codemirror/lang-vue " ;
26+ import { xml } from "@codemirror/lang-xml"
27+ import { yaml } from "@codemirror/lang-yaml " ;
1828
29+ // Legacy CodeMirror 5 modes
30+ // https://codemirror.net/5/mode/
31+ import { apl } from "@codemirror/legacy-modes/mode/apl" ;
32+ // import { asn1 } from "@codemirror/legacy-modes/mode/asn1"; // this seems to be broken
33+ import { ceylon } from "@codemirror/legacy-modes/mode/clike" ;
34+ import { clojure } from "@codemirror/legacy-modes/mode/clojure" ;
35+ import { cmake } from "@codemirror/legacy-modes/mode/cmake" ;
36+ import { cobol } from "@codemirror/legacy-modes/mode/cobol" ;
37+ import { coffeeScript } from "@codemirror/legacy-modes/mode/coffeescript" ;
38+ import { commonLisp } from "@codemirror/legacy-modes/mode/commonlisp" ;
39+ import { crystal } from "@codemirror/legacy-modes/mode/crystal" ;
40+ import { cypher } from "@codemirror/legacy-modes/mode/cypher" ;
41+ import { d } from "@codemirror/legacy-modes/mode/d" ;
42+ import { dart } from "@codemirror/legacy-modes/mode/clike" ;
43+ // import { django } from "@codemirror/legacy-modes/mode/django"; // not present anymore
44+ import { dockerFile } from "@codemirror/legacy-modes/mode/dockerfile" ;
45+ import { diff } from "@codemirror/legacy-modes/mode/diff" ;
46+ import { elm } from "@codemirror/legacy-modes/mode/elm" ;
47+ import { erlang } from "@codemirror/legacy-modes/mode/erlang" ;
48+ import { fortran } from "@codemirror/legacy-modes/mode/fortran" ;
49+ import { gherkin } from "@codemirror/legacy-modes/mode/gherkin" ;
50+ import { groovy } from "@codemirror/legacy-modes/mode/groovy" ;
51+ import { haskell } from "@codemirror/legacy-modes/mode/haskell" ;
52+ import { idl } from "@codemirror/legacy-modes/mode/idl" ;
53+ import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2" ;
54+ import { julia } from "@codemirror/legacy-modes/mode/julia" ;
55+ import { kotlin } from "@codemirror/legacy-modes/mode/clike" ;
56+ import { liveScript } from "@codemirror/legacy-modes/mode/livescript" ;
57+ import { lua } from "@codemirror/legacy-modes/mode/lua" ;
58+ import { nesC } from "@codemirror/legacy-modes/mode/clike" ;
59+ import { nginx } from "@codemirror/legacy-modes/mode/nginx" ;
60+ import { objectiveC } from "@codemirror/legacy-modes/mode/clike" ;
61+ import { objectiveCpp } from "@codemirror/legacy-modes/mode/clike" ;
62+ import { octave } from "@codemirror/legacy-modes/mode/octave" ;
63+ import { pascal } from "@codemirror/legacy-modes/mode/pascal" ;
64+ import { perl } from "@codemirror/legacy-modes/mode/perl" ;
65+ import { powerShell } from "@codemirror/legacy-modes/mode/powershell" ;
66+ import { protobuf } from "@codemirror/legacy-modes/mode/protobuf" ;
67+ import { pug } from "@codemirror/legacy-modes/mode/pug" ;
68+ import { puppet } from "@codemirror/legacy-modes/mode/puppet" ;
69+ import { r } from "@codemirror/legacy-modes/mode/r" ;
70+ import { rpmSpec } from "@codemirror/legacy-modes/mode/rpm" ;
71+ import { ruby } from "@codemirror/legacy-modes/mode/ruby" ;
72+ import { scala } from "@codemirror/legacy-modes/mode/clike" ;
73+ import { scheme } from "@codemirror/legacy-modes/mode/scheme" ;
74+ import { shader } from "@codemirror/legacy-modes/mode/clike" ;
75+ import { shell } from "@codemirror/legacy-modes/mode/shell" ;
76+ import { squirrel } from "@codemirror/legacy-modes/mode/clike" ;
77+ import { swift } from "@codemirror/legacy-modes/mode/swift" ;
78+ import { tcl } from "@codemirror/legacy-modes/mode/tcl" ;
79+ import { textile } from "@codemirror/legacy-modes/mode/textile" ;
80+ import { stex } from "@codemirror/legacy-modes/mode/stex" ;
81+ import { toml } from "@codemirror/legacy-modes/mode/toml" ;
82+ import { turtle } from "@codemirror/legacy-modes/mode/turtle" ;
83+ // import { twig } from "@codemirror/legacy-modes/mode/twig"; // not present anymore
84+ import { vb } from "@codemirror/legacy-modes/mode/vb" ;
85+ import { vbScript } from "@codemirror/legacy-modes/mode/vbscript" ;
86+ import { velocity } from "@codemirror/legacy-modes/mode/velocity" ;
87+ // import { vue } from "@codemirror/legacy-modes/mode/vue"; // not present anymore
88+ import { verilog } from "@codemirror/legacy-modes/mode/verilog" ;
89+ import { vhdl } from "@codemirror/legacy-modes/mode/vhdl" ;
90+ import { wast } from "@codemirror/legacy-modes/mode/wast" ; // webassembly
91+ import { yacas } from "@codemirror/legacy-modes/mode/yacas" ;
92+ import { xQuery } from "@codemirror/legacy-modes/mode/xquery" ;
1993
2094export const useSyntaxHighlightingExtension = ( language : string , view : EditorView | undefined ) => {
2195 const extension = useExtensionWithDependency (
@@ -30,28 +104,23 @@ export const useSyntaxHighlightingExtension = (language: string, view: EditorVie
30104}
31105
32106export const getSyntaxHighlightingExtension = ( language : string ) => {
107+ // maps linguist language defs to CodeMirror 6 language extensions
108+ // and legacy CodeMirror 5 modes
33109 switch ( language . toLowerCase ( ) ) {
110+ // CodeMirror 6 languages
111+ case "css" :
112+ return css ( ) ;
34113 case "c" :
35114 case "c++" :
36115 return cpp ( ) ;
37116 case "c#" :
38117 return csharp ( ) ;
39- case "json" :
40- return json ( ) ;
41- case "java" :
42- return java ( ) ;
43- case "rust" :
44- return rust ( ) ;
45118 case "go" :
46119 return go ( ) ;
47- case "sql" :
48- return sql ( ) ;
49- case "php" :
50- return php ( ) ;
51120 case "html" :
52121 return html ( ) ;
53- case "css " :
54- return css ( ) ;
122+ case "java " :
123+ return java ( ) ;
55124 case "jsx" :
56125 case "tsx" :
57126 case "typescript" :
@@ -60,11 +129,157 @@ export const getSyntaxHighlightingExtension = (language: string) => {
60129 jsx : true ,
61130 typescript : true ,
62131 } ) ;
63- case "python" :
64- return python ( ) ;
132+ case "json" :
133+ case "oasv2-json" :
134+ case "oasv3-json" :
135+ case "jupyter notebook" :
136+ return json ( ) ;
137+ case "less" :
138+ return less ( ) ;
139+ case "liquid" :
140+ return liquid ( ) ;
65141 case "markdown" :
66142 return markdown ( ) ;
143+ case "php" :
144+ return php ( ) ;
145+ case "python" :
146+ return python ( ) ;
147+ case "rust" :
148+ return rust ( ) ;
149+ case "sass" :
150+ return sass ( ) ;
151+ case "sql" :
152+ return sql ( ) ;
153+ case "vue" :
154+ return vue ( ) ;
155+ case "xml" :
156+ return xml ( ) ;
157+ case "yaml" :
158+ case "oasv2-yaml" :
159+ case "oasv3-yaml" :
160+ return yaml ( ) ;
161+
162+ // Legacy CodeMirror 5 modes
163+ case "apl" :
164+ return StreamLanguage . define ( apl ) ;
165+ // case "asn.1":
166+ // return StreamLanguage.define(asn1);
167+ case "ceylon" :
168+ return StreamLanguage . define ( ceylon ) ;
169+ case "clojure" :
170+ return StreamLanguage . define ( clojure ) ;
171+ case "cmake" :
172+ return StreamLanguage . define ( cmake ) ;
173+ case "cobol" :
174+ return StreamLanguage . define ( cobol ) ;
175+ case "coffeescript" :
176+ return StreamLanguage . define ( coffeeScript ) ;
177+ case "common lisp" :
178+ return StreamLanguage . define ( commonLisp ) ;
179+ case "crystal" :
180+ return StreamLanguage . define ( crystal ) ;
181+ case "cypher" :
182+ return StreamLanguage . define ( cypher ) ;
183+ case "d" :
184+ return StreamLanguage . define ( d ) ;
185+ case "dart" :
186+ return StreamLanguage . define ( dart ) ;
187+ case "dockerfile" :
188+ return StreamLanguage . define ( dockerFile ) ;
189+ case "diff" :
190+ return StreamLanguage . define ( diff ) ;
191+ case "elm" :
192+ return StreamLanguage . define ( elm ) ;
193+ case "erlang" :
194+ return StreamLanguage . define ( erlang ) ;
195+ case "fortran" :
196+ return StreamLanguage . define ( fortran ) ;
197+ case "gherkin" :
198+ return StreamLanguage . define ( gherkin ) ;
199+ case "groovy" :
200+ return StreamLanguage . define ( groovy ) ;
201+ case "haskell" :
202+ return StreamLanguage . define ( haskell ) ;
203+ case "idl" :
204+ return StreamLanguage . define ( idl ) ;
205+ case "jinja" :
206+ return StreamLanguage . define ( jinja2 ) ;
207+ case "julia" :
208+ return StreamLanguage . define ( julia ) ;
209+ case "kotlin" :
210+ return StreamLanguage . define ( kotlin ) ;
211+ case "livescript" :
212+ return StreamLanguage . define ( liveScript ) ;
213+ case "lua" :
214+ return StreamLanguage . define ( lua ) ;
215+ case "nesc" :
216+ return StreamLanguage . define ( nesC ) ;
217+ case "nginx" :
218+ return StreamLanguage . define ( nginx ) ;
219+ case "objective-c" :
220+ return StreamLanguage . define ( objectiveC ) ;
221+ case "objective-c++" :
222+ return StreamLanguage . define ( objectiveCpp ) ;
223+ case "octave" :
224+ return StreamLanguage . define ( octave ) ;
225+ case "pascal" :
226+ return StreamLanguage . define ( pascal ) ;
227+ case "perl" :
228+ return StreamLanguage . define ( perl ) ;
229+ case "powershell" :
230+ return StreamLanguage . define ( powerShell ) ;
231+ case "protocol buffer" :
232+ return StreamLanguage . define ( protobuf ) ;
233+ case "pug" :
234+ return StreamLanguage . define ( pug ) ;
235+ case "puppet" :
236+ return StreamLanguage . define ( puppet ) ;
237+ case "r" :
238+ return StreamLanguage . define ( r ) ;
239+ case "rpm spec" :
240+ return StreamLanguage . define ( rpmSpec ) ;
241+ case "ruby" :
242+ return StreamLanguage . define ( ruby ) ;
243+ case "scala" :
244+ return StreamLanguage . define ( scala ) ;
245+ case "scheme" :
246+ return StreamLanguage . define ( scheme ) ;
247+ case "shader" :
248+ return StreamLanguage . define ( shader ) ;
249+ case "shell" :
250+ return StreamLanguage . define ( shell ) ;
251+ case "squirrel" :
252+ return StreamLanguage . define ( squirrel ) ;
253+ case "swift" :
254+ return StreamLanguage . define ( swift ) ;
255+ case "tcl" :
256+ return StreamLanguage . define ( tcl ) ;
257+ case "textile" :
258+ return StreamLanguage . define ( textile ) ;
259+ case "stex" :
260+ return StreamLanguage . define ( stex ) ;
261+ case "toml" :
262+ return StreamLanguage . define ( toml ) ;
263+ case "turtle" :
264+ return StreamLanguage . define ( turtle ) ;
265+ case "vb" :
266+ return StreamLanguage . define ( vb ) ;
267+ case "vbscript" :
268+ return StreamLanguage . define ( vbScript ) ;
269+ case "velocity" :
270+ return StreamLanguage . define ( velocity ) ;
271+ case "verilog" :
272+ return StreamLanguage . define ( verilog ) ;
273+ case "vhdl" :
274+ return StreamLanguage . define ( vhdl ) ;
275+ case "wast" :
276+ return StreamLanguage . define ( wast ) ;
277+ case "yacas" :
278+ return StreamLanguage . define ( yacas ) ;
279+ case "xquery" :
280+ return StreamLanguage . define ( xQuery ) ;
281+ // plain text
67282 default :
68283 return [ ] ;
69284 }
70- }
285+ }
0 commit comments