CudaText is an [[MPLv2]] licensed [[Code Editor|Code]] [[Editor]] written in [[Pascal#Lazarus|Lazarus Free Pascal]].
- [Website](https://cudatext.github.io/)
- [Source](https://github.com/Alexey-T/CudaText)
- [Documentation](https://wiki.freepascal.org/CudaText)
> CudaText is a cross-platform text editor, written in Object Pascal. It is open source project and can be used free of charge, even for business. It starts quite fast: ~0.3 sec with ~30 plugins, on Linux on CPU Intel Core i3 3GHz. It is extensible by Python add-ons: plugins, linters, code tree parsers, external tools.
\- official website
# Notability
A particularly clean, fast, powerful, native (non-web-based) editor.
# Philosophy
## Origin
Direct descendant of discontinued Windows-only editor SynWrite,[^2], many of the internals still bear its mark.
## Dependencies
Built using several interesting dependencies.
### EControl Syntax Editor SDK
The lexer engine (for syntax highlighting) is based on the EControl Syntax Editor SDK.[^1] The developers of CudaText obtained permission to open source EControl's engine, and have added additional features. However, this creates a problem, because the engine does not include support for [[#Syntax Editor|editing lexers]].
The EControl website is offline, and seems unlikely to return. It did include a dedicated lexer editor when it was available, but it may not support all of CudaText's features.
# Platform Support
Supports just about every modern desktop OS available.
- Linux ([[QT]] & [[GTK]] versions,[^4] requires `pylib` for plugin support)
- [[AMD64]]
- [[ARM]]
- [[ARM64|AARCH64]]
- macOS (semi-unofficial(?) builds, manual [[Python]] install required for plugin support)
- [[ARM64|AARCH64]]
- [[AMD64]]
- Windows
- [[IA-32]] (i386)
- [[AMD64]]
macOS builds *are* provided by the official download site,[^3] despite the official website saying that they are unofficial.
## Unofficial Builds
Or builds available only in their own ports repo, not via the developers'.
- FreeBSD
- OpenBSD
- NetBSD
- DragonflyBSD
- Solaris
- Haiku (unofficial builds)
## Syntax Editor
CudaText does not support creating new or editing existing syntax highlighting lexers. You must use the old Windows-only SynWrite program, or a dedicated editor program[^5] derived from it, presumably because it requires features only available in the closed-source portion of the [[#EControl Syntax Editor SDK|SDK]].
They claim that it runs great in [[WINE]].
# Features
- supports files of "unlimited size" (tested with 10Gb log files)
- may not support syntax highlighting!
- hex / binary viewing
- doesn't mangle binary files
- window splits and tabs
- regex search and replace
- overview / minimap
- multi-input and multi-selection
- command palette
## Plugins
CudaText supports plugins written in [[Python]].
## Missing Features
No configuration UI. Settings must be edited by hand in JSON.
There is a theme editor, but it is just a wall of names and color patches. No way to load preset themes that I noticed.
# Tips
## Linux Installation
If you download an official QT package, it will likely not run.
This is due to it having a dynamic dependency on a library of [[QT]] Pascal bindings. Installing it allows the editor to run:
```sh
sudo eopkg install qt6pas
```
It's also not very smart about finding `libpython`.
If you already have [[Python]] installed and it still reports not finding it, then search `/usr/lib` for an `.so` file starting with `libpython3`:
```sh
cd /usr/lib
fd 'libpython3.*\.so'
```
Then to enable plugins you will probably need to edit the [[JSON]]-formatted configuration file to specify the proper name you found above:
```json
"pylib__linux": "libpython3.12.so.1.0",
```
# Resources
## Themes
- https://sourceforge.net/projects/cudatext/files/addons/themes/
# References
[^1]: https://web.archive.org/web/20200127013844/http://www.econtrol.ru/
[^2]: https://cudatext.github.io/synwrite/
[^3]: https://sourceforge.net/projects/cudatext/files/release/1.234.0.2/
[^4]: [[QT]] 5 and/or 6 as well as [[GTK]] 2 and/or 3 may be available depending on the architecture
[^5]: https://sourceforge.net/projects/cudatext/files/addons/lexer_editor_program/