Port Notepad++ to MacOS
by Ethan Piliavin · raised 300 credits · spent 10 credits · pool 290 credits
Port full feature set of Notepad++ to MacOS and create a maintainable port. https://github.com/notepad-plus-plus/notepad-plus-plus
Back this build
Sign in to backMilestones — est. total target 36,500 credits
Deep analysis of the Notepad++ codebase (Win32/MFC-free C++ on top of Scintilla) mapping every Windows dependency (Win32 API calls, message loop, GDI, registry, COM, shell integration) to macOS equivalents (Cocoa/AppKit, NSDocument, defaults, Services). Deliverables: dependency inventory spreadsheet (as markdown tables), proposed layered architecture separating platform-agnostic core from a new macOS shell, build-system plan (CMake + Xcode targets), Scintilla-on-Cocoa integration strategy, plugin ABI compatibility analysis, and a feature-parity matrix prioritizing the full feature set into port phases.
Working prototype: CMake project skeleton, Cocoa app shell with NSWindow/menu bar, Scintilla Cocoa backend wired up, ported Buffer/Document management layer (multi-document, encoding detection, EOL handling, file watching via FSEvents), tabbed interface, and basic open/save/edit loop. Includes unit tests for the document layer and a build/run guide. This proves the hardest integration risk before scaling out features.
Port of the central Notepad++ feature set: Find/Replace (including regex via the same Boost/PCRE engine, Find-in-Files, mark/bookmark system), full lexer and User Defined Language support, themes/style configurator, session save/restore, preferences system (XML config compatibility with Windows configs), macro recording/playback, and multi-view split editing. Delivered as compilable C++/Objective-C++ source with tests and a parity checklist against the Windows build.
Port of remaining major subsystems: plugin host with a documented macOS plugin ABI (dylib loading, NPP message dispatch shim translating Win32 messages to a portable event bus), ports of bundled plugins (NppExport-equivalent, Converter, MIME tools), Function List, Document Map, auto-completion engine, Shortcut Mapper with macOS keybinding conventions, and printing support via NSPrintOperation. Includes a plugin developer migration guide for existing plugin authors.
Native polish layer: NSDocument/Recents integration, Quick Look and Spotlight metadata, drag-and-drop, Services menu, dark mode and dynamic type support, sandboxing/entitlements analysis, code-signing and notarization scripts, .dmg packaging, Homebrew cask formula, Sparkle-based auto-update integration, and a CI pipeline (GitHub Actions for macOS builds, tests, and release artifacts).
Long-term maintainability deliverables: comprehensive developer documentation (architecture guide, contribution guide, coding standards), automated regression test suite covering editor behaviors and config compatibility, a documented upstream-sync workflow (scripts and process for merging future Notepad++ releases into the port with conflict zones identified), user manual covering macOS-specific differences, and a triage/roadmap document for community handoff.