This document outlines the features implemented in the Mojo JetBrains plugin and the future goals for the project.
Important
This roadmap is a work in progress and is subject to change.
- Gradle build with IntelliJ Platform Gradle Plugin
- Plugin manifest (
plugin.xml) with LSP, TextMate, and UI extension points - Unit tests via
BasePlatformTestCase - Distributable plugin zip (
./gradlew buildPlugin) - File icon via
IconProvider(16x16 SVG with light/dark variants) - Code coverage via Kover with Codecov integration
- Code formatting via ktlint (
make format,make lint) - Plugin marketplace listing and publishing workflow
- TextMate grammar bundle (MagicPython-derived)
-
TextMateBundleProviderregistration with filesystem-based bundle loading - TextMate owns the file type: syntax highlighting, bracket matching, and commenting
- Language configuration: bracket pairs, comment styles (
#line,"""block), auto-closing pairs - Indent rules for Mojo keywords (
fn,struct,trait,def,if,for,while, etc.) - Folding markers (
# region/# endregion) - Semantic token highlighting from LSP (richer than TextMate scopes)
- Color scheme customization for Mojo-specific tokens
-
LspServerSupportProviderandLspServerDescriptorformojo lspandmojo-lsp-server - Automatic server start on
.mojoor🔥file open - Settings page for
mojoexecutable path (Settings > Tools > Mojo) - SDK discovery via
MODULAR_HOME,modular.cfg, andPATH - LSP include directories (
-Iflags) configuration - LSP server restart action (Tools > Restart Mojo LSP Server)
- Diagnostics suppression in docstring code blocks
- Inlay hints support
- Semantic tokens support
- Commenting (
Ctrl+/for#line comments,"""block comments) via TextMate language configuration - Brace matching for parentheses, brackets, and braces via TextMate language configuration
- "New Mojo File" action in project context menu (New > Mojo File)
- File templates: empty file, main entry point, struct
- Code folding for functions, structs, and traits
- Structure view (outline) via LSP document symbols
- Breadcrumb navigation
-
mblackformatter integration as async formatting service - Format-on-save via platform's Actions on Save > Reformat Code
- Formatter path configuration (SDK discovery via
MODULAR_HOMEandPATH)
- Run configuration type for
mojo run - Run line markers (gutter icons for files with
fn main) - Build configuration for
mojo build - Test configuration for
mojo test - Program arguments and working directory configuration
- LLDB debug configuration for compiled Mojo binaries
- Test result integration with IDE test runner UI
- Gutter icons for test functions
- IntelliJ IDEA Ultimate support (since build 253)
- PyCharm support
- CLion support
- IntelliJ IDEA Community support
- Compatibility verification across multiple IDE versions
- Mojo REPL tool window
- Jupyter notebook support for
.ipynbfiles with Mojo kernels - Package manager integration (when Mojo has one)
- Mojo SDK version manager
- Live templates and postfix completion for Mojo idioms
- Inspections and quick fixes beyond LSP diagnostics