nemo-editor

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.

Android JVMJVMKotlin/NativeWasmJS
GitHub stars20
AuthorsMa7moud3ly
Open issues4
Creation date7 months ago

Last activity7 months ago
Latest release1.0.2 (7 months ago)

🐠 Nemo Editor

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!

Kotlin Compose Platform License


📥 Download


✨ Features

🎨 Beautiful & Modern UI

  • 19 gorgeous themes (Dark & Light variants)
  • Animated logo and smooth transitions
  • Clean, distraction-free interface
  • Responsive design for all screen sizes

💻 Powerful Code Editor

  • Syntax Highlighting - 19+ languages supported
  • Smart Autocomplete - Context-aware suggestions with keyboard navigation
  • Error Detection - Real-time syntax error highlighting
  • Code Formatting - Auto-format your code beautifully
  • Auto-Indentation - Intelligent indenting based on language
  • Multi-tab Editing - Work on multiple files simultaneously
  • Find & Replace - Regex support, case-sensitive, whole word matching
  • Line Numbers - Toggle-able with gutter highlighting
  • Undo/Redo - Full history support (up to 100 actions)
  • Read-only Mode - View files without editing

📁 File Management

  • File explorer with CRUD operations
  • Open files and folders
  • Create, rename, delete files/folders
  • Recent files tracking
  • File details with metadata
  • Cross-platform file system support

⚡ Performance

  • Lightweight and fast
  • Minimal resource usage
  • Smooth scrolling and editing
  • Optimized rendering

🌐 Cross-Platform

  • Android - Native app
  • iOS - Native app
  • Desktop - Windows, macOS, Linux
  • Web - WASM support

🚀 Quick Start

Prerequisites

  • JDK 17 or higher
  • Android Studio (for Android development)
  • Xcode (for iOS development, macOS only)

Clone & Run

# 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:wasmJsBrowserDevelopmentRun

📦 Using Nemo Editor in Your KMP Project

📦 Installation

commonMain.dependencies {
    implementation("io.github.ma7moud3ly:nemo-editor:1.0.2")
}

Example: Basic Kotlin Editor

@Composable
fun MyEditor() {
    val codeState = rememberCodeState(
        code = "fun main() {\n    println(\"Hello\")\n}",
        language = Language.KOTLIN
    )
    NemoCodeEditor(state = codeState)
}

Example: Python Editor

@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.


🌍 Supported Languages

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

🎨 Available Themes

Dark Themes:

  • Nemo Dark (Default)
  • Monokai
  • Dracula
  • One Dark
  • Nord
  • Gruvbox Dark
  • Solarized Dark
  • Material Palenight
  • Atom One Dark
  • Tokyo Night

Light Themes:

  • Nemo Light
  • GitHub Light
  • Solarized Light
  • Gruvbox Light
  • Atom One Light
  • Material Lighter
  • Quiet Light
  • Light+
  • Tomorrow

⌨️ Keyboard Shortcuts

General

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

Edit

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

Search & Format

Windows/Linux macOS Action
Ctrl + F ⌘ + F Find
Ctrl + H ⌘ + H Find & Replace
Ctrl + Shift + F ⌘ + Shift + F Format Code

View

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

Autocomplete

  • - Select next
  • - Select previous
  • Enter or Tab - Accept
  • Esc - Dismiss

See complete shortcuts guide.


🏗️ Building from Source

Android

# Debug APK
./gradlew :composeApp:assembleDebug

# Release APK
./gradlew :composeApp:assembleRelease

# Output: composeApp/build/outputs/apk/

Desktop

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/

Web (WASM)

# Development
./gradlew :composeApp:wasmJsBrowserDevelopmentRun

# Production
./gradlew :composeApp:wasmJsBrowserDistribution
# Output: composeApp/build/dist/wasmJs/productionExecutable/

📖 Documentation


🤝 Contributing

Contributions are welcome! Here's how:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Guidelines

  • Follow Kotlin coding conventions
  • Write clear commit messages
  • Add tests for new features
  • Update documentation
  • Ensure all platforms build

📄 License

MIT License - see LICENSE file.


🙏 Acknowledgments


📧 Contact


⭐ Show Your Support

If you find Nemo Editor useful:

  • ⭐ Star the repository
  • 🐛 Report bugs
  • 💡 Suggest features
  • 🤝 Contribute code
  • 📢 Share with others

Made with ❤️ using Kotlin Multiplatform

Nemo Editor - Just keep coding 🐠

⭐ Star on GitHub📖 Documentation🐛 Report Bug💬 Discussions

