言語・リンター・テーマ
言語
言語パッケージをインストールし、その LanguageSupport オブジェクトを lang に渡します。
公式の言語パッケージには次のものがあります。
@codemirror/lang-angular、lang-cpp、lang-css、lang-html、lang-java、lang-javascript、lang-json、lang-lezer、lang-markdown、lang-php、lang-python、lang-rust、lang-sql、lang-vue、lang-wast、lang-xml
コミュニティ製のパッケージも多数あります。CodeMirror の言語一覧 と下記の一覧を参照してください。
コミュニティ製の言語パッケージ
@phoenix-plugin-registry/petetnt.brackets-codemirror-fortran@phoenix-plugin-registry/petetnt.brackets-codemirror-go@acarl005/lang-sql@ark-us/codemirror-lang-taylor@formulavize/lang-fiz@gravitywiz/codemirror-lang-gfcalc@nextjournal/lang-clojure@plutojl/lang-julia@polybase/codemirror-lang-javascript@replit/codemirror-lang-nix@replit/codemirror-lang-csharp@replit/codemirror-lang-solidity@replit/codemirror-lang-svelte@zhijiu/lang-sqlcodemirror-lang-boolcodemirror-lang-brainfuckcodemirror-lang-cherrycodemirror-lang-chordprocodemirror-lang-circomcodemirror-lang-edncodemirror-lang-ejscodemirror-lang-fslcodemirror-lang-gmlcodemirror-lang-golfscriptcodemirror-lang-homescriptcodemirror-lang-html-n8ncodemirror-lang-inform7codemirror-lang-jcodemirror-lang-janetcodemirror-lang-kcodemirror-lang-karolcodemirror-lang-mermaidcodemirror-lang-n8n-expressioncodemirror-lang-prologcodemirror-lang-qpencodemirror-lang-qtamcodemirror-lang-rcodemirror-lang-rome-astcodemirror-lang-romecodemirror-lang-rushcodemirror-lang-scopescriptcodemirror-lang-statementgcode-lang-codemirrorgmail-langlang-bqnlang-clojurelang-dlang-feellang-firestore
リンター
linter に LintSource を渡します。gutter を付けると、問題のある行にマーカーが表示されます。
JavaScript の場合、@codemirror/lang-javascript の esLint() と eslint-linter-browserify を組み合わせて使えます。
診断結果の件数は インスタンス の diagnosticCount で取得でき、lint() で任意のタイミングでリンターを実行できます。
エディタ内で Ctrl+Shift+M(macOS では Cmd+Shift+M)を押すとリンターのパネルが開き、F8 で次の問題に移動できます。
テーマとダークモード
darkは、エディタの背景が暗いことを CodeMirror に伝えます。選択範囲やパネルなどの組み込み UI が暗い配色になります。themeにはEditorView.themeに渡すスタイル定義のオブジェクトを指定します。
配布されているテーマの多くは拡張機能の形式なので、extensions で追加します。
例:@codemirror/theme-one-dark、@uiw/codemirror-themes、codemirror6-bootstrap-theme
その他の拡張機能
CodeMirror の Extension は何でも extensions で渡せます。ほかの props から生成される拡張機能と組み合わせて適用されます。
lang と linter も extensions で指定できます。これらが独立した props になっているのは、型付けと以前のバージョンとの互換性のためです。
props が変わるとコンポーネントはエディタを自動的に再設定します。コンポーネントが検知できない変更をした場合は、インスタンスの forceReconfigure() を呼び出してください。