@@ -29,6 +29,7 @@ import org.eclipse.lsp4j.adapters.VersionedTextDocumentIdentifierTypeAdapter
29
29
import org.eclipse.lsp4j.adapters.WorkspaceDocumentDiagnosticReportListAdapter
30
30
import org.eclipse.lsp4j.adapters.WorkspaceSymbolLocationTypeAdapter
31
31
import org.eclipse.lsp4j.generator.JsonRpcData
32
+ import org.eclipse.lsp4j.jsonrpc.Draft
32
33
import org.eclipse.lsp4j.jsonrpc.json.adapters.JsonElementTypeAdapter
33
34
import org.eclipse.lsp4j.jsonrpc.messages.Either
34
35
import org.eclipse.lsp4j.jsonrpc.messages.Either3
@@ -2241,6 +2242,14 @@ class TextDocumentClientCapabilities {
2241
2242
*/
2242
2243
DiagnosticCapabilities diagnostic
2243
2244
2245
+ /**
2246
+ * Capabilities specific to the `textDocument/inlineCompletion` request.
2247
+ * <p >
2248
+ * @since 3.18.0
2249
+ */
2250
+ @Draft
2251
+ InlineCompletionClientCapabilities inlineCompletion
2252
+
2244
2253
new () {
2245
2254
}
2246
2255
}
@@ -3330,7 +3339,7 @@ class Diagnostic {
3330
3339
* <p >
3331
3340
* Since 3.15.0
3332
3341
*/
3333
- List<DiagnosticTag > tags
3342
+ List<DiagnosticTag > tags
3334
3343
3335
3344
/**
3336
3345
* An array of related diagnostic information, e.g. when symbol-names within a scope collide
@@ -6061,6 +6070,14 @@ class ServerCapabilities {
6061
6070
*/
6062
6071
Either<Boolean , InlineValueRegistrationOptions > inlineValueProvider
6063
6072
6073
+ /**
6074
+ * The server provides inline completions.
6075
+ * <p >
6076
+ * @since 3.18.0
6077
+ */
6078
+ @Draft
6079
+ Either<Boolean , InlineCompletionRegistrationOptions > inlineCompletionProvider
6080
+
6064
6081
/**
6065
6082
* The server has support for pull model diagnostics.
6066
6083
* <p >
@@ -11161,3 +11178,263 @@ class NotebookDocumentIdentifier {
11161
11178
this . uri = Preconditions . checkNotNull(uri, ' uri' )
11162
11179
}
11163
11180
}
11181
+
11182
+ /**
11183
+ * Describes kind of {@link StringValue}.
11184
+ * <p >
11185
+ * Since 3.18.0
11186
+ */
11187
+ @Draft
11188
+ final class StringValueKind {
11189
+ /**
11190
+ * Indicates a snippet {@link StringValue}.
11191
+ */
11192
+ public static val SNIPPET = ' snippet'
11193
+
11194
+ private new () {
11195
+ }
11196
+ }
11197
+
11198
+ /**
11199
+ * A string value used as a snippet is a template which allows to insert text
11200
+ * and to control the editor cursor when insertion happens.
11201
+ * <p >
11202
+ * A snippet can define tab stops and placeholders with `$1`, `$2`
11203
+ * and `${3:foo}`. `$0` defines the final tab stop, it defaults to
11204
+ * the end of the snippet. Variables are defined with `$name` and
11205
+ * `${name:default value}`.
11206
+ * <p >
11207
+ * @since 3.18.0
11208
+ */
11209
+ @Draft
11210
+ @JsonRpcData
11211
+ class StringValue {
11212
+ /**
11213
+ * The kind of the string value.
11214
+ * <p >
11215
+ * See {@link StringValueKind} for allowed values.
11216
+ */
11217
+ @NonNull
11218
+ String kind
11219
+
11220
+ /**
11221
+ * The string value.
11222
+ */
11223
+ @NonNull
11224
+ String value
11225
+
11226
+ new () {
11227
+ }
11228
+
11229
+ new (@NonNull String kind, @NonNull String value) {
11230
+ this . kind = Preconditions . checkNotNull(kind, ' kind' )
11231
+ this . value = Preconditions . checkNotNull(value, ' value' )
11232
+ }
11233
+ }
11234
+
11235
+ /**
11236
+ * Client capabilities specific to inline completions.
11237
+ * <p >
11238
+ * @since 3.18.0
11239
+ */
11240
+ @Draft
11241
+ @JsonRpcData
11242
+ class InlineCompletionClientCapabilities extends DynamicRegistrationCapabilities {
11243
+ new () {
11244
+ }
11245
+
11246
+ new (Boolean dynamicRegistration) {
11247
+ super (dynamicRegistration)
11248
+ }
11249
+ }
11250
+
11251
+ /**
11252
+ * Inline completion options used during static or dynamic registration.
11253
+ * <p >
11254
+ * @since 3.18.0
11255
+ */
11256
+ @Draft
11257
+ @JsonRpcData
11258
+ class InlineCompletionRegistrationOptions extends AbstractTextDocumentRegistrationAndWorkDoneProgressOptions {
11259
+ /**
11260
+ * The id used to register the request. The id can be used to deregister
11261
+ * the request again. See also {@link Registration#id}.
11262
+ */
11263
+ String id
11264
+
11265
+ new () {
11266
+ }
11267
+
11268
+ new (String id) {
11269
+ this . id = id
11270
+ }
11271
+ }
11272
+
11273
+ /**
11274
+ * A parameter literal used in inline completion requests.
11275
+ * <p >
11276
+ * @since 3.18.0
11277
+ */
11278
+ @Draft
11279
+ @JsonRpcData
11280
+ class InlineCompletionParams extends TextDocumentPositionAndWorkDoneProgressParams {
11281
+ /**
11282
+ * Additional information about the context in which inline completions
11283
+ * were requested.
11284
+ */
11285
+ @NonNull
11286
+ InlineCompletionContext context
11287
+
11288
+ new () {
11289
+ }
11290
+
11291
+ new (@NonNull TextDocumentIdentifier textDocument, @NonNull Position position, @NonNull InlineCompletionContext context) {
11292
+ super (textDocument, position)
11293
+ this . context = Preconditions . checkNotNull(context, ' context' )
11294
+ }
11295
+ }
11296
+
11297
+ /**
11298
+ * Provides information about the context in which an inline completion was
11299
+ * requested.
11300
+ * <p >
11301
+ * @since 3.18.0
11302
+ */
11303
+ @Draft
11304
+ @JsonRpcData
11305
+ class InlineCompletionContext {
11306
+ /**
11307
+ * Describes how the inline completion was triggered.
11308
+ */
11309
+ @NonNull
11310
+ InlineCompletionTriggerKind triggerKind
11311
+
11312
+ /**
11313
+ * Provides information about the currently selected item in the
11314
+ * autocomplete widget if it is visible.
11315
+ *<p >
11316
+ * If set, provided inline completions must extend the text of the
11317
+ * selected item and use the same range, otherwise they are not shown as
11318
+ * preview.
11319
+ * As an example, if the document text is `console.` and the selected item
11320
+ * is `.log` replacing the `.` in the document, the inline completion must
11321
+ * also replace `.` and start with `.log`, for example `.log()`.
11322
+ *<p >
11323
+ * Inline completion providers are requested again whenever the selected
11324
+ * item changes.
11325
+ */
11326
+ SelectedCompletionInfo selectedCompletionInfo
11327
+
11328
+ new () {
11329
+ }
11330
+
11331
+ new (@NonNull InlineCompletionTriggerKind triggerKind) {
11332
+ this . triggerKind = Preconditions . checkNotNull(triggerKind, ' triggerKind' )
11333
+ }
11334
+
11335
+ new (@NonNull InlineCompletionTriggerKind triggerKind, SelectedCompletionInfo selectedCompletionInfo) {
11336
+ this . triggerKind = Preconditions . checkNotNull(triggerKind, ' triggerKind' )
11337
+ this . selectedCompletionInfo = selectedCompletionInfo
11338
+ }
11339
+ }
11340
+
11341
+ /**
11342
+ * Describes the currently selected completion item.
11343
+ * <p >
11344
+ * @since 3.18.0
11345
+ */
11346
+ @Draft
11347
+ @JsonRpcData
11348
+ class SelectedCompletionInfo {
11349
+ /**
11350
+ * The range that will be replaced if this completion item is accepted.
11351
+ */
11352
+ @NonNull
11353
+ Range range
11354
+
11355
+ /**
11356
+ * The text the range will be replaced with if this completion is
11357
+ * accepted.
11358
+ */
11359
+ @NonNull
11360
+ String text
11361
+
11362
+ new () {
11363
+ }
11364
+
11365
+ new (@NonNull Range range, @NonNull String text) {
11366
+ this . range = Preconditions . checkNotNull(range, ' range' )
11367
+ this . text = Preconditions . checkNotNull(text, ' text' )
11368
+ }
11369
+ }
11370
+
11371
+ /**
11372
+ * Represents a collection of {@link InlineCompletionItem} to be presented in the editor.
11373
+ * <p >
11374
+ * @since 3.18.0
11375
+ */
11376
+ @Draft
11377
+ @JsonRpcData
11378
+ class InlineCompletionList {
11379
+ /**
11380
+ * The inline completion items.
11381
+ */
11382
+ @NonNull
11383
+ List<InlineCompletionItem > items
11384
+
11385
+ new () {
11386
+ }
11387
+
11388
+ new (@NonNull List<InlineCompletionItem > items) {
11389
+ this . items = Preconditions . checkNotNull(items, ' items' )
11390
+ }
11391
+ }
11392
+
11393
+ /**
11394
+ * An inline completion item represents a text snippet that is proposed inline
11395
+ * to complete text that is being typed.
11396
+ * <p >
11397
+ * @since 3.18.0
11398
+ */
11399
+ @Draft
11400
+ @JsonRpcData
11401
+ class InlineCompletionItem {
11402
+ /**
11403
+ * The text to replace the range with. Must be set.
11404
+ * Is used both for the preview and the accept operation.
11405
+ */
11406
+ @NonNull
11407
+ Either<String , StringValue > insertText
11408
+
11409
+ /**
11410
+ * A text that is used to decide if this inline completion should be
11411
+ * shown. When `falsy`, the {@link InlineCompletionItem#insertText} is
11412
+ * used.
11413
+ * <p >
11414
+ * An inline completion is shown if the text to replace is a prefix of the
11415
+ * filter text.
11416
+ */
11417
+ String filterText
11418
+
11419
+ /**
11420
+ * The range to replace.
11421
+ * Must begin and end on the same line.
11422
+ * <p >
11423
+ * Prefer replacements over insertions to provide a better experience when
11424
+ * the user deletes typed text.
11425
+ */
11426
+ Range range
11427
+
11428
+ /**
11429
+ * An optional {@link Command} that is executed *after* inserting this
11430
+ * completion.
11431
+ */
11432
+ Command command
11433
+
11434
+ new () {
11435
+ }
11436
+
11437
+ new (@NonNull Either<String , StringValue > insertText) {
11438
+ this . insertText = Preconditions . checkNotNull(insertText, ' insertText' )
11439
+ }
11440
+ }
0 commit comments