From 94c57f750fd544bcffbf4df2a40c09f8a155a547 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 27 May 2020 20:00:35 +0300 Subject: Added common snippets. --- .../Tango.Scripting.Editors/Images/snippet.png | Bin 0 -> 147 bytes .../Intellisense/CompletionItem.cs | 7 ++- .../Intellisense/SnippetCompletionItem.cs | 26 +++++++++ .../Tango.Scripting.Editors/ScriptEditor.cs | 63 +++++++++++++++++++++ .../Tango.Scripting.Editors.csproj | 6 +- .../Tango.Scripting.Editors/Themes/Generic.xaml | 1 + 6 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.png create mode 100644 Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/SnippetCompletionItem.cs (limited to 'Software/Visual_Studio/Scripting') diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.png b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.png new file mode 100644 index 000000000..fe4d71eb4 Binary files /dev/null and b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.png differ diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/CompletionItem.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/CompletionItem.cs index c8beebd28..191f99b6c 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/CompletionItem.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/CompletionItem.cs @@ -31,7 +31,7 @@ namespace Tango.Scripting.Editors.Intellisense int index = editor.GetCurrentWordStartIndex(); int max = editor.GetCurrentLine().EndOffset; - editor.Document.Replace(index, word.Length,Text); + editor.Document.Replace(index, word.Length, GetCode()); } public abstract BitmapSource Image { get; } @@ -41,6 +41,11 @@ namespace Tango.Scripting.Editors.Intellisense return new BitmapImage(new Uri($"pack://application:,,,/Tango.Scripting.Editors;component/Images/{name}", UriKind.Absolute)); } + protected virtual String GetCode() + { + return Text; + } + public override string ToString() { return Text; diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/SnippetCompletionItem.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/SnippetCompletionItem.cs new file mode 100644 index 000000000..97807ed19 --- /dev/null +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/SnippetCompletionItem.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media.Imaging; + +namespace Tango.Scripting.Editors.Intellisense +{ + public class SnippetCompletionItem : CompletionItem + { + private static BitmapSource image = GetImage("snippet.png"); + + public override string Text => Name; + public override CompletionItemPopupControl PopupControl => new FieldCompletionItemPopup(); + public override BitmapSource Image => image; + + public String Name { get; set; } + public String Code { get; set; } + + protected override string GetCode() + { + return Code; + } + } +} diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs index f63cedcdc..6417e34f8 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs @@ -64,6 +64,7 @@ namespace Tango.Scripting.Editors private static bool _isLoadingCachedAssemblies; private static bool _isCacheAssembliesLoaded; private static object _loadUsingsLock = new object(); + private static List snippets; public static event EventHandler> LoadingSymbolsProgress; public static event EventHandler LoadingSymbolsStarted; @@ -171,6 +172,8 @@ namespace Tango.Scripting.Editors { DefaultStyleKeyProperty.OverrideMetadata(typeof(ScriptEditor), new FrameworkPropertyMetadata(typeof(ScriptEditor))); + snippets = new List(); + BlockedUsingsCache = new List(); if (KNOWN_TYPES_CACHE_FOLDER == null) @@ -188,6 +191,61 @@ namespace Tango.Scripting.Editors _knownTypesCache = new Dictionary(); _cachedAssemblies = new List(); _cachedUsings = new List(); + + snippets.Add(new SnippetCompletionItem() + { + Name = "for", + Code = @"for (int i = 0; i < 10; i++) + { + + }" + }); + + snippets.Add(new SnippetCompletionItem() + { + Name = "while", + Code = @"while (true) + { + + }" + }); + + snippets.Add(new SnippetCompletionItem() + { + Name = "foreach", + Code = @"foreach (var item in items) + { + + }" + }); + + snippets.Add(new SnippetCompletionItem() + { + Name = "prop", + Code = @"public int MyProperty { get; set; }" + }); + + snippets.Add(new SnippetCompletionItem() + { + Name = "do", + Code = @"do + { + + } while (true)" + }); + + snippets.Add(new SnippetCompletionItem() + { + Name = "try", + Code = @"try + { + + } + catch (Exception ex) + { + + }" + }); } /// @@ -746,6 +804,11 @@ namespace Tango.Scripting.Editors { IList data = new List(); + foreach (var snippet in snippets) + { + data.Add(snippet); + } + foreach (var type in _declaredTypes.Where(x => x.Name.StartsWith(word))) { if (type.Kind == TypeKind.Struct) diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj index 5f9548262..94e3c4b0b 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj @@ -355,6 +355,7 @@ + @@ -644,9 +645,12 @@ + + + - + \ No newline at end of file diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Themes/Generic.xaml b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Themes/Generic.xaml index e8e5ffb91..414006f3a 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Themes/Generic.xaml +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Themes/Generic.xaml @@ -48,6 +48,7 @@ + -- cgit v1.3.1