private IEnumerable <BulbMenuItem> GetRunMethodItems(ISolution solution, [NotNull] RunMarkerHighlighting runMarker) { var lambdaHost = solution.GetComponent <LambdaDaemonHost>(); var javaPropertiesLoader = solution.GetComponent <JavaPropertiesLoader>(); var methodName = runMarker.Method.ShortName; if (methodName.IsEmpty()) { ourLogger.Warn("MethodName for lambda runMarker should not be empty"); yield break; } var handlerString = ComposeHandlerString(runMarker); yield return(new BulbMenuItem( new ExecutableItem(() => { lambdaHost.RunLambda(methodName, handlerString); }), new RichText($"Run '[Local] {methodName}'"), LambdaRunMarkersThemedIcons.RunThis.Id, BulbMenuAnchors.PermanentBackgroundItems)); yield return(new BulbMenuItem( new ExecutableItem(() => { lambdaHost.DebugLambda(methodName, handlerString); }), new RichText($"Debug '[Local] {methodName}'"), LambdaRunMarkersThemedIcons.DebugThis.Id, BulbMenuAnchors.PermanentBackgroundItems)); yield return(new BulbMenuItem( new ExecutableItem(() => { lambdaHost.CreateNewLambda(methodName, handlerString); }), new RichText(javaPropertiesLoader.GetLocalizedString("lambda.create_new")), CompositeIconId.Compose(LambdaRunMarkersThemedIcons.Lambda.Id, LambdaRunMarkersThemedIcons.CreateNew.Id), BulbMenuAnchors.PermanentBackgroundItems)); }
public void CollectRunMarkers(IFile file, IContextBoundSettingsStore settings, IHighlightingConsumer consumer) { var isLambdaGutterMarksEnabled = settings.GetValue((LambdaGutterMarkSettings s) => s.Enabled); if (!isLambdaGutterMarksEnabled) { return; } if (!(file is ICSharpFile csharpFile)) { return; } if (!LambdaFinder.IsLambdaProjectType(file.GetProject())) { return; } foreach (var declaration in CachedDeclarationsCollector.Run <IMethodDeclaration>(csharpFile)) { if (!(declaration.DeclaredElement is IMethod method)) { continue; } if (!LambdaFinder.IsSuitableLambdaMethod(method)) { continue; } var range = declaration.GetNameDocumentRange(); var highlighting = new RunMarkerHighlighting(declaration, LambdaRunMarkerAttributeIds.LAMBDA_RUN_METHOD_MARKER_ID, range, file.GetPsiModule().TargetFrameworkId); consumer.AddHighlighting(highlighting, range); } }
private static string ComposeHandlerString([NotNull] RunMarkerHighlighting runMarker) { var project = runMarker.Project; if (project == null) { return(""); } var assemblyName = project.GetOutputAssemblyName(runMarker.TargetFrameworkId); var containingType = runMarker.Method.GetContainingType(); if (containingType == null) { return(""); } var typeString = containingType.GetFullClrName(); var methodName = runMarker.Method.ShortName; return($"{assemblyName}::{typeString}::{methodName}"); }