/AvalonEditHighlightingThemes

Implements a sample implementation for using Highlightings with different (Light/Dark) WPF themes

Primary LanguageC#MIT LicenseMIT

Build status Release NuGet

Net4 NetCore3

AvalonEditHighlightingThemes

Implements a sample implementation for using Highlightings with different (Light/Dark) WPF themes

ThemedHighlightingManager for AvalonEdit

This AvalonEdit extension implements its own highlighting manager that extends the classic way of handling highlighting definitions (see also Dirkster99/AvalonEdit-Samples).

The inital release contains 5 highlighting themes:

  • Dark
  • Light
  • True Blue-Light
  • True Blue-Dark
  • VS 2019-Dark

but you can easily define more themes. Just create a pull request with the XSHTD file at this site.

The standard highlighting in AvalonEdit is dependent on the currently viewed type of text (eg C# or SQL), but a highlighting definition designed for a Light WPF theme may look ugly if viewed with a Dark WPF theme, and vice versa. This is why the ThemedHighlightingManager extension associates each highlighting definition with:

  • A WPF Theme (Light, Dark) and
  • A type of text (C#, SQL etc)

This approach is very similar to the implementation in Notepad++ except Notepad++ uses a plain xml file to configure a highlighting theme whereas the ThemedHighlightingManager uses an XSHTD file to do the same. But at the end of the day, its XML in both projects, and cloning a highlighting theme from Notepad++ is almost too easy (thats how similar both implementations are).

Assuming that an application already use a WPF theming/management library, such as:

enables an applications author to switch highlighting definitions to a matching color palette whenever the user switches a given WPF theme. See AvalonEdit-Samples and Ähnlich for detailed sample implementations.

Themes

True Blue Light Theme

VS 2019 Dark

Dark Theme

Light Theme

True Blue Dark Theme

Concept

WPF Theme

A WPF theme is a way of styling and theming WPF controls. This is usually implemented in a seperate library, such as:

and takes advantage of WPFs way of defining and using themes ('Dark', 'Light', 'True Blue'...) with XAML resources etc.

Generic Highlighting Theme

A Generic highlighting theme is a classic collection of AvalonEdit V2 highlighting definitions (collection of xshd files). In this project, there is only one such theme, the 'Light' highlighting theme. This theme is defined in a classic collection of xshd resource files at HL.Resources.Light.

Derived Highlighting Theme

A derived highlighting theme is a highlighting theme that makes use of a Generic Highlighting Theme and overwrites formattings defined in named colors by incorporating an additional xshtd file.

This approach re-uses the highlighting patterns of the generic theme but applies different colors and formattings to better support:

  • different background colors of different WPF themes or
  • different taste towards different color schemes by different users

This project has multiple derived highlighting themes

  • 'Dark'
  • 'True Blue'
  • 'VS 2019 Dark'

which are based on the highlighting patterns of the 'Light' generic highlighting theme.

Data Design - Extension with Themable Highlighting

Data Design - Classic Highlighting Manager V6.01

Other AvalonEdit Demo Projects:

More demo projects may be listed at the AvalonEdit's Wiki page