Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

SynEdit

SynEdit: syntax highlighting edit control for Delphi (VCL). Maintained by Ethea, continuation of pyscripter/SynEdit (TurboPack SynEdit).

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Ethea SynEdit

Syntax highlighting edit control for Delphi VCL (10.4 to 13, Win32 and Win64), maintained by Ethea S.r.l.

New Setup for automatic installation of components

An "Installer" read-to-use is located in the Release area: Download the Installer.

The Installer automatically detect your Delphi versions, install sources, build and install packages and add source paths.

Setup

Documentation

Follow the Project Site to know how to use Ethea SynEdit: components, highlighters, demos and the migration from the original SynEdit.

Table of contents

  1. Introduction
  2. Origin of the fork and credits
  3. Package names
  4. Installation
  5. Migrating from another SynEdit
  6. Unit names: old to new
  7. License
  8. Release Notes

Introduction

SynEdit is a syntax highlighting edit control, not based on the Windows common controls. Ethea SynEdit contains TSynEdit, TDBSynEdit, more than 50 highlighters, code completion proposal, search/replace, print and print preview, spell check, code folding and multi-caret editing. It is a source-only release, with runtime and design-time packages for Delphi 10.4, 11, 12 and 13.


Origin of the fork and credits

Ethea SynEdit is a fork of pyscripter/SynEdit, itself the continuation of TurboPack SynEdit and of the original mwEdit by Martin Waldenburg and the SynEdit project contributors. The upstream project is no longer maintained, so Ethea keeps its own copy, aligned to pyscripter/SynEdit up to the commit of 25 Nov 2025, with these differences:

  • all units use the SynEdit. unit scope, so they never conflict with other SynEdit copies (pyscripter, TurboPack/GetIt) that may be in the search path;
  • packages are named EtheaSynEdit (runtime) and dclEtheaSynEdit (design time), organized per Delphi version in Packages\Delphi10_4|Delphi11|Delphi12|Delphi13;
  • Ethea additions: Markdown highlighter, TSynEditHighlighter.Options, settings and print dialogs in the library, backward-compatibility properties for existing DFMs (FontSmoothing, IndentGuides, Width, IncPaintLock/DecPaintLock).

Every unit keeps its original MPL/GPL header with the original copyright. The authors and contributors of the SynEdit and mwEdit projects are listed in Doc/Contributors.txt.

Class, type and constant names are unchanged (TSynEdit, TSynEditSearch, ecXxx, ...), so the DFMs of existing applications keep working: only the uses clauses change. As a consequence, Ethea SynEdit cannot be installed in the IDE together with another SynEdit.


Package names

Packages are in Packages\Delphi10_4, Delphi11, Delphi12, Delphi13 (with {$LIBSUFFIX AUTO}):

  • EtheaSynEdit (runtime)
  • dclEtheaSynEdit (design time, requires EtheaSynEdit)

Each folder has a PackageGroup.groupproj.


Installation

  1. Get the sources (e.g. d:\EtheaSynEdit).
  2. Start RAD Studio and add the Source folder to the IDE library path (Win32 and Win64).
  3. Open Packages\Delphi<version>\PackageGroup.groupproj, build EtheaSynEdit and install dclEtheaSynEdit. Remove any other SynEdit package from the IDE first.

Migrating from another SynEdit

Applications written for pyscripter/TurboPack SynEdit only need the new unit names. Two ways:

  • Script: python Tools\SynEditRename.py migrate <project folder> [--apply] updates uses, {$I}, .dpk contains/requires, DCCReference and runtime package names (dry-run by default). Qualified references (SynEditTypes.TBufferCoord) and strings with old names are only reported, to be fixed by hand.
  • Unit aliases: Project Options > Delphi Compiler > Unit aliases, using the output of python Tools\SynEditRename.py aliases.

Behavior changes inherited from upstream (after July 2025): types moved from SynEdit to SynEdit.Types, and TSynEditorOptionsContainer from SynEditOptionsDialog to SynEdit.MiscClasses. IncPaintLock/DecPaintLock remain as aliases of BeginUpdate/EndUpdate.


Unit names: old to new

The full table is in Tools/SynEditRenames.json (python Tools\SynEditRename.py list). The rule:

Original Ethea SynEdit Example
SynEdit.pas SynEdit.Core TSynEdit, TCustomSynEdit
SynHighlighterXxx SynEdit.Highlighter.Xxx SynEdit.Highlighter.Pas
SynEditXxx SynEdit.Xxx SynEdit.Types, SynEdit.Highlighter
SynXxx SynEdit.Xxx SynEdit.CompletionProposal, SynEdit.Unicode
dlgXxx SynEdit.dlgXxx SynEdit.dlgSearchText
SynEdit.inc, SynEditJedi.inc SynEdit.Defines.inc, SynEdit.Jedi.inc

Exception: SynHighlighterAsm is SynEdit.Highlighter.Assembler (Asm is a reserved word and cannot be a unit name segment in a package contains clause).


License

Dual license MPL 1.1 / GPL 2, as the original SynEdit: see the header of each source file.


Release Notes

03 Nov 2026: ver. 3.0.0

  • First release of Ethea SynEdit, fork of pyscripter/SynEdit aligned to its commit of 25 Nov 2025.
  • All units renamed with the SynEdit. unit scope (SynEdit.pas is now SynEdit.Core.pas); class names are unchanged.
  • New packages EtheaSynEdit / dclEtheaSynEdit for Delphi 10.4, 11, 12 and 13, Win32 and Win64.
  • Added Tools\SynEditRename.py to migrate existing projects (migrate, aliases).
  • Added the Markdown highlighter and the search/replace, print and highlighter settings dialogs.