From a83425ff680f28263c2fffadb7500bcc83f02903 Mon Sep 17 00:00:00 2001 From: Paddy Xu Date: Fri, 13 Mar 2020 22:28:10 +0200 Subject: [PATCH] Fix #613: Ruby syntax highlighting --- .../Syntax/Ruby.xshd | 263 ++++++++++++++++++ .../Syntax/_LICENSE | 2 +- .../Syntax/_README.md | 108 +++++++ 3 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/Ruby.xshd diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/Ruby.xshd b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/Ruby.xshd new file mode 100644 index 0000000..60ddd3d --- /dev/null +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/Ruby.xshd @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + FIXME + + + HACK + UNDONE + + + + + + + \b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)? + + + [?,.:;()\[\]{}+\-/%*<>^=~!]+ + + + + ' + ' + + + + + + + """ + """ + + + \=begin + \=end + + + \# + + + " + " + + + + + + + + abort + Array + at_exit + autoload + binding + callcc + caller + chomp + chop + eval + exec + exit + fail + Float + fork + format + gets + global_variables + gsub + Integer + lambda + proc + load + local_variables + loop + open + p + print + print + printf + putc + puts + rand + readline + scan + select + set_trace_func + sleep + split + sprintf + srand + String + syscall + system + sub + test + throw + trace_var + trap + untrace_var + + + + class + module + public + protected + private + + + + begin + rescue + ensure + raise + catch + + + + def + end + undef + + + + for + do + in + while + until + + + + break + yield + redo + return + retry + next + + + + and + not + or + + + + nil + + + + elsif + else + if + then + case + unless + + + + true + false + + + + defined + + + + self + + + + super + + + + import + alias + + + + include + require + + + [\d\w_]+(?=(\s*\()) + @([\w]+) + &([\w]+) + + + + + + TODO + FIXME + + + HACK + UNDONE + + + + =begin + =end + + + TODO + FIXME + + + HACK + UNDONE + + + =begin + =end + + + + + diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_LICENSE b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_LICENSE index 8d6be55..9bad588 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_LICENSE +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016 Ezra Altahan +Copyright (c) 2016 Ezra Altahan and 2019 Dirkster99 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_README.md b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_README.md index b8f8f9b..9957ab9 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_README.md +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Syntax/_README.md @@ -88,3 +88,111 @@ Contact Author Legal ----- This project is distributed under the [MIT License](https://opensource.org/licenses/MIT) + + +/******************************************************/ + + +[![Build status](https://ci.appveyor.com/api/projects/status/s19eint5cqhjxh5h/branch/master?svg=true)](https://ci.appveyor.com/project/Dirkster99/avalonedithighlightingthemes/branch/master) [![Release](https://img.shields.io/github/release/Dirkster99/AvalonEditHighlightingThemes.svg)](https://github.com/Dirkster99/AvalonEditHighlightingThemes/releases/latest) [![NuGet](https://img.shields.io/nuget/dt/Dirkster.HL.svg)](http://nuget.org/packages/Dirkster.HL) + +# AvalonEditHighlightingThemes +Implements a sample implementation for using Highlightings with different (Light/Dark) WPF themes + +# ThemedHighlightingManager for AvalonEdit + +This [AvalonEdit](https://github.com/icsharpcode/AvalonEdit) extension implements its own highlighting manager that extends the classic way of handling highlighting definitions (see also [Dirkster99/AvalonEdit-Samples](https://github.com/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](https://github.com/Dirkster99/AvalonEditHighlightingThemes/tree/master/source/HL/Resources/Themes) 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](https://github.com/Dirkster99/AvalonEditHighlightingThemes/wiki/Highlighting-without-a-Theme) 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++](https://github.com/notepad-plus-plus/notepad-plus-plus) except Notepad++ uses a plain [xml file](https://lonewolfonline.net/notepad-colour-schemes/) to configure a highlighting theme whereas the **ThemedHighlightingManager** uses an [XSHTD file](https://github.com/Dirkster99/AvalonEditHighlightingThemes/tree/master/source/HL/Resources/Themes) 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: +- [MahApps.Metro](https://github.com/MahApps/MahApps.Metro), +- [MLib](https://github.com/Dirkster99/MLib), or +- [MUI](https://github.com/firstfloorsoftware/mui) + +enables an applications author to switch highlighting definitions to a matching color palette whenever the user +switches a given WPF theme. See [AvalonEditHighlightingThemes](https://github.com/Dirkster99/AvalonEditHighlightingThemes) +and [Aehnlich](https://github.com/Dirkster99/Aehnlich) for detailed sample implementations. + +# Themes +![](screenshots/Themes.png) + +## True Blue Light Theme +![](screenshots/TrueBlue_Light.png) + +## VS 2019 Dark +![](screenshots/VS2019_Dark.png) + +## Dark Theme +![](screenshots/Dark.png) + +## Light Theme +![](screenshots/Light.png) + +## True Blue Dark Theme +![](screenshots/TrueBlue_Dark.png) + +# 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: +- [MahApps.Metro](https://github.com/MahApps/MahApps.Metro), +- [MLib](https://github.com/Dirkster99/MLib), or +- [MUI](https://github.com/firstfloorsoftware/mui) + +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](https://github.com/Dirkster99/AvalonEditHighlightingThemes/tree/master/source/Apps/HL/Resources/Light). + +## Derived Highlighting Theme + +A derived highlighting theme is a highlighting theme that makes use of a +[Generic Highlighting Theme](#Generic-Highlighting-Theme) and overwrites +formattings defined in named colors by incorporating an additional xsh**t**d 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 + +![](screenshots/HighlightingManagerV2.png) + +## Data Design - Classic Highlighting Manager V5.04 + +![](screenshots/ClassicHighlighting.png) + +## Other AvalonEdit Demo Projects: + +More demo projects may be listed at the [AvalonEdit's Wiki page](https://github.com/icsharpcode/AvalonEdit/wiki/Samples-and-Articles) \ No newline at end of file