
Lightweight, fast code editor offering syntax highlighting for 19+ languages, smart autocomplete, real-time error detection, auto-formatting, multi-tab file management, 19 themes, and keyboard shortcuts.
Just keep coding
A lightweight, fast, and beautiful code editor built with Kotlin Multiplatform and Compose Multiplatform. Supporting 19+ programming languages with syntax highlighting, autocomplete, and more!
# Clone the repository
git clone https://github.com/Ma7moud3ly/nemo-editor.git
cd nemo-editor
# Run on Desktop
./gradlew :composeApp:run
# Run on Android
./gradlew :composeApp:installDebug
# Run on Web
./gradlew :composeApp:wasmJsBrowserDevelopmentRuncommonMain.dependencies {
implementation("io.github.ma7moud3ly:nemo-editor:1.0.2")
}@Composable
fun MyEditor() {
val codeState = rememberCodeState(
code = "fun main() {\n println(\"Hello\")\n}",
language = Language.KOTLIN
)
NemoCodeEditor(state = codeState)
}@Composable
fun PythonEditor() {
val codeState = rememberCodeState(
code = """
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
for i in range(10):
print(fibonacci(i))
""".trimIndent(),
language = Language.PYTHON
)
val editorSettings = remember {
EditorSettings(
theme = EditorThemes.NEMO_DARK,
tabSize = 4,
)
}
NemoCodeEditor(
state = codeState,
settings = editorSettings,
modifier = Modifier.fillMaxSize()
)
}See complete documentation for more examples.
| Language | Extensions | Highlighting | Formatting | Autocomplete | Errors |
|---|---|---|---|---|---|
| Kotlin | .kt, .kts | β | β | β | β |
| Python | .py | β | β | β | β |
| Java | .java | β | β | β | β |
| JavaScript | .js | β | β | β | β |
| TypeScript | .ts | β | β | β | β |
| C | .c, .h | β | β | β | β |
| C++ | .cpp, .hpp | β | β | β | β |
| C# | .cs | β | β | β | β |
| Go | .go | β | β | β | β |
| Rust | .rs | β | β | β | β |
| Swift | .swift | β | β | β | β |
| PHP | .php | β | β | β | β |
| Ruby | .rb | β | β | β | β |
| HTML | .html, .htm | β | β | β | β |
| CSS | .css, .scss | β | β | β | β |
| XML | .xml | β | β | β | β |
| JSON | .json | β | β | β | β |
| Markdown | .md | β | β | β | β |
| SQL | .sql | β | β | β | β |
| Shell | .sh, .bash | β | β | β | β |
Dark Themes:
Light Themes:
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + N | β + N | New File |
| Ctrl + O | β + O | Open File |
| Ctrl + Shift + O | β + Shift + O | Open Folder |
| Ctrl + S | β + S | Save |
| Ctrl + Shift + S | β + Shift + S | Save As |
| Ctrl + W | β + W | Close Tab |
| Ctrl + Shift + W | β + Shift + W | Close All Tabs |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + Z | β + Z | Undo |
| Ctrl + Y | β + Y | Redo |
| Ctrl + D | β + D | Duplicate Line |
| Ctrl + L | β + L | Delete Line |
| Ctrl + / | β + / | Toggle Comment |
| Ctrl + ] | β + ] | Indent |
| Ctrl + [ | β + [ | Unindent |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + F | β + F | Find |
| Ctrl + H | β + H | Find & Replace |
| Ctrl + Shift + F | β + Shift + F | Format Code |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + = | β + = | Zoom In |
| Ctrl + - | β + - | Zoom Out |
| Ctrl + B | β + B | Toggle Sidebar |
| Ctrl + Tab | β + Tab | Next Tab |
| Ctrl + Shift + Tab | β + Shift + Tab | Previous Tab |
# Debug APK
./gradlew :composeApp:assembleDebug
# Release APK
./gradlew :composeApp:assembleRelease
# Output: composeApp/build/outputs/apk/Windows (MSI)
./gradlew :composeApp:packageMsi
# Output: composeApp/build/compose/binaries/main/msi/macOS (DMG)
./gradlew :composeApp:packageDmg
# Output: composeApp/build/compose/binaries/main/dmg/Linux (DEB)
./gradlew :composeApp:packageDeb
# Output: composeApp/build/compose/binaries/main/deb/# Development
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
# Production
./gradlew :composeApp:wasmJsBrowserDistribution
# Output: composeApp/build/dist/wasmJs/productionExecutable/Contributions are welcome! Here's how:
git checkout -b feature/amazing-feature
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
MIT License - see LICENSE file.
If you find Nemo Editor useful:
Made with β€οΈ using Kotlin Multiplatform
Nemo Editor - Just keep coding π
β Star on GitHub β’ π Documentation β’ π Report Bug β’ π¬ Discussions
Just keep coding
A lightweight, fast, and beautiful code editor built with Kotlin Multiplatform and Compose Multiplatform. Supporting 19+ programming languages with syntax highlighting, autocomplete, and more!
# Clone the repository
git clone https://github.com/Ma7moud3ly/nemo-editor.git
cd nemo-editor
# Run on Desktop
./gradlew :composeApp:run
# Run on Android
./gradlew :composeApp:installDebug
# Run on Web
./gradlew :composeApp:wasmJsBrowserDevelopmentRuncommonMain.dependencies {
implementation("io.github.ma7moud3ly:nemo-editor:1.0.2")
}@Composable
fun MyEditor() {
val codeState = rememberCodeState(
code = "fun main() {\n println(\"Hello\")\n}",
language = Language.KOTLIN
)
NemoCodeEditor(state = codeState)
}@Composable
fun PythonEditor() {
val codeState = rememberCodeState(
code = """
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
for i in range(10):
print(fibonacci(i))
""".trimIndent(),
language = Language.PYTHON
)
val editorSettings = remember {
EditorSettings(
theme = EditorThemes.NEMO_DARK,
tabSize = 4,
)
}
NemoCodeEditor(
state = codeState,
settings = editorSettings,
modifier = Modifier.fillMaxSize()
)
}See complete documentation for more examples.
| Language | Extensions | Highlighting | Formatting | Autocomplete | Errors |
|---|---|---|---|---|---|
| Kotlin | .kt, .kts | β | β | β | β |
| Python | .py | β | β | β | β |
| Java | .java | β | β | β | β |
| JavaScript | .js | β | β | β | β |
| TypeScript | .ts | β | β | β | β |
| C | .c, .h | β | β | β | β |
| C++ | .cpp, .hpp | β | β | β | β |
| C# | .cs | β | β | β | β |
| Go | .go | β | β | β | β |
| Rust | .rs | β | β | β | β |
| Swift | .swift | β | β | β | β |
| PHP | .php | β | β | β | β |
| Ruby | .rb | β | β | β | β |
| HTML | .html, .htm | β | β | β | β |
| CSS | .css, .scss | β | β | β | β |
| XML | .xml | β | β | β | β |
| JSON | .json | β | β | β | β |
| Markdown | .md | β | β | β | β |
| SQL | .sql | β | β | β | β |
| Shell | .sh, .bash | β | β | β | β |
Dark Themes:
Light Themes:
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + N | β + N | New File |
| Ctrl + O | β + O | Open File |
| Ctrl + Shift + O | β + Shift + O | Open Folder |
| Ctrl + S | β + S | Save |
| Ctrl + Shift + S | β + Shift + S | Save As |
| Ctrl + W | β + W | Close Tab |
| Ctrl + Shift + W | β + Shift + W | Close All Tabs |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + Z | β + Z | Undo |
| Ctrl + Y | β + Y | Redo |
| Ctrl + D | β + D | Duplicate Line |
| Ctrl + L | β + L | Delete Line |
| Ctrl + / | β + / | Toggle Comment |
| Ctrl + ] | β + ] | Indent |
| Ctrl + [ | β + [ | Unindent |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + F | β + F | Find |
| Ctrl + H | β + H | Find & Replace |
| Ctrl + Shift + F | β + Shift + F | Format Code |
| Windows/Linux | macOS | Action |
|---|---|---|
| Ctrl + = | β + = | Zoom In |
| Ctrl + - | β + - | Zoom Out |
| Ctrl + B | β + B | Toggle Sidebar |
| Ctrl + Tab | β + Tab | Next Tab |
| Ctrl + Shift + Tab | β + Shift + Tab | Previous Tab |
# Debug APK
./gradlew :composeApp:assembleDebug
# Release APK
./gradlew :composeApp:assembleRelease
# Output: composeApp/build/outputs/apk/Windows (MSI)
./gradlew :composeApp:packageMsi
# Output: composeApp/build/compose/binaries/main/msi/macOS (DMG)
./gradlew :composeApp:packageDmg
# Output: composeApp/build/compose/binaries/main/dmg/Linux (DEB)
./gradlew :composeApp:packageDeb
# Output: composeApp/build/compose/binaries/main/deb/# Development
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
# Production
./gradlew :composeApp:wasmJsBrowserDistribution
# Output: composeApp/build/dist/wasmJs/productionExecutable/Contributions are welcome! Here's how:
git checkout -b feature/amazing-feature
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
MIT License - see LICENSE file.
If you find Nemo Editor useful:
Made with β€οΈ using Kotlin Multiplatform
Nemo Editor - Just keep coding π
β Star on GitHub β’ π Documentation β’ π Report Bug β’ π¬ Discussions