Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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}");
        }