aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-02-12 09:03:39 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-02-12 09:03:39 +0200
commit9686fca002119f623ec162fce7f2e1eee4a71dc3 (patch)
tree3cc300bc491a4145f6f36f191ad197d31318622b
parent2843c9ee0d8dc33e1eb21cb8e5dc25ca766e5170 (diff)
downloadTango-9686fca002119f623ec162fce7f2e1eee4a71dc3.tar.gz
Tango-9686fca002119f623ec162fce7f2e1eee4a71dc3.zip
Some work...
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs3
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs47
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj4
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/DetectedType.cs14
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptParser.cs (renamed from Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptParser.cs)21
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptVariable.cs (renamed from Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptVariable.cs)2
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Tango.Scripting.csproj5
7 files changed, 79 insertions, 17 deletions
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs
index a20f36046..0b26184ee 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs
@@ -37,6 +37,9 @@ namespace Tango.Scripting.Editors.Folding
new FoldingDefinition("private","}"),
new FoldingDefinition("internal","}"),
new FoldingDefinition("if","}"),
+ new FoldingDefinition("class","}"),
+ new FoldingDefinition("while","}"),
+ new FoldingDefinition("static void","}"),
new FoldingDefinition("/// <summary>","/// </summary>"),
};
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs
index a42e743ad..b4a98804c 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs
@@ -20,16 +20,19 @@ using Tango.Scripting.Editors.CodeCompletion;
using Tango.Scripting.Editors.Document;
using Tango.Scripting.Editors.Editing;
using Tango.Scripting.Editors.Folding;
+using Tango.Scripting.Parsing;
namespace Tango.Scripting.Editors
{
public class ScriptEditor : TextEditor
{
- private DispatcherTimer foldingUpdateTimer;
+ private DispatcherTimer _update_timer;
private FoldingManager foldingManager;
private BraceFoldingStrategy foldingStrategy;
private CompletionWindow completionWindow;
private List<Type> _types = new List<Type>();
+ private ScriptParser _parser;
+ private List<String> _current_usings;
#region Completion
@@ -144,20 +147,33 @@ namespace Tango.Scripting.Editors
public ScriptEditor()
{
+ _parser = new ScriptParser();
+
TextArea.IndentationStrategy = new Indentation.CSharp.CSharpIndentationStrategy(Options);
foldingStrategy = new BraceFoldingStrategy();
- foldingUpdateTimer = new DispatcherTimer();
- foldingUpdateTimer.Interval = TimeSpan.FromSeconds(2);
- foldingUpdateTimer.Tick += FoldingUpdateTimer_Tick;
- foldingUpdateTimer.Start();
+ _update_timer = new DispatcherTimer();
+ _update_timer.Interval = TimeSpan.FromSeconds(2);
+ _update_timer.Tick += UpdateTimer_Tick;
+ _update_timer.Start();
IndentCommand = new RelayCommand(IndentCode);
TextArea.TextEntered += TextArea_TextEntered;
}
- private void FoldingUpdateTimer_Tick(object sender, EventArgs e)
+ private void UpdateTimer_Tick(object sender, EventArgs e)
+ {
+ InvalidateFolding();
+ InvalidateUsings();
+ }
+
+ private void InvalidateUsings()
+ {
+ var usings = _parser.GetUsings(Text);
+ }
+
+ private void InvalidateFolding()
{
if (EnableFolding)
{
@@ -253,18 +269,27 @@ namespace Tango.Scripting.Editors
String word = String.Empty;
var line = GetCurrentLine();
String lineText = Document.GetText(line);
- Regex r = new Regex(@"(\w+\.)");
- var match = r.Matches(lineText.Substring(0, line.EndOffset));
- var g = match.OfType<Match>().LastOrDefault();
+ int position = CaretOffset;
- if (g != null)
+ for (int i = lineText.Length - 1; i >= 0; i--)
{
- word = g.Value.Replace(".", "");
+ if (lineText[i] == ' ' || lineText[i] == '\t')
+ {
+ break;
+ }
+ word += lineText[i];
+ }
+ word = new string(word.Reverse().ToArray());
+ if (word.Length > 0)
+ {
+ word = word.Replace(".", "");
}
+
+
}
}
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj
index 5dc21efae..4031baf3c 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj
@@ -95,7 +95,7 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="Tango.Core">
- <HintPath>D:\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Core.dll</HintPath>
+ <HintPath>..\..\..\Build\Core\Debug\Tango.Core.dll</HintPath>
</Reference>
<Reference Include="UIAutomationProvider">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
@@ -492,7 +492,7 @@
</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/TEMP/Tango.Scripting/Tango.Scripting/Parsing/DetectedType.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/DetectedType.cs
new file mode 100644
index 000000000..5184d67ca
--- /dev/null
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/DetectedType.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Scripting.Parsing
+{
+ public class DetectedType
+ {
+ public bool IsInterface { get; set; }
+ public Type Type { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptParser.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptParser.cs
index f641496fb..f06144afb 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptParser.cs
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptParser.cs
@@ -6,9 +6,10 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
+using System.Text.RegularExpressions;
using System.Threading.Tasks;
-namespace Tango.Scripting
+namespace Tango.Scripting.Parsing
{
public class ScriptParser
{
@@ -43,6 +44,17 @@ namespace Tango.Scripting
return vars;
}
+ //public List<DetectedType> DetectTypes(String code, List<ReferenceAssembly> referenceAssemblies)
+ //{
+ // SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
+ // CompilationUnitSyntax root = tree.GetCompilationUnitRoot();
+ // var compilation = CSharpCompilation.Create("CSharpScript").AddReferences(referenceAssemblies.Select(x => MetadataReference.CreateFromFile(x.Assembly.Location))).AddSyntaxTrees(tree);
+
+ // SemanticModel model = compilation.GetSemanticModel(tree);
+
+
+ //}
+
private void FillVariables(List<VariableDeclaratorSyntax> variables, SyntaxNode node)
{
foreach (var item in node.DescendantNodes(x => true))
@@ -57,5 +69,12 @@ namespace Tango.Scripting
}
}
}
+
+ public List<String> GetUsings(String code)
+ {
+ Regex r = new Regex("(using [^;]+)");
+ var matches = r.Matches(code);
+ return matches.OfType<Match>().Select(x => x.Value.Replace("using ", "")).ToList();
+ }
}
}
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptVariable.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptVariable.cs
index 25a2bb105..c843e07c6 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/ScriptVariable.cs
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/ScriptVariable.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Scripting
+namespace Tango.Scripting.Parsing
{
public class ScriptVariable
{
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Tango.Scripting.csproj b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Tango.Scripting.csproj
index f44d5fce9..28425884a 100644
--- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Tango.Scripting.csproj
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Tango.Scripting.csproj
@@ -121,16 +121,17 @@
<Compile Include="ExtensionMethods.cs" />
<Compile Include="GlobalObject.cs" />
<Compile Include="IScriptingEngine.cs" />
+ <Compile Include="Parsing\DetectedType.cs" />
<Compile Include="ReferenceAssembly.cs" />
<Compile Include="Script.cs" />
<Compile Include="ScriptingEngine.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="IScriptSession.cs" />
- <Compile Include="ScriptParser.cs" />
+ <Compile Include="Parsing\ScriptParser.cs" />
<Compile Include="ScriptSession.cs" />
<Compile Include="ScriptSessionStateChangedEventArgs.cs" />
<Compile Include="ScriptSessionState.cs" />
- <Compile Include="ScriptVariable.cs" />
+ <Compile Include="Parsing\ScriptVariable.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />