protected override void Run(IMethodDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer) { if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT) { return; } if (element.GetProject().IsUnityProject()) { var method = element.DeclaredElement; if (method != null) { var eventFunction = myUnityApi.GetUnityEventFunction(method); if (eventFunction != null) { // Use the name as the range, rather than the range of the whole // method declaration (including body). Rider will remove the highlight // if anything inside the range changes, causing ugly flashes. It // might be nicer to use the whole of the method declaration (name + params) var documentRange = element.GetNameDocumentRange(); var tooltip = "Unity Event Function"; if (!string.IsNullOrEmpty(eventFunction.Description)) { tooltip += Environment.NewLine + Environment.NewLine + eventFunction.Description; } var highlighting = new UnityMarkOnGutter(element, documentRange, tooltip); consumer.AddHighlighting(highlighting, documentRange); } } } }
private void AddGutterMark(IDeclaration declaration, UnityEventFunction eventFunction, IHighlightingConsumer consumer) { var documentRange = declaration.GetNameDocumentRange(); var tooltip = "Unity event function"; if (!string.IsNullOrEmpty(eventFunction.Description)) { tooltip += Environment.NewLine + Environment.NewLine + eventFunction.Description; } if (eventFunction.Coroutine) { tooltip += Environment.NewLine + "This function can be a coroutine."; } var highlighting = new UnityMarkOnGutter(Api, declaration, documentRange, tooltip); consumer.AddHighlighting(highlighting, documentRange); }
protected override void Run(IFieldDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer) { if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT) { return; } if (element.GetProject().IsUnityProject()) { var field = element.DeclaredElement; if (field != null && myUnityApi.IsUnityField(field)) { var documentRange = element.GetDocumentRange(); var highlighting = new UnityMarkOnGutter(element, documentRange, "This field is initialised by Unity"); consumer.AddHighlighting(highlighting, documentRange); } } }
protected override void Run(IClassLikeDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer) { if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT) { return; } if (element.GetProject().IsUnityProject()) { var @class = element.DeclaredElement; if (@class != null) { if (myUnityApi.IsUnityType(@class)) { var documentRange = element.GetNameDocumentRange(); var highlighting = new UnityMarkOnGutter(element, documentRange, "Unity Scripting Type"); consumer.AddHighlighting(highlighting, documentRange); } } } }
protected void AddGutterMark(T element, DocumentRange documentRange, string tooltip, IHighlightingConsumer consumer) { var highlighting = new UnityMarkOnGutter(Api, element, documentRange, tooltip); consumer.AddHighlighting(highlighting, documentRange); }