语言、代码检查与主题
语言
安装语言包,并将其 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 编辑器背景为深色,选区、面板等内置界面会使用深色配色。theme接受传给EditorView.theme的样式定义对象。
现成的主题通常以扩展的形式发布,通过 extensions 添加:
示例:@codemirror/theme-one-dark、@uiw/codemirror-themes、codemirror6-bootstrap-theme
其他扩展
任何 CodeMirror Extension 都可以通过 extensions 传入,它们会与其他 props 生成的扩展一起生效。
lang 和 linter 也可以通过 extensions 传入。将它们作为独立的 props,是为了类型安全以及与旧版本保持兼容。
props 变化时,组件会自动重新配置编辑器。如果做了组件无法检测到的更改,请调用实例的 forceReconfigure()。