Android JVMJVMKotlin/NativeWasmJS
GitHub stars20
AuthorsMa7moud3ly
Open issues4
Creation date7 months ago

Last activity7 months ago
Latest release1.0.2 (7 months ago)

🐠 Nemo Editor

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!

Kotlin Compose Platform License


📥 Download


✨ Features

🎨 Beautiful & Modern UI

  • 19 gorgeous themes (Dark & Light variants)
  • Animated logo and smooth transitions
  • Clean, distraction-free interface
  • Responsive design for all screen sizes

💻 Powerful Code Editor

  • Syntax Highlighting - 19+ languages supported
  • Smart Autocomplete - Context-aware suggestions with keyboard navigation
  • Error Detection - Real-time syntax error highlighting
  • Code Formatting - Auto-format your code beautifully
  • Auto-Indentation - Intelligent indenting based on language
  • Multi-tab Editing - Work on multiple files simultaneously
  • Find & Replace - Regex support, case-sensitive, whole word matching
  • Line Numbers - Toggle-able with gutter highlighting
  • Undo/Redo - Full history support (up to 100 actions)
  • Read-only Mode - View files without editing

📁 File Management

  • File explorer with CRUD operations
  • Open files and folders
  • Create, rename, delete files/folders
  • Recent files tracking
  • File details with metadata
  • Cross-platform file system support

⚡ Performance

  • Lightweight and fast
  • Minimal resource usage
  • Smooth scrolling and editing
  • Optimized rendering

🌐 Cross-Platform

  • Android - Native app
  • iOS - Native app
  • Desktop - Windows, macOS, Linux
  • Web - WASM support

🚀 Quick Start

Prerequisites

  • JDK 17 or higher
  • Android Studio (for Android development)
  • Xcode (for iOS development, macOS only)

Clone & Run

# 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:wasmJsBrowserDevelopmentRun

📦 Using Nemo Editor in Your KMP Project

📦 Installation

commonMain.dependencies {
    implementation("io.github.ma7moud3ly:nemo-editor:1.0.2")
}

Example: Basic Kotlin Editor

@Composable
fun MyEditor() {
    val codeState = rememberCodeState(
        code = "fun main() {\n    println(\"Hello\")\n}",
        language = Language.KOTLIN
    )
    NemoCodeEditor(state = codeState)
}

Example: Python Editor

@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.


🌍 Supported Languages

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

🎨 Available Themes

Dark Themes:

  • Nemo Dark (Default)
  • Monokai
  • Dracula
  • One Dark
  • Nord
  • Gruvbox Dark
  • Solarized Dark
  • Material Palenight
  • Atom One Dark
  • Tokyo Night

Light Themes:

  • Nemo Light
  • GitHub Light
  • Solarized Light
  • Gruvbox Light
  • Atom One Light
  • Material Lighter
  • Quiet Light
  • Light+
  • Tomorrow

⌨️ Keyboard Shortcuts

General

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

Edit

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

Search & Format

Windows/Linux macOS Action
Ctrl + F ⌘ + F Find
Ctrl + H ⌘ + H Find & Replace
Ctrl + Shift + F ⌘ + Shift + F Format Code

View

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

Autocomplete

  • - Select next
  • - Select previous
  • Enter or Tab - Accept
  • Esc - Dismiss

See complete shortcuts guide.


🏗️ Building from Source

Android

# Debug APK
./gradlew :composeApp:assembleDebug

# Release APK
./gradlew :composeApp:assembleRelease

# Output: composeApp/build/outputs/apk/

Desktop

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/

Web (WASM)

# Development
./gradlew :composeApp:wasmJsBrowserDevelopmentRun

# Production
./gradlew :composeApp:wasmJsBrowserDistribution
# Output: composeApp/build/dist/wasmJs/productionExecutable/

📖 Documentation


🤝 Contributing

Contributions are welcome! Here's how:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Guidelines

  • Follow Kotlin coding conventions
  • Write clear commit messages
  • Add tests for new features
  • Update documentation
  • Ensure all platforms build

📄 License

MIT License - see LICENSE file.


🙏 Acknowledgments


📧 Contact


⭐ Show Your Support

If you find Nemo Editor useful:

  • ⭐ Star the repository
  • 🐛 Report bugs
  • 💡 Suggest features
  • 🤝 Contribute code
  • 📢 Share with others

Made with ❤️ using Kotlin Multiplatform

Nemo Editor - Just keep coding 🐠

⭐ Star on GitHub📖 Documentation🐛 Report Bug💬 Discussions