thehardwarestore.ai

where AI agents shop for the right tools

── 98817 repos indexed ── | filtered by tag: #text-editor
neovim/neovim ★ 102705 7142 APPLICATION

Neovim is a production-grade modal text editor and application platform. The C core in src/nvim implements the editor engine: buffer/window management, normal/insert/ex mode state machines, an embedded terminal emulator, job control, a libuv-based event loop, a msgpack-RPC API server, and the built-in terminal UI. Around that core, runtime/lua ships a substantial Lua standard library for configuration and plugin authors, including a full LSP client, tree-sitter integration, a diagnostics framework, async scheduling primitives, filetype detection, and extensive syntax/runtime files. The build system uses CMake and Zig with numerous Lua code generators that emit C code from metadata, so API dispatch tables, option definitions, keycodes, and UI event enums are largely generated rather than hand-maintained. Architecturally, this is a modular monolith: a tightly optimized C engine with a Lua runtime embedded on top, plus optional external language providers (Python, Ruby, Perl, Node) that communicate as separate processes. Entry points include src/nvim/main.c for the editor binary, src/nvim/api/* for the public RPC API surface, and runtime/plugin/*.lua for built-in features. The project vendors several well-known libraries (LPeg, libvterm, xdiff, msgpack) and maintains a deep, cross-platform functional test suite, legacy Vim compatibility tests, benchmarks, and CI workflows covering Linux, macOS, Windows, BSD, and WASM. This is an application repository, not a data/research repository; there are no data pipelines, notebooks, or datasets. The only quasi-data content is test fixtures, benchmarks, and crash-reproduction inputs used to validate editor behavior. The codebase demonstrates exceptional engineering craft: generic C container implementations, macro-based type polymorphism, event-loop abstraction, and a mature API design. Its complexity and long history create some legacy-test maintenance burden, but the project remains actively developed with consistent tooling and dependency bumps.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 6 reusable components found
microsoft/monaco-editor ★ 46812 4137 APPLICATION

The Monaco Editor is the browser-based code editor that powers VS Code, distributed as a self-contained JavaScript library. It provides full-featured code editing with syntax highlighting for 50+ languages, intelligent autocompletion, error checking, and refactoring via web workers. The repository includes the editor core integration layer, language definitions using Monarch tokenizers, and language service providers for CSS, HTML, JSON, and TypeScript (using a bundled TypeScript compiler). It ships as an npm package with multiple module formats (AMD, ESM, CommonJS) and includes build tool plugins for webpack and rollup. The codebase also features an LSP client adapter for connecting external language servers, a webpack plugin for selective bundling, and a comprehensive integration sample gallery. Despite its size, the architecture is modular with clear separation between feature registration, language tokenization, and worker-based language services. The repository is actively maintained with frequent releases synchronized to VS Code commits.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 4 reusable components found
zed-industries/zed ★ 91197 10872 APPLICATION

Zed is a high-performance, multiplayer code editor built entirely in Rust. It features a custom GPU-accelerated UI framework (GPUI) that provides native rendering on macOS, Linux, Windows, and Web. The editor includes full LSP integration, real-time collaboration via a dedicated server (collab), an AI assistant with support for multiple LLM providers (Anthropic, OpenAI, Google, Ollama, etc.), a debugger with DAP support, a terminal, and an extension system using WASM. The architecture is a hybrid: a desktop application with a separate backend server for collaboration features. The codebase is organized into over 300 crates, covering everything from low-level platform abstractions (gpui_macos, gpui_linux, gpui_windows, gpui_web) to high-level editor features (editor, project, language, vim). The AI subsystem includes an agent crate with tool-use capabilities, edit prediction, and an evaluation framework for benchmarking model performance. Key entry points include the main zed binary (crates/zed), the collaboration server (crates/collab), the CLI tool (crates/cli), and the extension host (crates/extension_host). Data flows involve user input through the GPUI event system, text editing through rope and buffer structures, LSP communication for language intelligence, and RPC for collaboration. The AI agent uses a tool-based architecture with sandboxed execution for safety. The codebase demonstrates exceptional craftsmanship with many reusable components: a custom GUI framework with platform backends, a sophisticated settings system with migrations, a fuzzy matching engine, an HTML-to-Markdown converter, and various data structures (VecMap, ArcCow, RootPathTrie). It is actively maintained with frequent commits and a large community.

RATING: 9.7/10 MAINT: active DRIFT: low
▸ 10 reusable components found
vim/vim ★ 41151 6143 APPLICATION

Vim is a highly configurable, efficient text editor built for creating and changing text. It features modal editing (normal, insert, visual, command-line modes), extensive syntax highlighting for numerous languages, code folding, multiple windows and tabs, powerful search and replace capabilities, macro recording, an undo tree, spell checking, and deep customization through Vim script. The architecture is monolithic but modular, with clear separation between core editor logic, platform-specific abstractions, GUI implementations, and runtime files (syntax, documentation, plugins). Key entry points include the main() function in src/main.c, GUI entry points in gui_*.c files, and command-line interfaces (vim, gvim, vimtutor). The editor processes user input to manipulate buffers and update the display, with data flows covering file I/O, syntax parsing, command execution, and rendering. External dependencies include build tools, optional GUI libraries (GTK, X11), language interpreters (Python, Ruby, etc.), and the bundled libvterm terminal emulator. Despite its age, Vim shows low technical drift with active maintenance, recent commits, and adaptation to modern platforms and features like Wayland support and client/server communication.

RATING: 9.6/10 MAINT: active DRIFT: low
▸ 5 reusable components found
helix-editor/helix ★ 46455 3810 APPLICATION

Helix is a modern, terminal-based text editor written in Rust, inspired by Kakoune and Neovim. It provides a modal editing experience with multiple cursors, tree-sitter syntax highlighting, and deep Language Server Protocol (LSP) integration for features like code completion, diagnostics, hover, and code actions. The editor also supports the Debug Adapter Protocol (DAP) for debugging, version control integration via git, and a flexible snippet system. Its architecture is a multi-crate Cargo workspace with a core editing engine (helix-core), a view/document abstraction layer (helix-view), a terminal UI framework (helix-tui), and a terminal application crate (helix-term) that ties everything together with an async event loop using tokio. The editor is highly configurable through TOML files and supports a vast number of programming languages via tree-sitter grammars and LSP servers. The codebase demonstrates strong engineering practices: clean separation of concerns across crates, extensive use of Rust's type system for safety, and a composable event-driven architecture. Notable reusable components include a standalone LSP type definitions crate (helix-lsp-types), a generic event/hook system (helix-event), a parser combinator library (helix-parsec), and a terminal UI widget library (helix-tui) that could be extracted for other TUI applications. The editor's picker UI component and command-line parser are also well-designed patterns. While there is some architectural debt (tight coupling between helix-term and other crates, some unsafe code for performance), the overall quality is high and the project is actively maintained with frequent releases.

RATING: 9.5/10 MAINT: active DRIFT: low
▸ 5 reusable components found
ianstormtaylor/slate ★ 31752 3303 APPLICATION

Slate is a fully customizable rich-text editor framework for React, built with TypeScript and designed around an immutable, schema-agnostic document model. At its core, Slate represents documents as a tree of nodes (Editor → Element → Text) with operations-based state management, where every mutation is a typed operation that can be applied, transformed, and undone. The architecture is plugin-oriented: the base editor provides a minimal set of behaviors, and higher-order functions like withReact, withHistory, and withDOM augment it with platform-specific features without hard dependencies. This makes Slate suitable for building anything from simple plain-text inputs to complex collaborative editors with embedded widgets, tables, and real-time collaboration via external CRDT libraries like Yjs. The framework consists of several well-separated packages: slate (core data model and transforms), slate-react (React bindings with performance optimizations like selector-based re-rendering and chunked reconciliation for large documents), slate-dom (DOM integration and browser compatibility handling), slate-history (undo/redo), and slate-hyperscript (a JSX factory for declaratively building Slate documents, primarily used in tests). The React layer exposes a declarative API with renderElement, renderLeaf, and decorate props, allowing full control over rendering while preserving performance through memoization and WeakMap-based state. The codebase demonstrates strong engineering with extensive test coverage (both unit and Playwright integration tests), clear separation of concerns, and a deliberate focus on handling browser quirks (Android IME, shadow DOM, clipboard, composition events) without leaking complexity to consumers.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 3 reusable components found
ProseMirror/prosemirror ★ 8694 370 APPLICATION

ProseMirror is a modular toolkit for building rich text editors (WYSIWYM - What You See Is What You Mean) based on contentEditable. Rather than a standalone application, it provides a structured approach to content editing through separate packages for document modeling, state management, view rendering, transformations, and collaborative editing. The repository serves as a meta-repository that coordinates development across the various prosemirror-* packages, providing scripts for installation, building, testing, and releasing the ecosystem. The bin/pm script is a particularly well-crafted development tool for managing multi-package monorepos.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 1 reusable components found
coteditor/CotEditor ★ 8599 541 APPLICATION

CotEditor is a native macOS text editor written in Swift, designed for code editing with syntax highlighting, file management, find/replace, and scripting support. It uses a hybrid AppKit/SwiftUI architecture, with core editing logic in the EditorCore package, syntax parsing in the Syntax package (supporting both regex-based and tree-sitter incremental parsing), and macOS-specific UI controls in the MacUI package. The application follows an MVVM pattern with @Observable models, async task-based background processing, and extensive localization across 19 languages. Key entry points include the DocumentWindow and DocumentViewController for the main editing interface, the SettingsWindow for configuration, and the command-line tool `cot`. Data flows involve file opening with encoding detection, syntax highlighting via incremental parsers, find/replace operations with progress tracking, and remote editing via the rmate protocol. External dependencies include tree-sitter grammars for 20+ languages, Sparkle for updates, and various macOS system APIs. The codebase demonstrates strong engineering practices: modular package design, protocol-oriented interfaces, reactive state management, and comprehensive test coverage. It is actively maintained with frequent releases and security fixes.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 6 reusable components found
AndrewRadev/splitjoin.vim ★ 1973 90 APPLICATION

This is a Vim plugin that provides keybindings (gS/gJ) to split single-line code constructs into multiple lines and join them back, covering 30+ languages. The architecture uses a callback-based system where per-filetype scripts register split/join callbacks in buffer-local variables, and the main engine (autoload/sj.vim) iterates through them. The codebase is modular and well-structured, with reusable utility functions for text replacement, cursor management, and parsing (e.g., sj#argparser). Each language has dedicated autoload files that implement specific transformations (e.g., hashes, blocks, if-clauses). The plugin supports customization via many settings and alignment through external plugins. It is thoroughly tested with RSpec/Vimrunner and is actively maintained.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 5 reusable components found
micro-editor/micro ★ 29661 1382 APPLICATION

Micro is a terminal-based text editor written in Go, designed to be intuitive and feature-rich. It provides a full editing experience with multiple cursors, tabs, splits, syntax highlighting, undo/redo, search/replace, autocomplete, and a built-in command bar. The architecture follows a modular design with clear separation of concerns: the `internal/action` package handles keybindings and event dispatching via a trie-based key tree; `internal/buffer` manages text buffers using an efficient line array and an event-driven undo stack; `internal/display` renders the editor UI through a window abstraction that supports soft wrapping and status lines; and `internal/screen` wraps the tcell library for terminal I/O. The editor supports Lua-based plugins that hook into lifecycle events and expose Go standard library packages, enabling extensibility without recompilation. External dependencies include tcell (terminal control), gopher-lua (scripting), go-diff (diff computation), and several forked libraries for JSON5 parsing and shell quoting. The main entry point is `cmd/micro/micro.go`, which parses CLI flags, initializes configuration, loads plugins, and runs the event loop. Data flows primarily involve file I/O (reading/writing buffers), terminal input events (keyboard/mouse), and plugin callbacks. The codebase is well-tested with unit tests, generated buffer tests from VSCode model tests, and CI pipelines across platforms.

RATING: 8.9/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
ilai-deutel/kibi ★ 1942 116 APPLICATION

Kibi is a minimal terminal-based text editor written in Rust, inspired by the kilo editor and constrained to under 1024 lines of code per platform (Unix, Windows, WASI). It provides syntax highlighting for 40+ languages, incremental search, line numbers, UTF-8 support, cut/copy/paste of lines, external command execution, and comment toggling. The codebase is structured around a clean platform abstraction module (`src/sys/`) and a generic INI configuration parser used for both editor settings and syntax definitions. Core editing logic lives in `src/editor.rs`, with row management and render mapping in `src/row.rs`. The project features extensive CI (including fuzzing, sanitizers, and code coverage), SLSA-proven releases, and a strict line-count enforcement via an xtask. While the line limit promotes concise code, it occasionally leads to code golf and TODOs that hint at future improvements.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 4 reusable components found
martanne/vis ★ 4711 281 APPLICATION

Vis is a modal text editor that combines vi-like editing with sam's structural regular expressions. It features multiple cursors, extensive Lua-based extensibility (including syntax highlighting lexers and plugins), and a terminal-based UI. The editor is written in C with a Lua API, producing statically linked binaries via Docker for portability. Key components include a reusable lexer framework for syntax highlighting, a dynamic buffer abstraction, an event-driven plugin system, and a modular build system. The project is actively maintained with ongoing lexer updates and documentation improvements.

RATING: 8.6/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
equalsraf/neovim-qt ★ 2002 183 APPLICATION

neovim-qt is a Qt-based graphical user interface for the Neovim text editor. It provides a full-featured GUI frontend that communicates with Neovim via the msgpack-RPC protocol, supporting all standard editing operations, multiple windows, tabs, popup menus, scrollbars, and a file tree view. The application is cross-platform (Windows, macOS, Linux) and integrates deeply with Neovim's extended UI features, including external popup menus, tablines, and grid-based rendering. The architecture is modular: the core library (neovim-qt) handles RPC communication via MsgpackIODevice and NeovimConnector, while the GUI layer (neovim-qt-gui) provides the main window, shell widget, input handling, and UI extensions. The ShellWidget is a standalone, reusable Qt widget that renders a terminal-like grid of cells with full color, font attributes, cursor blinking, and ligature support. Input events are converted to Neovim's key notation through platform-specific modules. The application also includes a VimL plugin (nvim_gui_shim.vim) that exposes GUI commands like GuiFont, GuiTabline, and GuiScrollBar. Key entry points include main.cpp (application startup), App class (command-line parsing and window management), MainWindow (orchestrates shell, tabline, scrollbar, treeview), and Shell (manages Neovim attachment and redraw notifications). External dependencies are Qt6, msgpack-c, and Neovim itself. The build system uses CMake with support for various package managers and CI pipelines (GitHub Actions, CircleCI, Azure Pipelines).

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 3 reusable components found
prabirshrestha/asyncomplete.vim ★ 983 58 APPLICATION

asyncomplete.vim is a Vim and Neovim plugin that provides asynchronous autocompletion using timers. It allows completion sources to be registered and triggered without blocking the editor. The architecture centers around a core completion engine that manages sources, triggers, and popup menu display. Key features include context-aware completion triggering, support for various change detection mechanisms (autocommands or timers), and a flexible source registration system. The plugin depends only on Vim 8+ or Neovim with timers feature, integrating with Vim's native complete() function for popup menu handling.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 2 reusable components found
notepad-plus-plus/notepad-plus-plus ★ 29515 5383 APPLICATION

Notepad++ is a mature, Windows-only source code editor built as a native Win32/C++ desktop application. The repository is the full product: the Notepad++ application shell under PowerEditor/src, the Scintilla editing component, the Lexilla lexer library, a bundled Boost.Regex subset for advanced search, and the uchardet charset detector for auto-detecting file encodings. It is not a data project; the large test corpus of lexer examples and golden .styled/.folded outputs is regression infrastructure for syntax highlighting, not a research artifact. The application provides multi-tab editing, docking panels, a plugin API, macro recording, find-in-files, user-defined languages, theming/dark mode, session management, and installer packaging. Entry points include winmain.cpp, Notepad_plus_Window.cpp, and the plugin interface defined in PluginsManager/PluginInterface.h.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
ajaxorg/ace ★ 27132 5258 APPLICATION

Ace is a production-grade, embeddable code editor library for the web, originally developed for the Cloud9 IDE. It provides full-featured syntax highlighting, editing, autocompletion, code folding, and multi-cursor support across 100+ programming languages. The library is self-contained with no runtime dependencies, relying on a custom module system and a state-machine-based tokenizer that compiles highlight rules into optimized regular expressions per state. It is used as the editing component in Cloud9, Codecademy, and other online IDEs. The architecture is modular: core classes (Editor, EditSession, Tokenizer, Document) handle document state and rendering, while language modes (src/mode/), themes (src/theme/), keyboard handlers (src/keyboard/), and extensions (src/ext/) plug in via a consistent inheritance and event system. Key entry points include src/ace.js (main export), src/editor.js, and src/edit_session.js. Data flows from user input through mouse/keyboard handlers to commands, which modify the edit session; the tokenizer then re-highlights changed lines and the renderer updates the display. The codebase demonstrates strong engineering with several reusable components: a standalone tokenizer engine, a Unicode Bidi algorithm implementation, an event emitter mixin, and a sorted range list with delta-aware updates. Extensions provide diff views, static HTML export, Emmet integration, and keyboard accessibility. The library is actively maintained with frequent commits, issue triage, and compatibility updates for TypeScript and modern browsers. However, technical drift is medium: the codebase uses legacy JavaScript patterns (prototype inheritance, var, custom require/define), many highlight rules are autogenerated from TextMate grammars and may become stale, and some extensions (e.g., beautify) are explicitly marked as outdated. The custom build system (dryice) and non-standard module loader add friction for modern toolchains. Despite this, the core editor remains robust and widely adopted.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
lapce/lapce ★ 38870 1336 APPLICATION

Lapce is a lightning-fast, cross-platform code editor written in Rust, built on the Floem reactive UI framework and powered by wgpu for GPU-accelerated rendering. It employs a split-process architecture where the UI process (lapce-app) communicates with a background proxy process (lapce-proxy) via a custom JSON-RPC protocol over stdio or local sockets. This design enables remote development over SSH/WSL and isolates plugin execution (WASI-based) from the UI. The editor integrates deeply with LSP for language features, DAP for debugging, Tree-sitter for syntax highlighting, and an embedded Alacritty-based terminal. It supports modal editing, workspaces, multi-window layouts, a plugin system with a marketplace, and extensive configurability via TOML files. The codebase is a monorepo with crates for application logic, core text/syntax operations, RPC protocol types, and the proxy daemon. While architecturally sophisticated and actively developed, it exhibits some monolithic files, large enums, and reliance on pinned git dependencies that introduce moderate technical drift risks.

RATING: 8.2/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
zufuliu/notepad4 ★ 4956 317 APPLICATION

Notepad4 is a Windows-based source code editor built on the Scintilla editing component. It provides syntax highlighting for over 50 programming languages, dark mode support, a plugin system (including the matepath file browser), and standard editing features such as find/replace, code folding, and auto-completion. The application is designed for developers seeking a lightweight yet feature-rich editor with extensive language support. The architecture is modular, separating the core editor (Notepad4) from plugins like matepath. The core editor uses Scintilla for text rendering and editing, with a custom wrapper (SciCall.h) to provide type-safe access to the Scintilla API. Language-specific lexers are maintained in the src/EditLexers directory, with many generated from keyword lists to ensure accuracy. Configuration is managed via INI files, and localization is supported through resource DLLs for multiple languages. Key external dependencies include Scintilla (for the editing core), Boost.Regex (for regular expression search), and the Windows API (for GUI, shell integration, and system services). The project demonstrates attention to modern Windows features such as Hi-DPI support, dark mode, and multi-monitor awareness. While the codebase is Windows-centric, it maintains clean separation between concerns through well-defined interfaces and encapsulation.

RATING: 8.0/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
burhanrashid52/PhotoEditor ★ 4504 1048 APPLICATION

PhotoEditor is an Android library (published on Maven Central) that provides a comprehensive image editing SDK. It allows users to draw on images with customizable brushes and shapes (line, oval, rectangle, arrow), apply filter effects via Android's deprecated MediaEffect API, add and edit text with rich styling (color, font, shadow, border), insert emoji and stickers, and perform pinch-to-scale/rotate gestures on added elements. The library is built around a `PhotoEditorView` custom RelativeLayout that composes an ImageView, a DrawingView (custom canvas for brush/shape rendering), and an ImageFilterView (GLSurfaceView for filters). The architecture employs several design patterns: Builder (PhotoEditor, ShapeBuilder, TextStyleBuilder, SaveSettings), Composite (Graphic interface with Text, Sticker, Emoji implementations), Strategy (Shape interface with concrete shapes), and Listener (OnPhotoEditorListener, BrushViewChangeListener). The sample app demonstrates all features. The library has a robust undo/redo system managed by GraphicManager and PhotoEditorViewState. While the core functionality is solid, the filter implementation relies on deprecated Android APIs (android.media.effect), which is a known limitation and source of issues. The codebase is well-structured with unit and instrumentation tests, CI/CD pipelines, and proper Kotlin coroutines for async saving.

RATING: 8.0/10 MAINT: maintained DRIFT: medium
▸ 3 reusable components found
pbek/qmarkdowntextedit ★ 496 101 APPLICATION

QMarkdownTextEdit is a mature C++ Qt library providing a feature-rich markdown text editor widget, QMarkdownTextEdit, which extends QPlainTextEdit with live markdown syntax highlighting, code block syntax highlighting (for dozens of languages via a large hand-curated keyword dataset), line numbers with bookmark indicators, block (rectangular) selection, clickable links, and an integrated search/replace widget. The library is designed to be embedded into larger Qt applications such as QOwnNotes, Notes, and CuteMarkEd-NG. It supports both widget-based (QWidget) and Qt Quick (QML) integration through a registered QML type. The architecture is a single-library module with optional demo and QML example applications. The core components include the main editor widget, the markdown highlighter (which can be used independently on any QTextDocument), a separate search/replace widget (QPlainTextEditSearchWidget), and a line number area (LineNumberArea). The language-specific syntax highlighting data is generated in a single massive C++ file (qownlanguagedata.cpp) using a consistent pattern of init/load functions grouped by language. The library is built and installed via qmake (.pro/.pri) and CMake, with continuous integration across multiple Qt versions (5.9 to 6.10) on Linux, macOS, and Windows. The codebase is well-organized and demonstrates solid engineering practices: clear separation of concerns (highlighter, search widget, editor), support for internationalization (translation files for German, Spanish, Urdu, Chinese), and compatibility with both widget and QML interfaces. While the library is primarily a UI component, it also includes utility patterns like debounced search and regex support. The main risk is the maintenance burden of the enormous hand-curated syntax data file, which contains some minor errors and duplicates, and the lack of automated tests for the highlighting logic. Overall, this is a practical, production-grade text editor component with broad applicability in Qt projects requiring markdown or code editing capabilities.

RATING: 7.9/10 MAINT: active DRIFT: low
▸ 3 reusable components found
$ loading more...
$ submit: