aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-05-27 20:00:35 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-05-27 20:00:35 +0300
commit94c57f750fd544bcffbf4df2a40c09f8a155a547 (patch)
tree724a3c8eaabc5b7782ef09a6c4026a11cfc4281a /Software/Visual_Studio/Scripting/Tango.Scripting.Editors
parent1a1416d72b14a127a61f3e9228a6997b4b103089 (diff)
downloadTango-94c57f750fd544bcffbf4df2a40c09f8a155a547.tar.gz
Tango-94c57f750fd544bcffbf4df2a40c09f8a155a547.zip
Added common snippets.
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.pngbin0 -> 147 bytes
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/CompletionItem.cs7
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/SnippetCompletionItem.cs26
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs63
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj6
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Themes/Generic.xaml1
6 files changed, 101 insertions, 2 deletions
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
--- /dev/null
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Images/snippet.png
Binary files 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<SnippetCompletionItem> snippets;
public static event EventHandler<TangoProgressChangedEventArgs<int>> 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<SnippetCompletionItem>();
+
BlockedUsingsCache = new List<string>();
if (KNOWN_TYPES_CACHE_FOLDER == null)
@@ -188,6 +191,61 @@ namespace Tango.Scripting.Editors
_knownTypesCache = new Dictionary<Type, KnownType>();
_cachedAssemblies = new List<CachedAssembly>();
_cachedUsings = new List<CachedUsing>();
+
+ 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)
+ {
+
+ }"
+ });
}
/// <summary>
@@ -746,6 +804,11 @@ namespace Tango.Scripting.Editors
{
IList<ICompletionData> data = new List<ICompletionData>();
+ 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 @@
<Compile Include="Intellisense\NamespaceCompletionItemPopup.cs" />
<Compile Include="Intellisense\PropertyCompletionItem.cs" />
<Compile Include="Intellisense\PropertyCompletionItemPopup.cs" />
+ <Compile Include="Intellisense\SnippetCompletionItem.cs" />
<Compile Include="Intellisense\StructCompletionItem.cs" />
<Compile Include="Intellisense\StructCompletionItemPopup.cs" />
<Compile Include="Intellisense\Utils.cs" />
@@ -644,9 +645,12 @@
<ItemGroup>
<Resource Include="Images\event.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\snippet.png" />
+ </ItemGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UseGlobalSettings="True" />
+ <UserProperties BuildVersion_UseGlobalSettings="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ 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 @@
<BitmapImage x:Key="method" UriSource="pack://application:,,,/Tango.Scripting.Editors;component/Images/method.png" />
<BitmapImage x:Key="property" UriSource="pack://application:,,,/Tango.Scripting.Editors;component/Images/property.png" />
<BitmapImage x:Key="event" UriSource="pack://application:,,,/Tango.Scripting.Editors;component/Images/event.png" />
+ <BitmapImage x:Key="snippet" UriSource="pack://application:,,,/Tango.Scripting.Editors;component/Images/snippet.png" />
<!--Converters-->
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />