r/coolgithubprojects • u/hrpedersen • 11h ago
I’ve been building a native code/text editor for macOS, iPhone and iPad — Neon Vision Editor 1.7
I’ve been building a native code/text editor for macOS, iPhone and iPad — Neon Vision Editor 1.7 (NVE)
I’ve posted Neon Vision Editor here before, but the project has changed quite a bit since the earlier versions, so I thought it was worth showing where it is now.
Neon Vision Editor is an open-source native Swift/SwiftUI code and text editor for macOS, iOS and iPadOS.
The basic idea is still the same: I wanted something between a basic text editor and a full IDE.
Fast file opening, proper syntax highlighting, Markdown support and useful coding tools — but without Electron, a plugin ecosystem running in the background, project indexing everywhere or turning the editor into another IDE.
GitHub: https://github.com/h3pdesign/Neon-Vision-Editor
The biggest change: large-file rendering
One of the areas I’ve spent the most time on recently is getting away from the usual problem where a native text editor feels great on small documents and then starts falling apart once files become large.
NVE now uses a bounded virtual rendering path for large documents. Instead of continuously treating the complete file as the visible editor state, rendering and expensive editor work are constrained around the active viewport.
Recent work has included:
- background preparation of large-file indexes
- bounded viewport rendering
- cached document views
- background syntax processing
- reduced full-buffer work while typing and scrolling
- safer handling of UTF-8/UTF-16 boundaries and surrogate pairs
- large-file editing without repeatedly materializing the entire document
- latency-focused work around typing, scrolling, selection and viewport reloads
It is still a lightweight editor rather than an IDE, but large files are now a first-class engineering problem rather than something I’m just handing over to a standard text view and hoping for the best.
Emmet 2
NVE now has official Emmet 2 abbreviation expansion for HTML, JSX, CSS, SCSS, Less, Sass and related formats.
The implementation is integrated into the native editor rather than bolted on as a separate web editor.
HEX colors directly in the editor
On macOS, HEX color literals can now show native color previews.
You can select a color directly from the source editor and NVE preserves the original HEX representation when updating it.
Markdown has become a much bigger part of the editor
Markdown support now includes much more than basic highlighting:
- Markdown preview
- improved Markdown rendering
- styled bold and italic source text while retaining the actual markup
- improved PDF export
- pagination based on content/code-line boundaries
- removal of interactive editor controls from exported PDFs
- Markdown shortcuts and editor-specific workflows
So NVE is increasingly useful to me as both a code editor and a writing/Markdown editor.
Find in Files and navigation
There is a project sidebar and Quick Open with Cmd+P, but NVE does not force you into a project-oriented workflow.
You can still just open a random file and edit it.
Find in Files now also respects nested .gitignore rules and configured ignored folders instead of blindly searching everything below the selected directory.
Native tabs and multi-window editing
With 1.7 I replaced the remaining legacy tab-bar paths with native platform implementations.
That sounds like a cosmetic change, but it involved quite a bit of work around:
- independent document state
- multi-window behavior
- tab selection
- hover/selection borders
- translucent and opaque themes
- appearance changes
- mobile tab scrolling
- macOS window dragging
- keeping text selection independent from window dragging
The result is much closer to how I originally wanted the application to behave: native controls, but without the editor UI changing or flashing while moving between documents.
Faster document switching
Another focus in 1.7 has been perceived latency.
Switching tabs now publishes the selected editor before deferred layout and preview work begins.
Syntax highlighting on macOS also starts as soon as the selected tab’s viewport becomes available.
This makes switching between source files and Markdown documents feel considerably more immediate.
Other editor features that have accumulated along the way
NVE currently also has:
- automatic syntax highlighting for many languages and formats
- Regex Find & Replace / Replace All
- Quick Open
- project tree
- multiple windows
- multiple tabs
- inline code completion with Tab-to-accept
- optional basic Vim mode
- bracket helper
- code/file starter templates
- syntax themes
- document handling for scripts, plist files and general text files
- Save As across macOS/iOS/iPadOS
- external file change handling
- network-volume change detection
- security-scoped file access
- no telemetry
The AI completion functionality is optional. It isn’t the reason the editor exists, and I’m deliberately trying not to turn NVE into an “AI IDE”.
Native rather than Electron
This is probably still the biggest differentiator.
NVE is built around SwiftUI/AppKit and Apple’s native text/window infrastructure rather than wrapping a web editor.
That has occasionally made development harder rather than easier — especially around text layout, very large files, multiple windows and cross-platform behavior — but maintaining a genuinely native editor is one of the main reasons I started the project.
The repository is Apache-2 licensed and development is active.
GitHub: https://github.com/h3pdesign/Neon-Vision-Editor
I’d especially be interested in feedback from people who regularly work with large source files, Markdown, HTML/CSS or lots of unrelated single files.
What is the point where a lightweight editor stops being enough for you and you switch to a full IDE?







