diff options
Diffstat (limited to 'Software/Visual_Studio/TEMP/Tango.Scripting')
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Folding/BraceFoldingStrategy.cs | 3 | ||||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs | 47 | ||||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj | 4 | ||||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting/Parsing/DetectedType.cs | 14 | ||||
| -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.csproj | 5 |
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" /> |
