private static VSCodeAction GenerateVSCodeAction( CodeActionParams request, SourceText documentText, IUnifiedSuggestedAction suggestedAction, LSP.CodeActionKind codeActionKind, UnifiedSuggestedActionSetPriority setPriority, LSP.Range?applicableRange, int currentSetNumber, ref int currentHighestSetNumber, string currentTitle = "") { if (!string.IsNullOrEmpty(currentTitle)) { // Adding a delimiter for nested code actions, e.g. 'Suppress or Configure issues|Suppress IDEXXXX|in Source' currentTitle += '|'; } var codeAction = suggestedAction.OriginalCodeAction; currentTitle += codeAction.Title; // Nested code actions' unique identifiers consist of: parent code action unique identifier + '|' + title of code action var nestedActions = GenerateNestedVSCodeActions(request, documentText, suggestedAction, codeActionKind, ref currentHighestSetNumber, currentTitle); return(new VSCodeAction { Title = codeAction.Title, Kind = codeActionKind, Diagnostics = request.Context.Diagnostics, Children = nestedActions, Priority = UnifiedSuggestedActionSetPriorityToPriorityLevel(setPriority), Group = $"Roslyn{currentSetNumber}", ApplicableRange = applicableRange, Data = new CodeActionResolveData(currentTitle, request.Range, request.TextDocument) });
internal static LSP.VSCodeAction CreateCodeAction( string title, LSP.CodeActionKind kind, LSP.VSCodeAction[] children, CodeActionResolveData data, LSP.Diagnostic[] diagnostics, LSP.WorkspaceEdit edit = null, LSP.Command command = null) { var action = new LSP.VSCodeAction { Title = title, Kind = kind, Children = children, Data = JToken.FromObject(data), Diagnostics = diagnostics, Edit = edit, Command = command }; return(action); }