From 719663ac08fd8ef62b722729b56993700a7cb8d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 11 Oct 2021 08:09:02 +0000 Subject: [PATCH] wip, save commit before node editing --- CrowEditBase/src/CrowEditBase.cs | 2 +- CrowEditBase/src/Project.cs | 5 +- CrowEditBase/src/SourceEditor.cs | 8 +- CrowEditBase/src/TreeNode.cs | 1 + CrowEditBase/ui/CrowEdit.style | 1 + CrowEditBase/ui/TreeExpandable.template | 1 + plugins/CECrowPlugin/src/CrowService.cs | 156 +++++++++++------- plugins/CECrowPlugin/src/DebugInterface.cs | 40 +++-- .../CECrowPlugin/src/DebugInterfaceWidget.cs | 19 ++- plugins/CECrowPlugin/src/ImlDocument.cs | 1 + .../CECrowPlugin/src/Parsing/ImlTokenizer.cs | 34 ++++ .../StyleTokenType.cs | 0 .../StyleTokenizer.cs | 0 .../SyntaxAnalyser.cs | 0 .../{StyleParsing => Parsing}/SyntaxNodes.cs | 0 plugins/CECrowPlugin/ui/winConfiguration.crow | 5 +- plugins/CERoslynPlugin/CERoslynPlugin.csproj | 8 +- plugins/CERoslynPlugin/src/CELogger.cs | 123 ++++++-------- plugins/CERoslynPlugin/src/MSBuildProject.cs | 64 ++++--- plugins/CERoslynPlugin/src/RoslynService.cs | 21 ++- plugins/CERoslynPlugin/src/SolutionProject.cs | 22 ++- .../ui/MSBuildProjectNode.template | 2 +- .../CERoslynPlugin/ui/winConfiguration.crow | 2 +- .../CEXmlPlugin/src/Parsing/XmlTokenizer.cs | 23 ++- src/CrowEdit.cs | 3 +- ui/main.crow | 4 +- ui/windows/winProjects.crow | 3 +- 27 files changed, 337 insertions(+), 211 deletions(-) create mode 100644 plugins/CECrowPlugin/src/Parsing/ImlTokenizer.cs rename plugins/CECrowPlugin/src/{StyleParsing => Parsing}/StyleTokenType.cs (100%) rename plugins/CECrowPlugin/src/{StyleParsing => Parsing}/StyleTokenizer.cs (100%) rename plugins/CECrowPlugin/src/{StyleParsing => Parsing}/SyntaxAnalyser.cs (100%) rename plugins/CECrowPlugin/src/{StyleParsing => Parsing}/SyntaxNodes.cs (100%) diff --git a/CrowEditBase/src/CrowEditBase.cs b/CrowEditBase/src/CrowEditBase.cs index f89d437..8c13f2b 100644 --- a/CrowEditBase/src/CrowEditBase.cs +++ b/CrowEditBase/src/CrowEditBase.cs @@ -95,7 +95,7 @@ namespace CrowEditBase //TODO:flattened project public IEnumerable FlattenProjects { get { - foreach (var node in Projects.SelectMany (child => child.FlattenSubProjetcs)) + foreach (var node in Projects.SelectMany (child => child.FlattenProjetcs)) yield return node; } } diff --git a/CrowEditBase/src/Project.cs b/CrowEditBase/src/Project.cs index 0b7c049..a4c3926 100644 --- a/CrowEditBase/src/Project.cs +++ b/CrowEditBase/src/Project.cs @@ -14,9 +14,10 @@ namespace CrowEditBase protected Project parent; public abstract bool ContainsFile (string fullPath); public IEnumerable SubProjetcs => Childs.OfType (); - public IEnumerable FlattenSubProjetcs { + public virtual IEnumerable FlattenProjetcs { get { - foreach (var node in SubProjetcs.SelectMany (sp => sp.FlattenSubProjetcs)) + yield return this; + foreach (var node in SubProjetcs.SelectMany (sp => sp.FlattenProjetcs)) yield return node; } } diff --git a/CrowEditBase/src/SourceEditor.cs b/CrowEditBase/src/SourceEditor.cs index 41d5b7d..81bfd55 100644 --- a/CrowEditBase/src/SourceEditor.cs +++ b/CrowEditBase/src/SourceEditor.cs @@ -135,8 +135,12 @@ namespace Crow if (currentLoc == value) return; currentLoc = value; - if (currentLoc.HasValue) - getFoldContainingLine (currentLoc.Value.Line)?.UnfoldToTheTop(); + if (currentLoc.HasValue) { + SyntaxNode fold = getFoldContainingLine (currentLoc.Value.Line); + while (fold != null && fold.StartLine == currentLoc.Value.Line) + fold = fold.Parent; + fold?.UnfoldToTheTop(); + } NotifyValueChanged ("CurrentLine", CurrentLine); NotifyValueChanged ("CurrentColumn", CurrentColumn); CMDCopy.CanExecute = CMDCut.CanExecute = !SelectionIsEmpty; diff --git a/CrowEditBase/src/TreeNode.cs b/CrowEditBase/src/TreeNode.cs index 195216f..a980465 100644 --- a/CrowEditBase/src/TreeNode.cs +++ b/CrowEditBase/src/TreeNode.cs @@ -40,6 +40,7 @@ namespace CrowEditBase public abstract NodeType NodeType { get; } public abstract string Icon { get; } public virtual string IconSub => null; + public virtual string StatusIcon => null; public T GetFirstAncestorOfType () where T : TreeNode { TreeNode n = this; while (n.Parent != null && !(n is T)) diff --git a/CrowEditBase/ui/CrowEdit.style b/CrowEditBase/ui/CrowEdit.style index 147c1ec..89d08c6 100644 --- a/CrowEditBase/ui/CrowEdit.style +++ b/CrowEditBase/ui/CrowEdit.style @@ -29,6 +29,7 @@ Editor { MouseWheelSpeed = "20"; BubbleEvents ="None"; ClipToClientRect = "true"; + MouseCursor = "ibeam"; } icon { diff --git a/CrowEditBase/ui/TreeExpandable.template b/CrowEditBase/ui/TreeExpandable.template index ea45ddb..0a46eca 100644 --- a/CrowEditBase/ui/TreeExpandable.template +++ b/CrowEditBase/ui/TreeExpandable.template @@ -27,6 +27,7 @@