Generated by GPT-5-mini| Scintilla | |
|---|---|
| Name | Scintilla |
| Developer | Neil Hodgson |
| Programming language | C++ |
| Operating system | Microsoft Windows, macOS, Linux |
| Genre | Source-code editor library |
| License | Scintilla License |
Scintilla is a free, open-source source-code editing component designed to provide advanced editing features such as syntax highlighting, code folding, and auto-completion for a variety of text-editing applications. Originally created by Neil Hodgson to supply rich editing capabilities to projects on Microsoft Windows and subsequently ported to macOS and Linux, Scintilla has been embedded in numerous editors, integrated development environments, and tools across the software ecosystem. The component focuses on efficient rendering, extensibility, and a small API that can be adapted by applications such as Notepad++, Geany, and SciTE.
Scintilla was authored by Neil Hodgson in the late 1990s to address limitations in existing editing widgets on Microsoft Windows. Early adoption included integration with the text editor SciTE, which Hodgson also developed as a demonstration application. During the 2000s and 2010s the library was ported and adapted for use in projects such as Notepad++, Geany, Eclipse plugins, and language-specific tools for Python (programming language), C++, Java, and Perl. Contributions and ports emerged from communities around SourceForge, GitHub, and mirror sites, leading to cross-platform compatibility with GTK+, Qt, and native macOS toolkits. Over time Scintilla’s feature set expanded with capabilities inspired by editors like Emacs and Vim and by demands from IDEs such as Visual Studio and NetBeans.
Scintilla emphasizes a lean C++ core that exposes features to host applications through a message-based API similar to control APIs used in Microsoft Windows GUI programming. Core features include syntax highlighting via lexers for languages like C#, JavaScript, HTML, CSS, and XML; code folding influenced by models used in IDEA-family tools; bracket matching used in editors like Sublime Text; and auto-completion schemes comparable to those in Eclipse and IntelliJ IDEA. Rendering is optimized for large files, borrowing techniques used by AkelPad and other high-performance editors to minimize redraw cost. Scintilla also provides indicator styles, multiple selection handling, and caret and selection behaviors seen in Notepad++ and Kate, while exposing platform-specific integrations for clipboard and drag-and-drop interactions familiar from Microsoft Windows and X Window System applications.
Scintilla includes a set of lexers, each tailored to parsing and styling constructs of languages such as C++, C#, Java, JavaScript, Python (programming language), Ruby, Perl, PHP, HTML, XML, SQL, and Lua (programming language). Bindings and ports provide access from ecosystems including Python (programming language) via wrappers, C# via interop, and GUI toolkits such as Qt and GTK+. The project supports native deployment on Microsoft Windows, POSIX environments like Linux, and macOS through platform-specific backends; notable embedding examples include the text components used by Notepad++ on Windows, the editor control integrated into Geany on Linux, and custom macOS applications that link against the Scintilla backend. Language servers and syntax plugins developed for Language Server Protocol-enabled environments sometimes leverage Scintilla for display while delegating semantic analysis to services used by Visual Studio Code and Eclipse.
Scintilla is embedded in a wide range of applications: lightweight editors such as Notepad++, project-oriented editors like Geany, and standalone IDE components exemplified by SciTE. It's used in scientific tools, automation applications, and educational software where editable source views are required, mirroring use cases found in MATLAB-integrated editors, Jupyter frontends, and custom scripting consoles for Blender (software). Plugins and extensions for text editors, tools for log viewing, and domain-specific editors for configuration files also adopt Scintilla’s API for features like syntax highlighting for JSON and YAML and for implementing code snippets and templates similar to those in Eclipse and IntelliJ IDEA. Scintilla’s message-based control model enables embedding inside GUI frameworks such as wxWidgets, Qt, and GTK+, making it suitable for cross-platform applications developed by teams using toolchains like CMake and Autotools.
Development has been driven by the original author and community contributors who maintain lexers, bindings, and platform ports. Source history and issue discussions have been hosted on platforms like SourceForge and later mirrored to GitHub where forks and pull requests from communities around Notepad++, Geany, and independent developers contribute patches and lexer improvements. Mailing lists, issue trackers, and community wikis provide coordination similar to collaboration models seen in projects such as LibreOffice and GNOME. Documentation and examples accompany the distribution, and downstream projects often ship customized lexers and styles for languages popular in ecosystems like WebKit-based editors, Node.js tooling, and scientific computing stacks used in projects associated with NumPy and SciPy.
Scintilla is distributed under the permissive Scintilla License, which allows inclusion in proprietary and open-source applications while requiring acknowledgment of original authorship. Binary and source distributions have been packaged for operating-system repositories and project-specific installers, with maintainers providing builds for Microsoft Windows installers, Debian and Fedora package maintainers, and macOS bundles for integration into applications distributed via channels such as Homebrew and platform app stores. The license model has enabled wide adoption by projects ranging from community-driven editors like Notepad++ to commercial products that embed Scintilla for advanced text editing capabilities.
Category:Text editors