Overview
Polaris IDE’s code editor is built on CodeMirror 6, a powerful and extensible editor framework. This guide shows you how to create custom extensions to enhance the editor.CodeMirror 6 Architecture
CodeMirror 6 uses a functional, immutable architecture:State
Immutable document and editor state
Transactions
State changes via transactions
Extensions
Modular functionality plugins
Core Concepts
Existing Extensions in Polaris
Polaris includes several custom extensions you can learn from:- AI Suggestions
- Quick Edit
- Selection Tooltip
- Minimap
- Theme
Location: View Source
src/features/editor/extensions/suggestion/index.tsProvides ghost text suggestions as you type:Creating Your First Extension
Let’s build a simple extension that highlights TODO comments:Step 1: Set Up Extension File
Createsrc/features/editor/extensions/todo-highlighter.ts:
Step 2: Register Extension
Add tosrc/features/editor/components/code-editor.tsx:
Step 3: Test It
Type in the editor:Advanced Extension Patterns
State Management with StateField
Create stateful extensions:Custom Widgets
Render custom DOM elements:Interactive Tooltips
Create custom tooltips:Custom Keybindings
Add keyboard shortcuts:Language Support
Add syntax highlighting for new languages:language-extension.ts:
Performance Optimization
Debouncing Updates
Viewport-Based Rendering
Only process visible content:Testing Extensions
Extension Examples
Bracket Colorizer
Bracket Colorizer
Color-code matching brackets:
Git Blame Inline
Git Blame Inline
Show git blame information:
Live Preview
Live Preview
Preview markdown/HTML in real-time:
Publishing Extensions
Resources
CodeMirror Docs
Official documentation and examples
Extension Examples
Learn from official examples
Polaris Source
Study existing extensions
Community Extensions
Discover community packages
Next Steps
Architecture
Understand the editor architecture
Contributing
Contribute your extensions
Background Jobs
Integrate with Trigger.dev
Setup
Set up development environment