]> O.S.I.I.S - jp/crowedit.git/commitdiff
CS syntax, hover and current widget highlight in debugWidget
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 7 Mar 2025 10:32:03 +0000 (11:32 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 7 Mar 2025 10:32:03 +0000 (11:32 +0100)
17 files changed:
CrowEditBase/src/Compiler/SyntaxNode.cs
CrowEditBase/src/Compiler/SyntaxRootNode.cs
CrowEditBase/src/CrowEditComponent.cs
plugins/CECrowPlugin/src/CrowService.cs
plugins/CECrowPlugin/src/DebugInterface.cs
plugins/CECrowPlugin/src/DebugInterfaceWidget.cs
plugins/CECrowPlugin/src/ForeignWidgetContainer.cs
plugins/CECrowPlugin/src/Parsing/Styling/StyleDocument.cs
plugins/CECrowPlugin/ui/winCrowPreview.crow
plugins/CECrowPlugin/ui/winGraphicTree.crow
plugins/CERoslynPlugin/AllItemsFullPathWithTargetPath.txt [deleted file]
plugins/CERoslynPlugin/src/CSDocument.cs
plugins/CERoslynPlugin/src/CSSyntaxAnalyser.cs
plugins/CERoslynPlugin/src/CSTokenType.cs
plugins/CERoslynPlugin/src/CSTokenizer.cs
plugins/CERoslynPlugin/src/MSBuildProject.cs
plugins/CERoslynPlugin/src/SolutionProject.cs

index 226bdfe45689b2dc131d05150782eb77ba276e9b..00dd6c7372c6d7152a87a4aff7368f36fa7751bb 100644 (file)
@@ -118,7 +118,7 @@ namespace CrowEditBase
                public int? LastTokenIndex =>  lastTokenOfset.HasValue ? TokenIndexBase + lastTokenOfset.Value : null;
 
                public int EndLine {
-                       internal set {
+                       set {
                                lineCount = value - StartLine + 1;
                        }
                        get => StartLine + lineCount - 1;
index af0f9ab95a59addea12210e4048532eb367220c1..20f683cfbfac9c153f87a6736abbb5d4d5faa67f 100644 (file)
@@ -25,6 +25,12 @@ namespace CrowEditBase
                        idx >= 0 && idx < tokens.Length ? GetText(tokens[idx].Span).ToString() : null : null;
                public Token GetTokenByIndex (int idx) => tokens != null ?
                        idx >= 0 && idx < tokens.Length ? tokens[idx] : default : default;
+               public int FindTokenIndexIncludingPosition (int pos) {
+                       if (pos == 0 || Tokens.Length == 0)
+                               return default;
+                       int idx = Tokens.BinarySearch(new  Token () {Start = pos});
+                       return idx == 0 ? 0 : idx < 0 ? ~idx - 1 : idx;
+               }
                public ReadOnlySpan<char> GetText(TextSpan span) =>
                        source.Span.Slice(span.Start, span.Length);
                public string GetTokenString(Token tok) =>
index 8caff4af92a7a75382fd1c8237bc4cb1c89cab97..79cbebc281e404ead499587967f7093bd2f04635 100644 (file)
@@ -5,6 +5,7 @@
 using System;
 using Crow;
 using System.Runtime.CompilerServices;
+using System.Diagnostics;
 
 namespace CrowEditBase
 {
@@ -34,7 +35,8 @@ namespace CrowEditBase
                                        return;
 
                                isSelected = value;
-                               NotifyValueChanged (isSelected);
+                               //Debug.WriteLine($"{this} selected: {isSelected}");
+                               NotifyValueChanged (isSelected);                                        
                        }
                }
                #endregion
index 6acdeedcc69569d0a8e3c22c647f1682f832c5c0..54f88e546719cd4bdc855c228a102fb91b0ec6b2 100644 (file)
@@ -48,6 +48,7 @@ namespace CECrowPlugin
                public Command CMDStartRecording, CMDStopRecording, CMDRefresh;
                public Command CMDGotoParentEvent, CMDEventHistoryForward, CMDEventHistoryBackward;
                public CommandGroup LoggerCommands => new CommandGroup (CMDRefresh, CMDStartRecording, CMDStopRecording);
+               public CommandGroup GraphicTreeCommands => new CommandGroup (CMDRefresh);
                public CommandGroup EventCommands => new CommandGroup(
                                CMDGotoParentEvent, CMDEventHistoryBackward, CMDEventHistoryForward);
                public ActionCommand CMDOptions_SelectCrowAssemblyLocation => new ActionCommand ("...",
@@ -113,7 +114,7 @@ namespace CECrowPlugin
                Assembly crowAssembly, thisAssembly;
                Type dbgIfaceType;
                IList<ForeignWidgetContainer> graphicTree;
-               ForeignWidgetContainer currentWidget;
+               ForeignWidgetContainer currentWidget, hoverWidget;
 
                
                public IList<ForeignWidgetContainer> GraphicTree {
@@ -130,12 +131,71 @@ namespace CECrowPlugin
                        set {
                                if (currentWidget == value)
                                        return;
+
                                currentWidget = value;
+
+                               if (currentWidget == null)
+                                       CurrentWidgetDesignId = null;
+                               else {
+                                       currentWidget.ExpandToTheTop();
+                                       CurrentWidgetDesignId = currentWidget.DesignId;
+                               }
+
                                NotifyValueChanged("CurrentWidget",currentWidget);
                        }
                }
+               public string CurrentWidgetDesignId {
+                       get => currentWidget?.DesignId;
+                       set {
+                               if (CurrentWidgetDesignId == value)
+                                       return;
+                               if (string.IsNullOrEmpty(value))
+                                       CurrentWidget = null;
+                               else {
+                                       bool result = graphicTree[0].TryFindWidgetById(value, out ForeignWidgetContainer tmp);
+                                       if (result)
+                                               CurrentWidget = tmp;
+                                       else
+                                               CurrentWidget = null;
+                                               //throw new Exception("graphicTree[0].TryFindWidgetById: design id not found");*/
+                               }
+                               NotifyValueChanged(CurrentWidgetDesignId);
+                       }
+               }
+               public ForeignWidgetContainer HoverWidget {
+                       get => hoverWidget;
+                       set {
+                               if (hoverWidget == value)
+                                       return;
 
+                               hoverWidget = value;
 
+                               if (hoverWidget == null)
+                                       HoverWidgetDesignId = null;
+                               else {
+                                       HoverWidgetDesignId = hoverWidget.DesignId;
+                               }
+
+                               NotifyValueChanged("HoverWidget",hoverWidget);
+                       }
+               }
+               public string HoverWidgetDesignId {
+                       get => hoverWidget?.DesignId;
+                       set {
+                               if (HoverWidgetDesignId == value)
+                                       return;
+                               if (string.IsNullOrEmpty(value))
+                                       HoverWidget = null;
+                               else {
+                                       bool result = graphicTree[0].TryFindWidgetById(value, out ForeignWidgetContainer tmp);
+                                       if (result)
+                                               HoverWidget = tmp;
+                                       else
+                                               HoverWidget = null;
+                               }
+                               NotifyValueChanged(HoverWidgetDesignId);
+                       }
+               }
                #region dbgIface delegates
                Func<string,Type> delGetWidgetTypeFromName;
                Action<int, int> delResize;
@@ -520,6 +580,7 @@ namespace CECrowPlugin
                        fiWidget_design_style_locations = typeWidget.GetField("design_style_locations");
                        fiWidget_design_iml_values = typeWidget.GetField("design_iml_values");
                        //***********************************
+                       fiWidget_slot = typeWidget.GetField("Slot");
 
 
                        fiITor_NextInstantiatorID = crowAssembly.GetType("Crow.IML.Instantiator").GetField("NextInstantiatorID", BindingFlags.Public | BindingFlags.Static);
@@ -625,7 +686,8 @@ namespace CECrowPlugin
                                try
                                {
                                        mouseScreenPos = _mouseScreenPos;//absolute on screen position.
-                                       e.Handled = delMouseMove ((int)(e.X / ZoomFactor), (int)(e.Y / ZoomFactor));//DebugInterface local coordinate for mouse.
+                                       //e.Handled = delMouseMove ((int)(e.X / ZoomFactor), (int)(e.Y / ZoomFactor));//DebugInterface local coordinate for mouse.
+                                       e.Handled = delMouseMove (e.X, e.Y);//DebugInterface local coordinate for mouse.
                                }
                                catch (System.Exception ex)
                                {
@@ -640,7 +702,8 @@ namespace CECrowPlugin
                        if (CurrentState == Status.Running) {
                                try
                                {
-                                       e.Handled = delMouseDown (e.Button);
+                                       //e.Handled = delMouseDown (e.Button);
+                                       CurrentWidget = HoverWidget;
                                }
                                catch (System.Exception ex)
                                {
@@ -653,7 +716,7 @@ namespace CECrowPlugin
                        if (CurrentState == Status.Running) {
                                try
                                {
-                                       e.Handled = delMouseUp (e.Button);
+                                       e.Handled = true;//delMouseUp (e.Button);
                                }
                                catch (System.Exception ex)
                                {
@@ -666,7 +729,7 @@ namespace CECrowPlugin
                        if (CurrentState == Status.Running) {
                                try
                                {
-                                       e.Handled = delMouseWheelChanged (e.Delta);
+                                       e.Handled = true;// delMouseWheelChanged (e.Delta);
                                }
                                catch (System.Exception ex)
                                {
@@ -700,8 +763,11 @@ namespace CECrowPlugin
                void refresh () {
                        if (!IsRunning)
                                Start ();
-                       if (IsRunning)
+                       if (IsRunning) {
+                               fiITor_NextInstantiatorID?.SetValue (null, 0);
                                delReloadIml ();
+                       }
+                               
                        //updateCrowApp();
                }
                void stopRecording () {
index ff760be36c2f043042ae334c7c2aa02bb4838d96..2555bf606ef23d4d2355d26d316a274b1f7e7701 100644 (file)
@@ -14,6 +14,7 @@ using IML = Crow.IML;
 using System.Diagnostics;
 using Crow.IML;
 using System.Runtime.Loader;
+using Glfw;
 
 namespace CECrowPlugin
 {
@@ -23,6 +24,8 @@ namespace CECrowPlugin
                }
                public DebugInterface (IntPtr hWin) : base (100, 100, hWin)
                {
+                       fiWidget_design_id = typeof(Widget).GetField("design_id");
+                       fiPrivateContainer_child = typeof(PrivateContainer).GetField("child", BindingFlags.Instance | BindingFlags.NonPublic);
                        clientRectangle = new Rectangle (0, 0, 100, 100);
                }
                protected override void initBackend()
@@ -52,13 +55,30 @@ namespace CECrowPlugin
                public bool Terminate;
                public bool Edition = true;
                public bool FirstRenderingFinished = false;
+               
+               bool checkEditHoverWidget() {
+                       if (lastEditHoverWidget != editHoverWidget) {
+                               if (editHoverWidget == null)
+                                       delCrowServiceSetHoverDesignId(null);
+                               else {
+                                       string id = (string)fiWidget_design_id?.GetValue(editHoverWidget);
+                                       delCrowServiceSetHoverDesignId(id);
+                               }
+                               lastEditHoverWidget = editHoverWidget;
+                               return true;
+                       } else
+                               return false;
+               }
                void interfaceThread () {
                        while (!Terminate) {
                                try
                                {
                                        if (Edition) {
-                                               if (FirstRenderingFinished)
-                                                       Thread.Sleep(500);      
+                                               if (FirstRenderingFinished) {
+                                                       Thread.Sleep(100);
+                                                       checkEditHoverWidget();
+                                                       continue;
+                                               }
 
                                                int lqiCount;
                                                lock(LayoutMutex)
@@ -104,16 +124,18 @@ namespace CECrowPlugin
                        }
                        Dispose();
                }
-               string source;
+        string source;
                //Action delRegisterForRepaint;//call RegisterForRepaint in the container widget (DebugInterfaceWidget)
                Action<Exception> delCrowServiceSetCurrentException;
                Action<Type,object> delCrowServiceUpdateRootWidget;
+               Action<string> delCrowServiceSetCurrentDesignId, delCrowServiceSetHoverDesignId;
 
 
                delegate void GetScreenCoordinateDelegateType(out int x, out int y);
                GetScreenCoordinateDelegateType delCrowServiceGetScreenCoordinate;
                Func<IEnumerable<object>> delCrowServiceGetStyling;
                Func<string, Stream> delCrowServiceGetStreamFromPath;
+               FieldInfo fiWidget_design_id, fiPrivateContainer_child;
 
                
                public void RegisterDebugInterfaceCallback (object crowService){
@@ -121,6 +143,11 @@ namespace CECrowPlugin
                        //delRegisterForRepaint = (Action)Delegate.CreateDelegate(typeof(Action), w, t.GetMethod("RegisterForRepaint"));
                        delCrowServiceSetCurrentException = (Action<Exception>)Delegate.CreateDelegate(typeof(Action<Exception>), crowService,
                                t.GetProperty("CurrentException").GetSetMethod(true));
+                       delCrowServiceSetCurrentDesignId = (Action<string>)Delegate.CreateDelegate(typeof(Action<string>), crowService,
+                               t.GetProperty("CurrentWidgetDesignId").GetSetMethod(true));
+                       delCrowServiceSetHoverDesignId = (Action<string>)Delegate.CreateDelegate(typeof(Action<string>), crowService,
+                               t.GetProperty("HoverWidgetDesignId").GetSetMethod(true));
+                       
                        delCrowServiceUpdateRootWidget = (Action<Type,object>)Delegate.CreateDelegate(typeof(Action<Type,object>), crowService,
                                t.GetMethod("UpdateRootWidget"));
 
@@ -199,15 +226,110 @@ namespace CECrowPlugin
                                RegisterClip (clientRectangle);
                        }
                }*/
-        public override Widget HoverWidget {
-                       get => base.HoverWidget;
-                       set {
-                               base.HoverWidget = value;
-                       }
+
+               Widget lastEditHoverWidget, editHoverWidget, editActiveWidget;
+               bool checkHoverWidget() {
+                       while (true) {
+                               bool mouseInChildren = false;
+                               foreach(Widget child in GetWidgetChilren(editHoverWidget)) {
+                                       if (child.MouseIsIn(MousePosition)) {
+                                               editHoverWidget = child;
+                                               mouseInChildren = true;
+                                               break;
+                                       }
+                               }
+                               if (!mouseInChildren)
+                                       return true;
+                               /*if (typeof(TemplatedControl).IsAssignableFrom(editHoverWidget.GetType())) {
+                                       return true;
+                               } else if (typeof(PrivateContainer).IsAssignableFrom(editHoverWidget.GetType())) {
+                                       Widget child = (Widget)fiPrivateContainer_child.GetValue(editHoverWidget);
+                                       if (child == null || !child.MouseIsIn(MousePosition))
+                                               return true;
+                                       editHoverWidget = child;
+                               } else if (typeof(GroupBase).IsAssignableFrom(editHoverWidget.GetType())) {
+                                       bool mouseInChildren = false;
+                                       foreach (Widget w in ((GroupBase)editHoverWidget).Children)     {
+                                               if (w.MouseIsIn(MousePosition)) {
+                                                       editHoverWidget = w;
+                                                       mouseInChildren = true;
+                                                       break;
+                                               }
+                                       }
+                                       if (!mouseInChildren)
+                                               return true;
+                               } else
+                                       return true;*/
+                       }                       
                }
         public override bool OnMouseMove(int x, int y)
         {
-            return base.OnMouseMove(x, y);
+                       int deltaX = x - base.MousePosition.X;
+                       int deltaY = y - base.MousePosition.Y;
+
+                       MousePosition = new Point(x,y);
+                       MouseMoveEventArgs e = new MouseMoveEventArgs (x, y, deltaX, deltaY);
+                       
+                       if (Edition) {
+                               if (editHoverWidget != null) {
+                                       //check topmost graphicobject first
+                                       Widget topContainer = editHoverWidget;
+                                       while (topContainer.LogicalParent is Widget w)
+                                               topContainer = w;
+
+                                       int indexOfTopContainer = GraphicTree.IndexOf (topContainer);
+                                       if (indexOfTopContainer != 0) {//0 is topMost
+                                               for (int i = 0; i < indexOfTopContainer; i++) {//check all top containers that are at a higher level
+                                                       //if logical parent of top container is the Interface, that's not a popup.
+                                                       if (typeof(Interface).IsAssignableFrom(GraphicTree [i].LogicalParent.GetType()) ) {
+                                                               if (GraphicTree [i].MouseIsIn (MousePosition)) {
+                                                                       editHoverWidget = GraphicTree [i];
+                                                                       if (checkHoverWidget())
+                                                                               return true;
+                                                               }
+                                                       }
+                                               }
+                                       }
+
+                                       if (editHoverWidget.MouseIsIn (MousePosition)) {
+                                               return checkHoverWidget();
+                                       } else {
+                                               while (editHoverWidget.Parent is Widget parent) {
+                                                       editHoverWidget = parent;
+                                                       if (editHoverWidget.MouseIsIn (e.Position)) {
+                                                               return checkHoverWidget();
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               //top level graphic obj's parsing
+                               lock (GraphicTree) {
+                                       for (int i = 0; i < GraphicTree.Count; i++) {
+                                               Widget g = GraphicTree [i];
+                                               if (g.MouseIsIn (e.Position)) {
+                                                       editHoverWidget = g;
+                                                       return checkHoverWidget();
+                                               }
+                                       }
+                               }
+                               editHoverWidget = null;
+                               return false;
+                       } else
+               return base.OnMouseMove(x, y);
+        }
+        public override bool OnMouseButtonDown(MouseButton button)
+        {
+                       if (Edition) {
+                               /*if (editHoverWidget != null) {
+                                       editActiveWidget = editHoverWidget;
+                                       string id = (string)fiWidget_design_id?.GetValue(editHoverWidget);
+                                       delCrowServiceSetCurrentDesignId(id);
+                                       return true;
+                               }*/
+                               return false;
+                       } else
+               return base.OnMouseButtonDown(button);
         }
 
         public override void ForceMousePosition()
index 6e18918716bf59e340f56d67d8cf0f6e9761be14..97a6fdb6d5b816e51f7dd3afb48e949636308d28 100644 (file)
@@ -17,19 +17,13 @@ using Crow;
 namespace CECrowPlugin
 {
        public class DebugInterfaceWidget : Widget {
-               CrowService crowIFaceService;
-               public CrowService CrowIFaceService {
-                       get => crowIFaceService;
-                       set {
-                               if (crowIFaceService == value)
-                                       return;
-                               crowIFaceService = value;
-                               NotifyValueChangedAuto (crowIFaceService);
-                       }
-               }
-               
-               Command CMDRefresh, CMDZoomIn, CMDZoomOut, CMDRun;
                public DebugInterfaceWidget () : base () {
+                       
+                       CrowIFaceService = App.GetService<CrowService> ();
+                       
+                       if (crowIFaceService != null)
+                               crowIFaceService.ValueChanged += service_ValueChanged;
+
                        CMDRefresh = new ActionCommand (this, "Refresh",
                                () => {
                                        crowIFaceService?.LoadIML ("");
@@ -58,6 +52,86 @@ namespace CECrowPlugin
                        t.IsBackground = true;
                        t.Start ();
                }
+        ~DebugInterfaceWidget() {
+                       if (crowIFaceService != null)
+                               crowIFaceService.ValueChanged -= service_ValueChanged;                  
+               }
+        void service_ValueChanged(object instance, ValueChangeEventArgs e) {
+                       if (e.MemberName == "CurrentWidget") {
+                               if (e.NewValue is ForeignWidgetContainer fwc)
+                                       CurrentWidget = fwc;
+                               else
+                                       CurrentWidget = null;
+                       } else  if (e.MemberName == "HoverWidget") {
+                               if (e.NewValue is ForeignWidgetContainer fwc)
+                                       HoverWidget = fwc;
+                               else
+                                       HoverWidget = null;
+                       }
+               }               
+               CrowService crowIFaceService;
+               string imlSource;
+               ImlDocument document;
+               ForeignWidgetContainer currentWidget, hoverWidget;
+               
+               Command CMDRefresh, CMDZoomIn, CMDZoomOut, CMDRun;
+               public CommandGroup WindowCommands => new CommandGroup (
+                       CMDRefresh, //CMDZoomIn, CMDZoomOut,
+                       crowIFaceService.CMDStartRecording,
+                       crowIFaceService.CMDStopRecording,
+                       crowIFaceService.CMDOpenConfig,
+                       (Parent.LogicalParent as DockWindow).CMDClose
+               );
+               public CrowService CrowIFaceService {
+                       get => crowIFaceService;
+                       set {
+                               if (crowIFaceService == value)
+                                       return;
+                               crowIFaceService = value;
+                               NotifyValueChangedAuto (crowIFaceService);
+                       }
+               }
+               public TextDocument Document {
+                       get => document;
+                       set {
+                               if (document == value)
+                                       return;
+
+                               if (value is ImlDocument imlDoc) {
+                                       document?.UnregisterClient (this);
+                                       document = imlDoc;
+                                       imlSource = default;
+                                       document?.RegisterClient (this, true);
+
+                                       NotifyValueChangedAuto (document);
+                                       RegisterForGraphicUpdate ();
+                               }
+                       }
+               }               
+               public ForeignWidgetContainer CurrentWidget {
+                       get => currentWidget;
+                       set {
+                               if (!(value?.GetType().Name == "ForeignWidgetContainer"))
+                                       return;
+                               if (currentWidget == value)
+                                       return;
+                               currentWidget = value;
+                               NotifyValueChanged("CurrentWidget",currentWidget);
+                               RegisterForRepaint ();
+                       }
+               }
+               public ForeignWidgetContainer HoverWidget {
+                       get => hoverWidget;
+                       set {
+                               if (!(value?.GetType().Name == "ForeignWidgetContainer"))
+                                       return;
+                               if (hoverWidget == value)
+                                       return;
+                               hoverWidget = value;
+                               NotifyValueChanged("HoverWidget",hoverWidget);
+                               RegisterForRepaint ();
+                       }
+               }
                protected void backgroundThreadFunc () {
                        Stopwatch sw = Stopwatch.StartNew ();
                        int refreshRate = crowIFaceService == null ? 10 : crowIFaceService.RefreshRate;
@@ -94,47 +168,11 @@ namespace CECrowPlugin
 
                        RegisterForRedraw ();
                }
-               string imlSource;
-
-               ImlDocument document;
-               ForeignWidgetContainer currentWidget;
-               public TextDocument Document {
-                       get => document;
-                       set {
-                               if (document == value)
-                                       return;
-
-                               if (value is ImlDocument imlDoc) {
-                                       document?.UnregisterClient (this);
-                                       document = imlDoc;
-                                       imlSource = default;
-                                       document?.RegisterClient (this, true);
-
-                                       NotifyValueChangedAuto (document);
-                                       RegisterForGraphicUpdate ();
-                               }
-                       }
-               }
-
-               
-               public ForeignWidgetContainer CurrentWidget {
-                       get => currentWidget;
-                       set {
-                               if (currentWidget == value)
-                                       return;
-                               currentWidget = value;
-                               NotifyValueChanged("CurrentWidget",currentWidget);
-                               RegisterForRepaint ();
-                       }
-               }
-
-
                protected override void onInitialized(object sender, EventArgs e)
                {
                        base.onInitialized(sender, e);
 
-
-                       CrowIFaceService = App.GetService<CrowService> ();
+                       
                        crowIFaceService?.Start ();
                }
                /*public CommandGroup LoggerCommands =>
@@ -144,13 +182,7 @@ namespace CECrowPlugin
                                new Command("Save to file", () => saveLogToDebugLogFilePath ()),
                                new Command("Load from file", () => loadLogFromDebugLogFilePath ())
                        );*/
-               public CommandGroup WindowCommands => new CommandGroup (
-                       CMDRefresh, //CMDZoomIn, CMDZoomOut,
-                       crowIFaceService.CMDStartRecording,
-                       crowIFaceService.CMDStopRecording,
-                       crowIFaceService.CMDOpenConfig,
-                       (Parent.LogicalParent as DockWindow).CMDClose
-               );
+
 
                protected override void onDraw(IContext gr)
                {
@@ -171,16 +203,6 @@ namespace CECrowPlugin
                public override void onMouseUp(object sender, MouseButtonEventArgs e) => crowIFaceService?.onMouseUp(e);
                public override void onMouseWheel(object sender, MouseWheelEventArgs e) => crowIFaceService?.onMouseWheel(e);
 
-               public override bool Paint(IContext ctx)
-               {
-                       return base.Paint(ctx);
-                       /*crowIFaceService.LockRenderMutex();
-                       try {
-                               return base.Paint(ctx);                         
-                       } finally {
-                               crowIFaceService.UnlockRenderMutex();
-                       }*/
-               }
                protected override void RecreateCache()
                {
                        if (crowIFaceService != null && crowIFaceService.IsRunning) {
@@ -195,6 +217,28 @@ namespace CECrowPlugin
                        if (crowIFaceService != null && crowIFaceService.IsRunning && bmp != null) {
                                //crowIFaceService.LockRenderMutex();
                                paintCache (ctx, Slot + Parent.ClientRectangle.Position);
+                               if (hoverWidget != null && hoverWidget != currentWidget) {
+                                       //currentWidget.
+                                       RectangleD r = hoverWidget.GetScreenCoordinate() + Slot.Position + Parent.ClientRectangle.Position;
+                                       //ctx.ResetClip();
+                                       ctx.LineWidth = 1;
+                                       ctx.SetDash([1,3]);
+                                       ctx.Rectangle(r.Inflated(2));
+                                       ctx.SetSource(Colors.Yellow);
+                                       ctx.Stroke();
+                                       ctx.SetDash([]);
+                               }                               
+                               if (currentWidget != null) {
+                                       //currentWidget.
+                                       RectangleD r = currentWidget.GetScreenCoordinate() + Slot.Position + Parent.ClientRectangle.Position;
+                                       //ctx.ResetClip();
+                                       ctx.LineWidth = 1.0;
+                                       //ctx.SetDash([2,3]);
+                                       ctx.Rectangle(r.Inflated(1));
+                                       ctx.SetSource(Colors.White);
+                                       ctx.Stroke();
+                                       //ctx.SetDash([0]);
+                               }                               
                                //crowIFaceService.UnlockRenderMutex();
                                crowIFaceService.ResetDirtyState ();
                        } 
index bb11241aec3197efb7d2da20ac3ca68dafe00ac5..f45ead3d58b69f985b55d19809f15dc60500a27b 100644 (file)
@@ -8,25 +8,38 @@ using System.Collections.Generic;
 using System.Linq;
 using CrowEditBase;
 using Crow;
+using Drawing2D;
 
 using static CrowEditBase.CrowEditBase;
+using System.Diagnostics;
+
 
 namespace CECrowPlugin
 {
        public class ForeignWidgetContainer : CrowEditComponent {
                internal static Type typeWidget;//, typeGroup, typeContainer, typeTemplatedContainer, typeTemplatedGroup;
                //design mode members, present only if crow compiled with DESIGN_MODE enabled
-               internal static FieldInfo fiWidget_design_id, fiWidget_design_style_values,     fiWidget_design_iml_values, fiWidget_design_style_locations;
+               internal static FieldInfo fiWidget_design_id, fiWidget_design_style_values,     fiWidget_design_iml_values, fiWidget_design_style_locations,
+                                                                       fiWidget_slot;
                Func<string> delGetName;
+               Func<Rectangle,Rectangle> delGetScreenCoordinates;
 
                bool isExpanded;
                Type type;
                object instance;
-               public ForeignWidgetContainer(Type widgetType, object instance) {
+               ForeignWidgetContainer parent;
+               string designId;
+               public ForeignWidgetContainer(Type widgetType, object instance, ForeignWidgetContainer parent = null) {
                        type = widgetType;
                        this.instance = instance;
+                       this.parent = parent;
 
                        delGetName = (Func<string>)Delegate.CreateDelegate(typeof(Func<string>), instance, type.GetProperty("Name").GetGetMethod());
+                       delGetScreenCoordinates = (Func<Rectangle,Rectangle>)Delegate.CreateDelegate(typeof(Func<Rectangle,Rectangle>), instance, type.GetMethod("ScreenCoordinates"));
+
+                       designId = (string)fiWidget_design_id?.GetValue(instance);
+                       
+                       Console.WriteLine($"new ForeignWidgetContainer: {this} {parent}");
                }
 
 
@@ -36,23 +49,44 @@ namespace CECrowPlugin
 
                public IEnumerable<PropertyContainer> Properties => Members.Where(m=>m.MemberType == MemberTypes.Property).Select(p=> new PropertyContainer(this, p as PropertyInfo));
 
-               public string Name => delGetName();
-               public string DesignId => (string)fiWidget_design_id?.GetValue(instance);
                public string Icon => $"#icons.{type.FullName}.svg";
+               public string Name => delGetName();
+               public string DesignId => designId;
+               public Rectangle GetScreenCoordinate() => delGetScreenCoordinates(Slot);
+               public Rectangle Slot => (Rectangle)fiWidget_slot?.GetValue(instance);
 
                public string TypeName => type.FullName;
 
-               public IEnumerable<ForeignWidgetContainer> Children  {
+               volatile bool childrenFetched = false;
+               IList<ForeignWidgetContainer> children;
+               public IList<ForeignWidgetContainer> Children  {
                        get {
                                var srv = App.GetService<CrowService> ();
                                if (srv == null || !srv.IsRunning)
                                        return null;
-                               return srv.GetWidgetChilren(instance)?.Select(c=>new ForeignWidgetContainer(c.GetType(),c));
-                       }
-                       
+                               if (!childrenFetched) {
+                                       children = srv.GetWidgetChilren(instance)?.Select(c => new ForeignWidgetContainer(c.GetType(),c,this)).ToList();
+                                       childrenFetched = true;
+                               }
+                                       
+                               return children;
+                       }                       
                } 
-                       
-                               
+               public bool TryFindWidgetById (string designId, out ForeignWidgetContainer widgetContainer) {
+                       widgetContainer = null;
+                       if (designId == DesignId) {
+                               widgetContainer = this;
+                               return true;
+                       }
+                       foreach (var child in Children) {
+                               if (child.TryFindWidgetById(designId, out ForeignWidgetContainer childContainer)) {
+                                       widgetContainer = childContainer;
+                                       return true;
+                               }
+                       }
+                       return false;
+               }
+
                
                public object Instance => instance;
 
@@ -70,6 +104,14 @@ namespace CECrowPlugin
                        }
                }
                public bool HasChildren => Children?.Count() > 0;               
+               public void ExpandToTheTop() {
+                       ForeignWidgetContainer p = parent;
+                       while(p != null) {
+                               p.IsExpanded = true;
+                               p = p.parent;
+                       }
+               }
 
-       }
+        public override string ToString() => $"{DesignId}:{Name}";
+    }
 }
index 87432929ed495bf5a7a8b4fbca01cdde434716b7..f71c84360ec314ee87afa00b716da8eb2a1b55be 100644 (file)
@@ -31,6 +31,7 @@ namespace CECrowPlugin.Style
                        Console.ResetColor();*/
                        return null;
                }
+               public override string GetTokenTypeString (TokenType tokenType) => ((StyleTokenType)tokenType).ToString();
                public override Color GetColorForToken(TokenType tokType)
                {
                        StyleTokenType xmlTokType = (StyleTokenType)tokType;
index 71b71bf56f9163c64578910a35da499b55e6bf48..e0edc44b184ff426a13d7726523fca95e745d5e8 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <DockWindow Caption="Crow Preview"  Width="60%" Commands="{/dbgIfaceWidget.WindowCommands}">
-       <VerticalStack Background="Black" >
-               <DebugInterfaceWidget Name="dbgIfaceWidget" Focusable="true"
+       <VerticalStack Background="Black" >     
+               <DebugInterfaceWidget Name="dbgIfaceWidget" Focusable="true" CurrentWidget="{CurrentWidget}"
                                        BubbleEvents="None"
-                                       Document="{CurrentDocument}" CurrentWidget="{²CurrentWidget}"/>
+                                       Document="{CurrentDocument}"/>
                <Popper DataSource="{../dbgIfaceWidget.CrowIFaceService}" IsVisible="{PreviewHasError}" Background="DarkRed">
                        <Template>
                                <CheckBox IsChecked="{²./IsPopped}" MouseEnter="{IsChecked='true'}" MouseLeave="{IsChecked='false'}">
index 4380b9a57c41ce725a971e04d37327e607d6a079..44041df21dcddbf11af2057123f59ce032a61a2e 100644 (file)
@@ -1,8 +1,12 @@
 <?xml version="1.0"?>
-<DockWindow Caption="Graphic Tree"  Width="30%">
+<DockWindow Caption="Graphic Tree"  Width="30%" AdditionalCommands="{GraphicTreeCommands}">
        <VerticalStack RootDataLevel="true" Spacing="0">
-               <Button Command="{CMDRefresh}"/>
-               <TreeView Data="{GraphicTree}" SelectedItem="{²CurrentWidget}">
+               <!--<HorizontalStack Height="Fit" Spacing="10" Margin="10" Background="DimGrey" DataSource="{CurrentWidget}">
+                       <Image Width="40" Height="40" Margin="4" Path="{Icon}" Background="Jet"/>
+                       <Label Text="{TypeName}" Width="Stretched" TextAlignment="Left" />
+                       <Label Font="mono bold, 16" Foreground="PaleGreen" Text="{DesignId}" Width="Fit" Margin="4" />
+               </HorizontalStack>-->
+               <TreeView Name="gttv" Data="{GraphicTree}" SelectedItem="{²CurrentWidget}">
                        <ItemTemplate Data="Children">
                                <ListItem IsSelected="{IsSelected}"
                                                Selected="{/exp.Background=${ControlHighlight}}"
                                                                                Foreground="Transparent"
                                                                                MouseEnter="{Foreground=DimGrey}"
                                                                                MouseLeave="{Foreground=Transparent}">
-                                                                       <HorizontalStack Background="{./Background}" Spacing="1">
+                                                                       <HorizontalStack Background="{./Background}" Spacing="2">
                                                                                <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
                                                                                        Path="{./Image}"
                                                                                        Visible="{HasChilds}"
                                                                                        SvgSub="{IsExpanded}"
                                                                                        MouseEnter="{Background=LightGrey}"
                                                                                        MouseLeave="{Background=Transparent}"/>
-                                                                               <Image Path='{Icon}' Width='16' Height='16'/>
+                                                                               <Image Path='{Icon}' Width='20' Height='20' Margin="2"/>
+                                                                               <Label Style="TreeLabel" Text="{DesignId}" Foreground="PaleGreen"/>
                                                                                <Label Style="TreeLabel" Text="{./Caption}"/>
+                                                                               <Label Style="TreeLabel" Text="{IsSelected}"/>
                                                                        </HorizontalStack>
                                                                </Border>                                                               
                                                                <Container Name="Content" Visible="false"/>
diff --git a/plugins/CERoslynPlugin/AllItemsFullPathWithTargetPath.txt b/plugins/CERoslynPlugin/AllItemsFullPathWithTargetPath.txt
deleted file mode 100644 (file)
index a35ba8c..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-/mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/CERoslynPlugin.csproj -> AllItemsFullPathWithTargetPath
-       /mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/CERoslynPlugin.targets
-               CopyToOutputDirectory                              = Always
-               TargetPath                                         = CERoslynPlugin.targets
-               FullPath                                           = /mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/CERoslynPlugin.targets
-               RootDir                                            = /
-               Filename                                           = CERoslynPlugin
-               Extension                                          = .targets
-               RelativeDir                                        = /mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/
-               Directory                                          = mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/
-               RecursiveDir                                       = 
-               Identity                                           = /mnt/sdata/devel/CrowEdit/plugins/CERoslynPlugin/CERoslynPlugin.targets
-               ModifiedTime                                       = 2025-03-05 10:17:29.6201281
-               CreatedTime                                        = 2025-03-05 10:17:29.6201281
-               AccessedTime                                       = 2025-03-05 10:17:29.6281281
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/glfw-sharp/0.2.15/content/glfw-sharp.dll.config
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = glfw-sharp.dll.config
-               FullPath                                           = /home/jp/.nuget/packages/glfw-sharp/0.2.15/content/glfw-sharp.dll.config
-               RootDir                                            = /
-               Filename                                           = glfw-sharp.dll
-               Extension                                          = .config
-               RelativeDir                                        = /home/jp/.nuget/packages/glfw-sharp/0.2.15/content/
-               Directory                                          = home/jp/.nuget/packages/glfw-sharp/0.2.15/content/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/glfw-sharp/0.2.15/content/glfw-sharp.dll.config
-               ModifiedTime                                       = 2024-07-10 07:28:58.0000000
-               CreatedTime                                        = 2024-07-10 07:28:58.0000000
-               AccessedTime                                       = 2025-03-04 12:31:37.7520082
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/15.0/Microsoft.Common.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = 15.0/Microsoft.Common.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/15.0/Microsoft.Common.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/15.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/15.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/15.0/Microsoft.Common.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.dll
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = MSBuild.dll
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.dll
-               RootDir                                            = /
-               Filename                                           = MSBuild
-               Extension                                          = .dll
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.dll
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.runtimeconfig.json
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = MSBuild.runtimeconfig.json
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.runtimeconfig.json
-               RootDir                                            = /
-               Filename                                           = MSBuild.runtimeconfig
-               Extension                                          = .json
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/MSBuild.runtimeconfig.json
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CrossTargeting.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.CSharp.CrossTargeting.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CrossTargeting.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.CSharp.CrossTargeting
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CrossTargeting.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CurrentVersion.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.CSharp.CurrentVersion.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CurrentVersion.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.CSharp.CurrentVersion
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.CurrentVersion.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.CSharp.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.CSharp
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.CSharp.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CrossTargeting.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.Common.CrossTargeting.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CrossTargeting.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common.CrossTargeting
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CrossTargeting.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CurrentVersion.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.Common.CurrentVersion.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CurrentVersion.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common.CurrentVersion
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.CurrentVersion.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.overridetasks
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.Common.overridetasks
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.overridetasks
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common
-               Extension                                          = .overridetasks
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.overridetasks
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.Common.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.tasks
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.Common.tasks
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.tasks
-               RootDir                                            = /
-               Filename                                           = Microsoft.Common
-               Extension                                          = .tasks
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.Common.tasks
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.NETFramework.CurrentVersion.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.NETFramework.CurrentVersion
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.NETFramework.CurrentVersion.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.NETFramework.CurrentVersion
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.CurrentVersion.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.NETFramework.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.NETFramework
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.NETFramework.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.NETFramework
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.NETFramework.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CrossTargeting.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualBasic.CrossTargeting.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CrossTargeting.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualBasic.CrossTargeting
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CrossTargeting.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CurrentVersion.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualBasic.CurrentVersion.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CurrentVersion.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualBasic.CurrentVersion
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.CurrentVersion.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.targets
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualBasic.targets
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.targets
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualBasic
-               Extension                                          = .targets
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualBasic.targets
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v11.Common.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualStudioVersion.v11.Common.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v11.Common.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualStudioVersion.v11.Common
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v11.Common.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v12.Common.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualStudioVersion.v12.Common.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v12.Common.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualStudioVersion.v12.Common
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v12.Common.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
-       /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v14.Common.props
-               CopyToOutputDirectory                              = PreserveNewest
-               TargetPath                                         = Microsoft.VisualStudioVersion.v14.Common.props
-               FullPath                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v14.Common.props
-               RootDir                                            = /
-               Filename                                           = Microsoft.VisualStudioVersion.v14.Common
-               Extension                                          = .props
-               RelativeDir                                        = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               Directory                                          = home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/
-               RecursiveDir                                       = 
-               Identity                                           = /home/jp/.nuget/packages/microsoft.build.runtime/15.1.1012/contentFiles/any/netcoreapp1.0/Microsoft.VisualStudioVersion.v14.Common.props
-               ModifiedTime                                       = 2017-03-14 13:22:00.0000000
-               CreatedTime                                        = 2017-03-14 13:22:00.0000000
-               AccessedTime                                       = 2025-03-04 14:01:41.4440921
-               DefiningProjectFullPath                            = /usr/share/dotnet/sdk/9.0.200/Microsoft.Common.CurrentVersion.targets
-               DefiningProjectDirectory                           = /usr/share/dotnet/sdk/9.0.200/
-               DefiningProjectName                                = Microsoft.Common.CurrentVersion
-               DefiningProjectExtension                           = .targets
index 8987350e6f18d32d8280ddd4abc9850ed8f4c4cd..e4a3aac26ee6d86c67a1befc33f5600232a87992 100644 (file)
@@ -19,7 +19,7 @@ using Microsoft.CodeAnalysis.CSharp;
 using Microsoft.CodeAnalysis.CSharp.Syntax;
 
 using static CrowEditBase.CrowEditBase;
-using CrowEdit.Xml;
+
 
 namespace CERoslynPlugin
 {
@@ -38,9 +38,6 @@ namespace CERoslynPlugin
 
                        tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText (source.ToString(), CSharpParseOptions.Default);
                        var root = tree.GetRoot();
-                       /*foreach (SyntaxKind v in Enum.GetValues<SyntaxKind>().OrderBy(k=>(uint)k)) {
-                               Console.WriteLine($"{v,50} {(((uint)v) ).ToString("B16") } {(((uint)v) ).ToString("X4") }");
-                       }*/
                }
 
                #region SourceDocument abstract class implementation
@@ -48,12 +45,13 @@ namespace CERoslynPlugin
 
                public override IList GetSuggestions (int absoluteTextPos, int currentTokenIndex, SyntaxNode CurrentNode, CharLocation loc)
                {
-                       Token currentToken = GetTokenByIndex(currentTokenIndex);
-                       throw new NotImplementedException();
+                       /*Token currentToken = GetTokenByIndex(currentTokenIndex);
+                       throw new NotImplementedException();*/
+                       return null;
                }
                #endregion
 
-               public override Color GetColorForToken (TokenType tokType) {
+               /*public override Color GetColorForToken (TokenType tokType) {
                        uint rawkind = (uint)tokType;
                        uint tokCat = rawkind & 0xFF;
                        CSTokenType cat = (CSTokenType)tokCat;
@@ -63,11 +61,39 @@ namespace CERoslynPlugin
                        //Console.WriteLine($"{k,50} {(((uint)tokType) ).ToString("B16") } {cat}");
                        
                        switch (cat) {
-                               case CSTokenType.Trivia: return Colors.Grey;
-                               case CSTokenType.Keyword: return Colors.DarkSlateBlue;
-                               default: return Colors.Black;
+                               case CSTokenType.Trivia:
+                                       return Colors.Grey;
+                               case CSTokenType.Keyword:
+                                       return Colors.DarkSlateBlue;
+                               default:
+                                       return Colors.Black;
                        }
-               }
+               }*/
+               public override string GetTokenTypeString (TokenType tokenType) => ((SyntaxKind)tokenType).ToString();
+               public override Color GetColorForToken(TokenType tokType)
+               {
+                       CSTokenType xmlTokType = (CSTokenType)tokType;
+                       if (xmlTokType.HasFlag (CSTokenType.Punctuation))
+                               return Colors.DarkGrey;
+                       if (tokType.HasFlag (TokenType.WhiteSpace))
+                               return Colors.Silver;                   
+                       if (xmlTokType.HasFlag (CSTokenType.Trivia))
+                               return Colors.DimGrey;
+                       else if (xmlTokType == CSTokenType.Name)
+                               return Colors.Green;
+                       if (xmlTokType == CSTokenType.TypeKeyword)
+                               return Colors.Blue;
+                       if (xmlTokType == CSTokenType.Keyword)
+                               return Colors.DarkBlue;
+                       if (xmlTokType == CSTokenType.VisibilityKeyword)
+                               return Colors.SlateBlue;
+                       if (xmlTokType == CSTokenType.Directive)
+                               return Colors.Black;
+                       if (xmlTokType == CSTokenType.Operator)
+                               return Colors.DarkSlateBlue;
+                       return Colors.Red;
+
+               }               
 
        }
 }
\ No newline at end of file
index 1ac8b0e00baa1322020de55ee6d539b6c227efb3..6f17c913de3bd816021861c0683d48da02906698 100644 (file)
@@ -5,12 +5,21 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using CrowEditBase;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Microsoft.CodeAnalysis.Text;
 
 namespace CERoslynPlugin
 {
        public class CSRootSyntax : SyntaxRootNode {
                public CSRootSyntax (ReadOnlyMemory<char> source, Token[] tokens) : base (source, tokens) {     }
        }
+       public class CSSyntaxNode : CrowEditBase.SyntaxNode {
+
+               public CSSyntaxNode (int startLine, int tokenBase, int? lastTokenIdx = null)
+                       : base (startLine, tokenBase, lastTokenIdx) {
+               }
+    }
        
        public class CSSyntaxAnalyser : SyntaxAnalyser {
         /*protected override void Parse(SyntaxNode node)
@@ -21,11 +30,42 @@ namespace CERoslynPlugin
                public CSSyntaxAnalyser (CSDocument document) : base (document) {}
 
                public override SyntaxRootNode Process () {
-                       Tokenizer tokenizer = new CSTokenizer();
+                       CSTokenizer tokenizer = new CSTokenizer();
                        Token[] tokens = tokenizer.Tokenize(source.Span);
 
-                       currentNode = Root = new CSRootSyntax (source, tokens);
+
+                       
+                       CsharpSyntaxWalkerBridge bridge = new CsharpSyntaxWalkerBridge(new CSRootSyntax (source, tokens));
+                       bridge.Visit(tokenizer.syntaxTree.GetRoot());
+
+                       Root = bridge.Root;
+
+                       
+
                        return Root;
                }
        }
+       class CsharpSyntaxWalkerBridge : Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker
+       {
+               public CSRootSyntax Root;
+               CrowEditBase.SyntaxNode currentNode;
+               public CsharpSyntaxWalkerBridge (CSRootSyntax root) : base (SyntaxWalkerDepth.StructuredTrivia)
+               {
+                       currentNode = Root = root;
+               }
+               public override void Visit (Microsoft.CodeAnalysis.SyntaxNode node)
+               {
+                       Location loc = node.GetLocation();
+                       LinePosition start = loc.GetLineSpan().StartLinePosition;
+                       LinePosition end = loc.GetLineSpan().EndLinePosition;
+
+                       int indexBase = Root.FindTokenIndexIncludingPosition(node.Span.Start);
+                       int lastTokIndex = Root.FindTokenIndexIncludingPosition(node.Span.End - 1);
+                       currentNode = currentNode.AddChild(new CSSyntaxNode(loc.GetLineSpan().StartLinePosition.Line, indexBase, lastTokIndex));
+                       
+                       base.Visit (node);
+                       currentNode.EndLine = end.Line;
+                       currentNode = currentNode.Parent;
+               }
+    }
 }
\ No newline at end of file
index fee4ed1aa5003ab64b6fe52ae5dec4e813c14120..f33801de1044618659d3b6919205ab251c0eed31 100644 (file)
@@ -1,10 +1,10 @@
-// Copyright (c) 2013-2021  Bruyère Jean-Philippe <jp_bruyere@hotmail.com>
+// Copyright (c) 2013-2025  Bruyère Jean-Philippe <jp_bruyere@hotmail.com>
 //
 // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 
 using System;
 
-namespace CrowEdit.Xml
+namespace CERoslynPlugin
 {
        [Flags]
        public enum CSTokenType {
@@ -20,7 +20,23 @@ namespace CrowEdit.Xml
                BlockCommentEnd                 = 0x0106,
                Name                                    = 0x0200,
                Punctuation                             = 0x0400,
+               OpenBrace                               = 0x0401,
+               CloseBrace                              = 0x0402,
+               OpenBracket                             = 0x0403,
+               CloseBracket                    = 0x0404,
+               OpenParen                               = 0x0405,
+               CloseParenToken                 = 0x0406,
+               DoubleQuote                             = 0x0407,
+               SingleQuote                             = 0x0408,
+               
                Operator                                = 0x0800,
                Keyword                                 = 0x1000,
+               TypeKeyword                             = 0x1001,
+               TryKeyword                              = 0x1002,
+               VisibilityKeyword               = 0x1003,
+               NewKeyword                              = 0x1004,
+               Region                                  = 0x1005,
+               Directive                               = 0x1006,
+
        }
 }
\ No newline at end of file
index 0644175687b69e56a0a58d0507def8de36266e5b..5f0b3d42e43bb4874f9a45d699b5f8c2f1bc0fd0 100644 (file)
@@ -10,98 +10,35 @@ using CrowEditBase;
 using Microsoft.CodeAnalysis.CSharp;
 using Microsoft.CodeAnalysis;
 using SyntaxNode = Microsoft.CodeAnalysis.SyntaxNode;
+using System.Text.RegularExpressions;
 
 namespace CERoslynPlugin
 {
        public class CSTokenizer : Tokenizer
        {
-               
-
-               int startOfTok;
                protected List<Token> Toks;
-               void addTok (ref SpanCharReader reader, Enum tokType) {
-                       if (reader.CurrentPosition == startOfTok)
-                               return;
-                       Toks.Add (new Token((TokenType)tokType, startOfTok, reader.CurrentPosition));
-                       startOfTok = reader.CurrentPosition;
-               }
-               void skipWhiteSpacesAndLineBreaks (ref SpanCharReader reader) {
-                       while(!reader.EndOfSpan) {
-                               switch (reader.Peek) {
-                                       case '\x85':
-                                       case '\x2028':
-                                       case '\xA':
-                                               reader.Read();
-                                               addTok (ref reader, TokenType.LineBreak);
-                                               break;
-                                       case '\xD':
-                                               reader.Read();
-                                               if (reader.IsNextCharIn ('\xA', '\x85'))
-                                                       reader.Read();
-                                               addTok (ref reader, TokenType.LineBreak);
-                                               break;
-                                       case '\x20':
-                                       case '\x9':
-                                               char c = reader.Read();
-                                               while (reader.TryPeek (c))
-                                                       reader.Read();
-                                               addTok (ref reader, c == '\x20' ? TokenType.WhiteSpace : TokenType.Tabulation);
-                                               break;
-                                       default:
-                                               return;
-                               }
-                       }
-               }
-               void skipWhiteSpaces (ref SpanCharReader reader) {
-                       while(!reader.EndOfSpan) {
-                               switch (reader.Peek) {
-                                       case '\x20':
-                                       case '\x9':
-                                               char c = reader.Read();
-                                               while (reader.TryPeek (c))
-                                                       reader.Read();
-                                               addTok (ref reader, c == '\x20' ? TokenType.WhiteSpace : TokenType.Tabulation);
-                                               break;
-                                       default:
-                                               return;
-                               }
-                       }
-               }
+               public SyntaxTree syntaxTree;
 
                public override Token[] Tokenize(ReadOnlySpan<char> source)
                {
-                       var tree = CSharpSyntaxTree.ParseText(source.ToString());
-                       CsharpSyntaxWalkerBridge bridge = new CsharpSyntaxWalkerBridge();
-                       bridge.Visit(tree.GetRoot());
-                       //SpanCharReader reader = new SpanCharReader(source);
-
-                       //startOfTok = 0;
-                       //curState = States.Init;
-                       
-
-                       /*while(!reader.EndOfSpan) {
-
-                               skipWhiteSpaces (ref reader);
-
-                               if (reader.EndOfSpan)
-                                       break;
-
-                               switch (reader.Peek) {
-                                       case '/':
-                                               reader.Advance ();
-
-                                               break;
-                               }
+                       /*foreach (var e in Enum.GetNames(typeof(SyntaxKind))) {
+                               Console.WriteLine($"case SyntaxKind.{e}:");
+                               Console.WriteLine($"\treturn CSTokenType.Unknown;");
                        }*/
-                       Toks = bridge.Toks;
 
+                       syntaxTree = CSharpSyntaxTree.ParseText(source.ToString());
+                       CsharpSyntaxWalkerTokenizer bridge = new CsharpSyntaxWalkerTokenizer();
+                       bridge.Visit(syntaxTree.GetRoot());
+                       Toks = bridge.Toks;
                        return Toks.ToArray();
                }
+
        }
-       class CsharpSyntaxWalkerBridge : CSharpSyntaxWalker
+
+       class CsharpSyntaxWalkerTokenizer : CSharpSyntaxWalker
        {
                public List<Token> Toks;
-               public CsharpSyntaxWalkerBridge () : base (SyntaxWalkerDepth.StructuredTrivia)
+               public CsharpSyntaxWalkerTokenizer () : base (SyntaxWalkerDepth.StructuredTrivia)
                {
                        Toks = new List<Token>(100);
                }
@@ -112,20 +49,14 @@ namespace CERoslynPlugin
                
                public override void VisitToken (SyntaxToken token)
                {
-                       /*Console.ForegroundColor = ConsoleColor.Blue;
-                       Console.Write(((uint)token.Kind()));
-                       Console.ForegroundColor = ConsoleColor.Gray;
-                       Console.Write(token.ToFullString());*/
-
-                       
-                       
                        VisitLeadingTrivia (token);
 
                        if (SyntaxFacts.IsLiteralExpression (token.Kind ())) {
-                               addMultilineTok (token);
+                               addMultilineToken(token.ToString(), token.Span, (TokenType)convertTokenType(token.Kind()));
                        } else {
                                Microsoft.CodeAnalysis.Text.TextSpan span = token.Span;
-                               Toks.Add (new Token(span.Start, span.Length, (TokenType)token.RawKind));
+                               
+                               Toks.Add (new Token(span.Start, span.Length, (TokenType)convertTokenType(token.Kind())));
                        }
 
                        VisitTrailingTrivia (token);
@@ -134,24 +65,1057 @@ namespace CERoslynPlugin
         public override void VisitTrivia (SyntaxTrivia trivia)
                {
                        SyntaxKind kind = trivia.Kind ();
+                       Microsoft.CodeAnalysis.Text.TextSpan span = trivia.Span;
+                       if (kind == SyntaxKind.EndOfLineTrivia) {
+                               Toks.Add (new Token(span.Start, span.Length, TokenType.LineBreak));
+                               return;
+                       }
                        if (trivia.HasStructure)
                                this.Visit ((CSharpSyntaxNode)trivia.GetStructure());
                        else if (trivia.IsKind (SyntaxKind.DisabledTextTrivia) || trivia.IsKind (SyntaxKind.MultiLineCommentTrivia))
-                addMultilineTok (trivia);
+                addMultilineToken(trivia.ToString(), trivia.Span, (TokenType)trivia.RawKind);
                        else {
-                               Microsoft.CodeAnalysis.Text.TextSpan span = trivia.Span;
                                Toks.Add (new Token(span.Start, span.Length, (TokenType)trivia.RawKind));
                        }
                }
+               int startOfTok;
+               void addTok (ref SpanCharReader reader, int offset, Enum tokType) {
+                       if (reader.CurrentPosition == startOfTok)
+                               return;
+                       Toks.Add (new Token((TokenType)tokType,startOfTok + offset, reader.CurrentPosition + offset));
+                       startOfTok = reader.CurrentPosition;
+               }
+               void addMultilineToken(ReadOnlySpan<char> txt, Microsoft.CodeAnalysis.Text.TextSpan span, TokenType mainType) {
+                       SpanCharReader reader = new SpanCharReader(txt);
+                       startOfTok = 0;
 
-               void addMultilineTok (SyntaxTrivia trivia) {
-                       Microsoft.CodeAnalysis.Text.TextSpan span = trivia.Span;
-                       Toks.Add (new Token(span.Start, span.Length, (TokenType)trivia.RawKind));
+                       while(!reader.EndOfSpan) {
+                               switch (reader.Peek) {
+                                       case '\x85':
+                                       case '\x2028':
+                                       case '\xA':
+                                               addTok (ref reader, span.Start, mainType);
+                                               reader.Read();
+                                               addTok (ref reader, span.Start, TokenType.LineBreak);
+                                               break;
+                                       case '\xD':
+                                               addTok (ref reader, span.Start, mainType);
+                                               reader.Read();
+                                               if (reader.IsNextCharIn ('\xA', '\x85'))
+                                                       reader.Read();
+                                               addTok (ref reader, span.Start, TokenType.LineBreak);
+                                               break;
+                                       case '\x20':
+                                       case '\x9':
+                                               addTok (ref reader, span.Start, mainType);
+                                               char c = reader.Read();
+                                               while (reader.TryPeek (c))
+                                                       reader.Read();
+                                               addTok (ref reader, span.Start, c == '\x20' ? TokenType.WhiteSpace : TokenType.Tabulation);
+                                               break;
+                                       default:
+                                               reader.Read();
+                                               break;
+                               }
+                       }                       
+                       addTok (ref reader, span.Start, mainType);
                }
-               void addMultilineTok (SyntaxToken token) {
-                       Microsoft.CodeAnalysis.Text.TextSpan span = token.Span;
-                       Toks.Add (new Token(span.Start, span.Length, (TokenType)token.RawKind));
+               CSTokenType convertTokenType(SyntaxKind kind) {
+                       return (CSTokenType)kind;
+                       switch (kind) {
+                               case SyntaxKind.None:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.List:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TildeToken:
+                               case SyntaxKind.ExclamationToken:
+                               case SyntaxKind.DollarToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.PercentToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.CaretToken:
+                               case SyntaxKind.AmpersandToken:
+                               case SyntaxKind.AsteriskToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.OpenParenToken:
+                                       return CSTokenType.OpenParen;
+                               case SyntaxKind.CloseParenToken:
+                                       return CSTokenType.CloseParenToken;
+                               case SyntaxKind.MinusToken:
+                               case SyntaxKind.PlusToken:
+                               case SyntaxKind.EqualsToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.OpenBraceToken:
+                                       return CSTokenType.OpenBrace;
+                               case SyntaxKind.CloseBraceToken:
+                                       return CSTokenType.CloseBrace;
+                               case SyntaxKind.OpenBracketToken:
+                                       return CSTokenType.OpenBracket;
+                               case SyntaxKind.CloseBracketToken:
+                                       return CSTokenType.CloseBracket;
+                               case SyntaxKind.BarToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.BackslashToken:
+                               case SyntaxKind.ColonToken:
+                               case SyntaxKind.SemicolonToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.DoubleQuoteToken:
+                                       return CSTokenType.DoubleQuote;
+                               case SyntaxKind.SingleQuoteToken:
+                                       return CSTokenType.SingleQuote;
+                               case SyntaxKind.LessThanToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.CommaToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.GreaterThanToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.DotToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.QuestionToken:
+                               case SyntaxKind.HashToken:
+                               case SyntaxKind.SlashToken:
+                               case SyntaxKind.DotDotToken:
+                                       return CSTokenType.Punctuation;
+                               case SyntaxKind.SlashGreaterThanToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LessThanSlashToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlCommentStartToken:
+                                       return CSTokenType.BlockCommentStart;
+                               case SyntaxKind.XmlCommentEndToken:
+                                       return CSTokenType.BlockCommentEnd;
+                               case SyntaxKind.XmlCDataStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlCDataEndToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlProcessingInstructionStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlProcessingInstructionEndToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BarBarToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AmpersandAmpersandToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MinusMinusToken:
+                               case SyntaxKind.PlusPlusToken:
+                               case SyntaxKind.ColonColonToken:
+                               case SyntaxKind.QuestionQuestionToken:
+                               case SyntaxKind.MinusGreaterThanToken:
+                               case SyntaxKind.ExclamationEqualsToken:
+                               case SyntaxKind.EqualsEqualsToken:
+                               case SyntaxKind.EqualsGreaterThanToken:
+                               case SyntaxKind.LessThanEqualsToken:
+                               case SyntaxKind.LessThanLessThanToken:
+                               case SyntaxKind.LessThanLessThanEqualsToken:
+                               case SyntaxKind.GreaterThanEqualsToken:
+                               case SyntaxKind.GreaterThanGreaterThanToken:
+                               case SyntaxKind.GreaterThanGreaterThanEqualsToken:
+                               case SyntaxKind.SlashEqualsToken:
+                               case SyntaxKind.AsteriskEqualsToken:
+                               case SyntaxKind.BarEqualsToken:
+                               case SyntaxKind.AmpersandEqualsToken:
+                               case SyntaxKind.PlusEqualsToken:
+                               case SyntaxKind.MinusEqualsToken:
+                               case SyntaxKind.CaretEqualsToken:
+                               case SyntaxKind.PercentEqualsToken:
+                               case SyntaxKind.QuestionQuestionEqualsToken:
+                               case SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
+                               case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.BoolKeyword:
+                               case SyntaxKind.ByteKeyword:
+                               case SyntaxKind.SByteKeyword:
+                               case SyntaxKind.ShortKeyword:
+                               case SyntaxKind.UShortKeyword:
+                               case SyntaxKind.IntKeyword:
+                               case SyntaxKind.UIntKeyword:
+                               case SyntaxKind.LongKeyword:
+                               case SyntaxKind.ULongKeyword:
+                               case SyntaxKind.DoubleKeyword:
+                               case SyntaxKind.FloatKeyword:
+                               case SyntaxKind.DecimalKeyword:
+                               case SyntaxKind.StringKeyword:
+                               case SyntaxKind.CharKeyword:
+                               case SyntaxKind.VoidKeyword:
+                               case SyntaxKind.ObjectKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.TypeOfKeyword:
+                               case SyntaxKind.SizeOfKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.NullKeyword:
+                               case SyntaxKind.TrueKeyword:
+                               case SyntaxKind.FalseKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.IfKeyword:
+                               case SyntaxKind.ElseKeyword:
+                               case SyntaxKind.WhileKeyword:
+                               case SyntaxKind.ForKeyword:
+                               case SyntaxKind.ForEachKeyword:
+                               case SyntaxKind.DoKeyword:
+                               case SyntaxKind.SwitchKeyword:
+                               case SyntaxKind.CaseKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.DefaultKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.TryKeyword:
+                               case SyntaxKind.CatchKeyword:
+                               case SyntaxKind.FinallyKeyword:
+                                       return CSTokenType.TryKeyword;
+                               case SyntaxKind.LockKeyword:
+                               case SyntaxKind.GotoKeyword:
+                               case SyntaxKind.BreakKeyword:
+                               case SyntaxKind.ContinueKeyword:
+                               case SyntaxKind.ReturnKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.ThrowKeyword:
+                                       return CSTokenType.TryKeyword;
+                               case SyntaxKind.PublicKeyword:
+                               case SyntaxKind.PrivateKeyword:
+                               case SyntaxKind.InternalKeyword:
+                               case SyntaxKind.ProtectedKeyword:
+                               case SyntaxKind.StaticKeyword:
+                               case SyntaxKind.ReadOnlyKeyword:
+                               case SyntaxKind.SealedKeyword:
+                                       return CSTokenType.VisibilityKeyword;
+                               case SyntaxKind.ConstKeyword:
+                               case SyntaxKind.FixedKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.StackAllocKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.VolatileKeyword:
+                                       return CSTokenType.VisibilityKeyword;
+                               case SyntaxKind.NewKeyword:
+                                       return CSTokenType.NewKeyword;
+                               case SyntaxKind.OverrideKeyword:
+                               case SyntaxKind.AbstractKeyword:
+                               case SyntaxKind.VirtualKeyword:
+                                       return CSTokenType.VisibilityKeyword;
+                               case SyntaxKind.EventKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.ExternKeyword:
+                                       return CSTokenType.VisibilityKeyword;
+                               case SyntaxKind.RefKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.OutKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.InKeyword:
+                               case SyntaxKind.IsKeyword:
+                               case SyntaxKind.AsKeyword:
+                                       return CSTokenType.Operator;
+                               case SyntaxKind.ParamsKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArgListKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MakeRefKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefTypeKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefValueKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ThisKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.BaseKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.NamespaceKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.UsingKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.ClassKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.StructKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.InterfaceKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.EnumKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.DelegateKeyword:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.CheckedKeyword:
+                               case SyntaxKind.UncheckedKeyword:
+                               case SyntaxKind.UnsafeKeyword:
+                               case SyntaxKind.OperatorKeyword:
+                               case SyntaxKind.ExplicitKeyword:
+                               case SyntaxKind.ImplicitKeyword:
+                               case SyntaxKind.YieldKeyword:
+                               case SyntaxKind.PartialKeyword:
+                               case SyntaxKind.AliasKeyword:
+                               case SyntaxKind.GlobalKeyword:
+                               case SyntaxKind.AssemblyKeyword:
+                               case SyntaxKind.ModuleKeyword:
+                               case SyntaxKind.TypeKeyword:
+                               case SyntaxKind.FieldKeyword:
+                               case SyntaxKind.MethodKeyword:
+                               case SyntaxKind.ParamKeyword:
+                               case SyntaxKind.PropertyKeyword:
+                               case SyntaxKind.TypeVarKeyword:
+                               case SyntaxKind.GetKeyword:
+                               case SyntaxKind.SetKeyword:
+                               case SyntaxKind.AddKeyword:
+                               case SyntaxKind.RemoveKeyword:
+                               case SyntaxKind.WhereKeyword:
+                               case SyntaxKind.FromKeyword:
+                               case SyntaxKind.GroupKeyword:
+                               case SyntaxKind.JoinKeyword:
+                               case SyntaxKind.IntoKeyword:
+                               case SyntaxKind.LetKeyword:
+                               case SyntaxKind.ByKeyword:
+                               case SyntaxKind.SelectKeyword:
+                               case SyntaxKind.OrderByKeyword:
+                                       return CSTokenType.Keyword;
+                               case SyntaxKind.OnKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EqualsKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AscendingKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DescendingKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NameOfKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AsyncKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AwaitKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WhenKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OrKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AndKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NotKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WithKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InitKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RecordKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ManagedKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnmanagedKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RequiredKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ScopedKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FileKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ElifKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndIfKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RegionKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndRegionKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DefineKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UndefKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WarningKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ErrorKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LineKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PragmaKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.HiddenKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ChecksumKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DisableKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RestoreKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ReferenceKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringEndToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedVerbatimStringStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LoadKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NullableKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EnableKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WarningsKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AnnotationsKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.VarKeyword:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnderscoreToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OmittedTypeArgumentToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OmittedArraySizeExpressionToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndOfDirectiveToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndOfDocumentationCommentToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndOfFileToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BadToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IdentifierToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NumericLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CharacterLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.StringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlEntityLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlTextLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlTextLiteralNewLineToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringTextToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SingleLineRawStringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MultiLineRawStringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Utf8StringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Utf8SingleLineRawStringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Utf8MultiLineRawStringLiteralToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EndOfLineTrivia:
+                                       return CSTokenType.LineBreak;
+                               case SyntaxKind.WhitespaceTrivia:
+                                       return CSTokenType.WhiteSpace;
+                               case SyntaxKind.SingleLineCommentTrivia:
+                                       return CSTokenType.LineComment;
+                               case SyntaxKind.MultiLineCommentTrivia:
+                                       return CSTokenType.LineComment;
+                               case SyntaxKind.DocumentationCommentExteriorTrivia:
+                               case SyntaxKind.SingleLineDocumentationCommentTrivia:
+                               case SyntaxKind.MultiLineDocumentationCommentTrivia:
+                               case SyntaxKind.DisabledTextTrivia:
+                                       return CSTokenType.Trivia;
+                               case SyntaxKind.PreprocessingMessageTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IfDirectiveTrivia:
+                               case SyntaxKind.ElifDirectiveTrivia:
+                               case SyntaxKind.ElseDirectiveTrivia:
+                               case SyntaxKind.EndIfDirectiveTrivia:
+                                       return CSTokenType.Directive;
+                               case SyntaxKind.RegionDirectiveTrivia:
+                               case SyntaxKind.EndRegionDirectiveTrivia:
+                                       return CSTokenType.Region;
+                               case SyntaxKind.DefineDirectiveTrivia:
+                               case SyntaxKind.UndefDirectiveTrivia:
+                               case SyntaxKind.ErrorDirectiveTrivia:
+                               case SyntaxKind.WarningDirectiveTrivia:
+                               case SyntaxKind.LineDirectiveTrivia:
+                               case SyntaxKind.PragmaWarningDirectiveTrivia:
+                               case SyntaxKind.PragmaChecksumDirectiveTrivia:
+                               case SyntaxKind.ReferenceDirectiveTrivia:
+                                       return CSTokenType.Directive;
+                               case SyntaxKind.BadDirectiveTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SkippedTokensTrivia:
+                                       return CSTokenType.Trivia;
+                               case SyntaxKind.ConflictMarkerTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.XmlElement:
+                               case SyntaxKind.XmlElementStartTag:
+                               case SyntaxKind.XmlElementEndTag:
+                               case SyntaxKind.XmlEmptyElement:
+                               case SyntaxKind.XmlTextAttribute:
+                               case SyntaxKind.XmlCrefAttribute:
+                               case SyntaxKind.XmlNameAttribute:
+                               case SyntaxKind.XmlName:
+                               case SyntaxKind.XmlPrefix:
+                               case SyntaxKind.XmlText:
+                               case SyntaxKind.XmlCDataSection:
+                               case SyntaxKind.XmlComment:
+                               case SyntaxKind.XmlProcessingInstruction:
+                                       return CSTokenType.Trivia;
+                               case SyntaxKind.TypeCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.QualifiedCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NameMemberCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IndexerMemberCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OperatorMemberCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConversionOperatorMemberCref:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CrefParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CrefBracketedParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CrefParameter:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IdentifierName:
+                                       return CSTokenType.Name;
+                               case SyntaxKind.QualifiedName:
+                                       return CSTokenType.Name;
+                               case SyntaxKind.GenericName:
+                                       return CSTokenType.Name;
+                               case SyntaxKind.TypeArgumentList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AliasQualifiedName:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PredefinedType:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.ArrayType:
+                                       return CSTokenType.TypeKeyword;
+                               case SyntaxKind.ArrayRankSpecifier:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PointerType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NullableType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OmittedTypeArgument:
+                                       return CSTokenType.Unknown;
+                                       
+                               case SyntaxKind.ParenthesizedExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConditionalExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InvocationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ElementAccessExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArgumentList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BracketedArgumentList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Argument:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NameColon:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CastExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AnonymousMethodExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SimpleLambdaExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ParenthesizedLambdaExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ObjectInitializerExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CollectionInitializerExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArrayInitializerExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AnonymousObjectMemberDeclarator:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ComplexElementInitializerExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ObjectCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AnonymousObjectCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArrayCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ImplicitArrayCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.StackAllocArrayCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OmittedArraySizeExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ImplicitElementAccess:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IsPatternExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RangeExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ImplicitObjectCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AddExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SubtractExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MultiplyExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DivideExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ModuloExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LeftShiftExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RightShiftExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LogicalOrExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LogicalAndExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BitwiseOrExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BitwiseAndExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExclusiveOrExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EqualsExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NotEqualsExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LessThanExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LessThanOrEqualExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GreaterThanExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GreaterThanOrEqualExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IsExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AsExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CoalesceExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SimpleMemberAccessExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PointerMemberAccessExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConditionalAccessExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnsignedRightShiftExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MemberBindingExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ElementBindingExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SimpleAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AddAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SubtractAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MultiplyAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DivideAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ModuloAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AndAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExclusiveOrAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OrAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LeftShiftAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RightShiftAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CoalesceAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnsignedRightShiftAssignmentExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnaryPlusExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnaryMinusExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BitwiseNotExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LogicalNotExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PreIncrementExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PreDecrementExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PointerIndirectionExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AddressOfExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PostIncrementExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PostDecrementExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AwaitExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IndexExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ThisExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BaseExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArgListExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NumericLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.StringLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CharacterLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TrueLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FalseLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NullLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DefaultLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Utf8StringLiteralExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypeOfExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SizeOfExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CheckedExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UncheckedExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DefaultExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MakeRefExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefValueExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefTypeExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.QueryExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.QueryBody:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FromClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LetClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.JoinClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.JoinIntoClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WhereClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OrderByClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AscendingOrdering:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DescendingOrdering:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SelectClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GroupClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.QueryContinuation:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Block:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LocalDeclarationStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.VariableDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.VariableDeclarator:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EqualsValueClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExpressionStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EmptyStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LabeledStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GotoStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GotoCaseStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GotoDefaultStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BreakStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ContinueStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ReturnStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.YieldReturnStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.YieldBreakStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ThrowStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WhileStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DoStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ForStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ForEachStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UsingStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FixedStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CheckedStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UncheckedStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnsafeStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LockStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IfStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ElseClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SwitchStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SwitchSection:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CaseSwitchLabel:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DefaultSwitchLabel:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TryStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CatchClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CatchDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CatchFilterClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FinallyClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LocalFunctionStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CompilationUnit:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GlobalStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NamespaceDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UsingDirective:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExternAliasDirective:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FileScopedNamespaceDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AttributeList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AttributeTargetSpecifier:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Attribute:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AttributeArgumentList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AttributeArgument:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NameEquals:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ClassDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.StructDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterfaceDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EnumDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DelegateDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BaseList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SimpleBaseType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypeParameterConstraintClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConstructorConstraint:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ClassConstraint:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.StructConstraint:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypeConstraint:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExplicitInterfaceSpecifier:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EnumMemberDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FieldDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EventFieldDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.MethodDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OperatorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConversionOperatorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConstructorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BaseConstructorInitializer:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ThisConstructorInitializer:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DestructorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PropertyDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.EventDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IndexerDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AccessorList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.GetAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SetAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AddAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RemoveAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.UnknownAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.BracketedParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Parameter:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypeParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypeParameter:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.IncompleteMember:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ArrowExpressionClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Interpolation:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedStringText:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolationAlignmentClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolationFormatClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ShebangDirectiveTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LoadDirectiveTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TupleType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TupleElement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TupleExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SingleVariableDesignation:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ParenthesizedVariableDesignation:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ForEachVariableStatement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DeclarationPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ConstantPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CasePatternSwitchLabel:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WhenClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DiscardDesignation:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RecursivePattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PropertyPatternClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.Subpattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PositionalPatternClause:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DiscardPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SwitchExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SwitchExpressionArm:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.VarPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ParenthesizedPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RelationalPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.TypePattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.OrPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.AndPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NotPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SlicePattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ListPattern:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DeclarationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RefType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ThrowExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ImplicitStackAllocArrayCreationExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SuppressNullableWarningExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.NullableDirectiveTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerParameter:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerParameterList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerCallingConvention:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InitAccessorDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WithExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.WithInitializerExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RecordDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.DefaultConstraint:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.PrimaryConstructorBaseType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerUnmanagedCallingConventionList:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.FunctionPointerUnmanagedCallingConvention:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.RecordStructDeclaration:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExpressionColon:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LineDirectivePosition:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.LineSpanDirectiveTrivia:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedSingleLineRawStringStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedMultiLineRawStringStartToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.InterpolatedRawStringEndToken:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ScopedType:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.CollectionExpression:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.ExpressionElement:
+                                       return CSTokenType.Unknown;
+                               case SyntaxKind.SpreadElement:
+                                       return CSTokenType.Unknown;
+                               default:
+                                       return CSTokenType.Unknown;
+                       }
                }
-
        }
 }
\ No newline at end of file
index 95529c4789c1877dbcf28b2be16edba85fb8d82a..f432892ff88f904a3feb4a1510e087421bcf1a02 100644 (file)
@@ -152,11 +152,20 @@ namespace CERoslynPlugin
 
                                lastBuildResult = BuildManager.DefaultBuildManager.Build (solutionProject.buildParams, request);
 
-                               printEvaluatedProperties (lastBuildResult.ProjectStateAfterBuild);
+                               //printEvaluatedProperties (lastBuildResult.ProjectStateAfterBuild);
 
                                /*var test = lastBuildResult.ProjectStateAfterBuild.GetItems ("Reference");*/
 
                                //Console.WriteLine (IsCrowProject);
+                               foreach (var type in lastBuildResult.ProjectStateAfterBuild.ItemTypes)
+                               {
+                                       Console.WriteLine ($"{type}");
+                                       foreach (var item in lastBuildResult.ProjectStateAfterBuild.GetItems(type))
+                                       {
+                                               Console.WriteLine ($"\t{item}");
+                                       }
+                               }
+                               
 
                        //}
                }
index 4a214bd7773343af4b4f424a89a4ed1c0f7fd7c5..9248f75207812ef595179448f5e0fb1a679f3249 100644 (file)
@@ -214,9 +214,9 @@ namespace CERoslynPlugin
                                msbProj?.DesignBuild();
                }
 
-               void build (params string[] targets) {
+               /*void build (params string[] targets) {
                        BuildRequestData buildRequest = new BuildRequestData (FullPath, null, "Current", targets, null);
                        BuildResult buildResult = BuildManager.DefaultBuildManager.Build (buildParams, buildRequest);
-               }
+               }*/
        }
 }
\ No newline at end of file