Exemple #1
0
        public static CommandOrCodeAction AsVSCodeCommandOrCodeAction(this CodeAction razorCodeAction)
        {
            if (razorCodeAction.Data is null)
            {
                // Only code action edit, we must convert this to a resolvable command

                var resolutionParams = new RazorCodeActionResolutionParams
                {
                    Action   = LanguageServerConstants.CodeActions.EditBasedCodeActionCommand,
                    Language = LanguageServerConstants.CodeActions.Languages.Razor,
                    Data     = razorCodeAction.Edit ?? new WorkspaceEdit()
                };

                razorCodeAction = new CodeAction()
                {
                    Title = razorCodeAction.Title,
                    Data  = JToken.FromObject(resolutionParams)
                };
            }

            var serializedParams = JToken.FromObject(razorCodeAction.Data);
            var arguments        = new JArray(serializedParams);

            return(new CommandOrCodeAction(new Command
            {
                Title = razorCodeAction.Title ?? string.Empty,
                Name = LanguageServerConstants.RazorCodeActionRunnerCommand,
                Arguments = arguments
            }));
        }
Exemple #2
0
        public static CodeAction WrapResolvableCSharpCodeAction(
            this CodeAction razorCodeAction,
            RazorCodeActionContext context,
            string action = LanguageServerConstants.CodeActions.Default)
        {
            if (razorCodeAction is null)
            {
                throw new ArgumentNullException(nameof(razorCodeAction));
            }

            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var csharpParams = new CSharpCodeActionParams()
            {
                Data         = razorCodeAction.Data,
                RazorFileUri = context.Request.TextDocument.Uri
            };

            var resolutionParams = new RazorCodeActionResolutionParams()
            {
                Action   = action,
                Language = LanguageServerConstants.CodeActions.Languages.CSharp,
                Data     = csharpParams
            };

            razorCodeAction.Data = JToken.FromObject(resolutionParams);

            return(razorCodeAction);
        }
        public static RazorCodeAction WrapResolvableCSharpCodeAction(
            this RazorCodeAction razorCodeAction,
            RazorCodeActionContext context,
            string action = LanguageServerConstants.CodeActions.Default)
        {
            if (razorCodeAction is null)
            {
                throw new ArgumentNullException(nameof(razorCodeAction));
            }

            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var csharpParams = new CSharpCodeActionParams()
            {
                Data         = razorCodeAction.Data,
                RazorFileUri = context.Request.TextDocument.Uri
            };

            var resolutionParams = new RazorCodeActionResolutionParams()
            {
                Action   = action,
                Language = LanguageServerConstants.CodeActions.Languages.CSharp,
                Data     = csharpParams
            };

            razorCodeAction = razorCodeAction with {
                Data = JToken.FromObject(resolutionParams)
            };

            if (razorCodeAction.Children != null)
            {
                for (var i = 0; i < razorCodeAction.Children.Length; i++)
                {
                    razorCodeAction.Children[i] = razorCodeAction.Children[i].WrapResolvableCSharpCodeAction(context, action);
                }
            }

            return(razorCodeAction);
        }
    }