diff --git a/src/requests.zig b/src/requests.zig index b38911c..1dd7e46 100644 --- a/src/requests.zig +++ b/src/requests.zig @@ -274,6 +274,16 @@ pub const InlayHint = struct { }, }; +pub const CodeAction = struct { + params: struct { + textDocument: TextDocumentIdentifier, + range: types.Range, + context: struct { + diagnostics: []types.Diagnostic, + }, + }, +}; + pub const Configuration = struct { params: struct { settings: struct { diff --git a/src/types.zig b/src/types.zig index 38f2cd1..2bee392 100644 --- a/src/types.zig +++ b/src/types.zig @@ -47,6 +47,8 @@ pub const ResponseParams = union(enum) { ConfigurationParams: ConfigurationParams, RegistrationParams: RegistrationParams, DocumentHighlight: []DocumentHighlight, + CodeAction: []CodeAction, + ApplyEdit: ApplyWorkspaceEditParams, }; /// JSONRPC notifications @@ -372,6 +374,46 @@ pub const InlayHintKind = enum(i64) { } }; +pub const CodeActionKind = enum { + Empty, + QuickFix, + Refactor, + RefactorExtract, + RefactorInline, + RefactorRewrite, + Source, + SourceOrganizeImports, + SourceFixAll, + + pub fn jsonStringify(value: CodeActionKind, options: std.json.StringifyOptions, out_stream: anytype) !void { + const name = switch (value) { + .Empty => "", + .QuickFix => "quickfix", + .Refactor => "refactor", + .RefactorExtract => "refactor.extract", + .RefactorInline => "refactor.inline", + .RefactorRewrite => "refactor.rewrite", + .Source => "source", + .SourceOrganizeImports => "source.organizeImports", + .SourceFixAll => "source.fixAll", + }; + try std.json.stringify(name, options, out_stream); + } +}; + +pub const CodeAction = struct { + title: string, + kind: CodeActionKind, + // diagnostics: []Diagnostic, + isPreferred: bool, + edit: WorkspaceEdit, +}; + +pub const ApplyWorkspaceEditParams = struct { + label: string, + edit: WorkspaceEdit, +}; + pub const PositionEncodingKind = enum { utf8, utf16,