Skip to content

Ma7moud3ly/nemo-editor

Repository files navigation

🐠 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

About

Just keep coding

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages