@theia/plugin 1.33.0 → 1.34.0-next.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +2 -2
  2. package/src/theia.d.ts +529 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/plugin",
3
- "version": "1.33.0",
3
+ "version": "1.34.0-next.31+255450b22",
4
4
  "description": "Theia - Plugin API",
5
5
  "types": "./src/theia.d.ts",
6
6
  "publishConfig": {
@@ -32,5 +32,5 @@
32
32
  "nyc": {
33
33
  "extends": "../../configs/nyc.json"
34
34
  },
35
- "gitHead": "d66562f95639027021574e130d20bb9459d89534"
35
+ "gitHead": "255450b224eae499d1b130eaf7318ac9659baaa4"
36
36
  }
package/src/theia.d.ts CHANGED
@@ -3001,10 +3001,34 @@ export module '@theia/plugin' {
3001
3001
  */
3002
3002
  message?: string;
3003
3003
 
3004
+ /**
3005
+ * The {@link TerminalLocation} or {@link TerminalEditorLocationOptions} or {@link TerminalSplitLocationOptions} for the terminal.
3006
+ */
3007
+ location?: TerminalLocation | TerminalEditorLocationOptions | TerminalSplitLocationOptions;
3008
+
3009
+ /**
3010
+ * Opt-out of the default terminal persistence on restart and reload.
3011
+ * This will only take effect when `terminal.integrated.enablePersistentSessions` is enabled.
3012
+ */
3013
+ isTransient?: boolean;
3014
+
3004
3015
  /**
3005
3016
  * Terminal attributes. Can be useful to apply some implementation specific information.
3006
3017
  */
3007
3018
  attributes?: { [key: string]: string | null };
3019
+
3020
+ /**
3021
+ * The icon path or {@link ThemeIcon} for the terminal.
3022
+ */
3023
+ iconPath?: ThemeIcon;
3024
+
3025
+ /**
3026
+ * The icon {@link ThemeColor} for the terminal.
3027
+ * The `terminal.ansi*` theme keys are
3028
+ * recommended for the best contrast and consistency across themes.
3029
+ * @stubbed
3030
+ */
3031
+ color?: ThemeColor;
3008
3032
  }
3009
3033
 
3010
3034
  /**
@@ -3067,6 +3091,30 @@ export module '@theia/plugin' {
3067
3091
  * control it.
3068
3092
  */
3069
3093
  pty: Pseudoterminal;
3094
+
3095
+ /**
3096
+ * The {@link TerminalLocation} or {@link TerminalEditorLocationOptions} or {@link TerminalSplitLocationOptions} for the terminal.
3097
+ */
3098
+ location?: TerminalLocation | TerminalEditorLocationOptions | TerminalSplitLocationOptions;
3099
+
3100
+ /**
3101
+ * Opt-out of the default terminal persistence on restart and reload.
3102
+ * This will only take effect when `terminal.integrated.enablePersistentSessions` is enabled.
3103
+ */
3104
+ isTransient?: boolean;
3105
+
3106
+ /**
3107
+ * The icon path or {@link ThemeIcon} for the terminal.
3108
+ */
3109
+ iconPath?: ThemeIcon;
3110
+
3111
+ /**
3112
+ * The icon {@link ThemeColor} for the terminal.
3113
+ * The standard `terminal.ansi*` theme keys are
3114
+ * recommended for the best contrast and consistency across themes.
3115
+ * @stubbed
3116
+ */
3117
+ color?: ThemeColor;
3070
3118
  }
3071
3119
 
3072
3120
  /**
@@ -3207,6 +3255,50 @@ export module '@theia/plugin' {
3207
3255
  constructor(startIndex: number, length: number, tooltip?: string);
3208
3256
  }
3209
3257
 
3258
+ /**
3259
+ * The location of the {@link Terminal}.
3260
+ */
3261
+ export enum TerminalLocation {
3262
+ /**
3263
+ * In the terminal view
3264
+ */
3265
+ Panel = 1,
3266
+ /**
3267
+ * In the editor area
3268
+ */
3269
+ Editor = 2,
3270
+ }
3271
+
3272
+ /**
3273
+ * Assumes a {@link TerminalLocation} of editor and allows specifying a {@link ViewColumn} and
3274
+ * {@link TerminalEditorLocationOptions.preserveFocus preserveFocus } property
3275
+ */
3276
+ export interface TerminalEditorLocationOptions {
3277
+ /**
3278
+ * A view column in which the {@link Terminal terminal} should be shown in the editor area.
3279
+ * Use {@link ViewColumn.Active active} to open in the active editor group, other values are
3280
+ * adjusted to be `Min(column, columnCount + 1)`, the
3281
+ * {@link ViewColumn.Active active}-column is not adjusted. Use
3282
+ * {@linkcode ViewColumn.Beside} to open the editor to the side of the currently active one.
3283
+ */
3284
+ viewColumn: ViewColumn;
3285
+ /**
3286
+ * An optional flag that when `true` will stop the {@link Terminal} from taking focus.
3287
+ */
3288
+ preserveFocus?: boolean;
3289
+ }
3290
+
3291
+ /**
3292
+ * Uses the parent {@link Terminal}'s location for the terminal
3293
+ */
3294
+ export interface TerminalSplitLocationOptions {
3295
+ /**
3296
+ * The parent terminal to split this terminal beside. This works whether the parent terminal
3297
+ * is in the panel or the editor area.
3298
+ */
3299
+ parentTerminal: Terminal;
3300
+ }
3301
+
3210
3302
  /**
3211
3303
  * A file decoration represents metadata that can be rendered with a file.
3212
3304
  */
@@ -4554,6 +4646,11 @@ export module '@theia/plugin' {
4554
4646
  */
4555
4647
  export namespace window {
4556
4648
 
4649
+ /**
4650
+ * Represents the grid widget within the main editor area
4651
+ */
4652
+ export const tabGroups: TabGroups;
4653
+
4557
4654
  /**
4558
4655
  * The currently active terminal or undefined. The active terminal is the one
4559
4656
  * that currently has focus or most recently had focus.
@@ -5318,6 +5415,17 @@ export module '@theia/plugin' {
5318
5415
  */
5319
5416
  password: boolean;
5320
5417
 
5418
+ /**
5419
+ * Selection range in the input value. Defined as tuple of two number where the
5420
+ * first is the inclusive start index and the second the exclusive end index. When `undefined` the whole
5421
+ * pre-filled value will be selected, when empty (start equals end) only the cursor will be set,
5422
+ * otherwise the defined range will be selected.
5423
+ *
5424
+ * This property does not get updated when the user types or makes a selection,
5425
+ * but it can be updated by the extension.
5426
+ */
5427
+ valueSelection: readonly [number, number] | undefined;
5428
+
5321
5429
  /**
5322
5430
  * An event signaling when the value has changed.
5323
5431
  */
@@ -8764,11 +8872,21 @@ export module '@theia/plugin' {
8764
8872
  source?: string;
8765
8873
 
8766
8874
  /**
8767
- * A code or identifier for this diagnostics. Will not be surfaced
8768
- * to the user, but should be used for later processing, e.g. when
8769
- * providing {@link CodeActionContext code actions}.
8875
+ * A code or identifier for this diagnostic.
8876
+ * Should be used for later processing, e.g. when providing {@link CodeActionContext code actions}.
8770
8877
  */
8771
- code?: string | number;
8878
+ code?: string | number | {
8879
+ /**
8880
+ * A code or identifier for this diagnostic.
8881
+ * Should be used for later processing, e.g. when providing {@link CodeActionContext code actions}.
8882
+ */
8883
+ value: string | number;
8884
+
8885
+ /**
8886
+ * A target URI to open with more information about the diagnostic error.
8887
+ */
8888
+ target: Uri;
8889
+ };
8772
8890
 
8773
8891
  /**
8774
8892
  * An array of related diagnostic information, e.g. when symbol-names within
@@ -9179,6 +9297,17 @@ export module '@theia/plugin' {
9179
9297
  */
9180
9298
  static readonly RefactorInline: CodeActionKind;
9181
9299
 
9300
+ /**
9301
+ * Base kind for refactoring inline actions: `refactor.move`
9302
+ *
9303
+ * Example move actions:
9304
+ *
9305
+ * - Move a function to a new file
9306
+ * - Move a property between classes
9307
+ * - Move method to base class
9308
+ */
9309
+ static readonly RefactorMove: CodeActionKind;
9310
+
9182
9311
  /**
9183
9312
  * Base kind for refactoring rewrite actions: `refactor.rewrite`
9184
9313
  *
@@ -9372,7 +9501,15 @@ export module '@theia/plugin' {
9372
9501
  * @param uri A resource identifier.
9373
9502
  * @param edits An array of text edits.
9374
9503
  */
9375
- set(uri: Uri, edits: TextEdit[]): void;
9504
+ set(uri: Uri, edits: ReadonlyArray<TextEdit | SnippetTextEdit>): void;
9505
+
9506
+ /**
9507
+ * Set (and replace) text edits or snippet edits with metadata for a resource.
9508
+ *
9509
+ * @param uri A resource identifier.
9510
+ * @param edits An array of edits.
9511
+ */
9512
+ set(uri: Uri, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>): void;
9376
9513
 
9377
9514
  /**
9378
9515
  * Get the text edits for a resource.
@@ -10694,6 +10831,11 @@ export module '@theia/plugin' {
10694
10831
  * Controls whether the input box is visible (default is true).
10695
10832
  */
10696
10833
  visible: boolean;
10834
+
10835
+ /**
10836
+ * Controls whether the input box is enabled (default is `true`).
10837
+ */
10838
+ enabled: boolean;
10697
10839
  }
10698
10840
 
10699
10841
  interface QuickDiffProvider {
@@ -12415,6 +12557,11 @@ export module '@theia/plugin' {
12415
12557
  * Label will be rendered next to authorName if exists.
12416
12558
  */
12417
12559
  label?: string;
12560
+
12561
+ /**
12562
+ * Optional timestamp.
12563
+ */
12564
+ timestamp?: Date;
12418
12565
  }
12419
12566
 
12420
12567
  /**
@@ -13114,6 +13261,335 @@ export module '@theia/plugin' {
13114
13261
  export function registerAuthenticationProvider(id: string, label: string, provider: AuthenticationProvider, options?: AuthenticationProviderOptions): Disposable;
13115
13262
  }
13116
13263
 
13264
+ /**
13265
+ * The tab represents a single text based resource.
13266
+ */
13267
+ export class TabInputText {
13268
+ /**
13269
+ * The uri represented by the tab.
13270
+ * @stubbed
13271
+ */
13272
+ readonly uri: Uri;
13273
+ /**
13274
+ * Constructs a text tab input with the given URI.
13275
+ * @param uri The URI of the tab.
13276
+ * @stubbed
13277
+ */
13278
+ constructor(uri: Uri);
13279
+ }
13280
+
13281
+ /**
13282
+ * The tab represents two text based resources
13283
+ * being rendered as a diff.
13284
+ */
13285
+ export class TabInputTextDiff {
13286
+ /**
13287
+ * The uri of the original text resource.
13288
+ * @stubbed
13289
+ */
13290
+ readonly original: Uri;
13291
+ /**
13292
+ * The uri of the modified text resource.
13293
+ * @stubbed
13294
+ */
13295
+ readonly modified: Uri;
13296
+ /**
13297
+ * Constructs a new text diff tab input with the given URIs.
13298
+ * @param original The uri of the original text resource.
13299
+ * @param modified The uri of the modified text resource.
13300
+ * @stubbed
13301
+ */
13302
+ constructor(original: Uri, modified: Uri);
13303
+ }
13304
+
13305
+ /**
13306
+ * The tab represents a custom editor.
13307
+ */
13308
+ export class TabInputCustom {
13309
+ /**
13310
+ * The uri that the tab is representing.
13311
+ * @stubbed
13312
+ */
13313
+ readonly uri: Uri;
13314
+ /**
13315
+ * The type of custom editor.
13316
+ * @stubbed
13317
+ */
13318
+ readonly viewType: string;
13319
+ /**
13320
+ * Constructs a custom editor tab input.
13321
+ * @param uri The uri of the tab.
13322
+ * @param viewType The viewtype of the custom editor.
13323
+ * @stubbed
13324
+ */
13325
+ constructor(uri: Uri, viewType: string);
13326
+ }
13327
+
13328
+ /**
13329
+ * The tab represents a webview.
13330
+ */
13331
+ export class TabInputWebview {
13332
+ /**
13333
+ * The type of webview. Maps to WebviewPanel's viewType
13334
+ * @stubbed
13335
+ */
13336
+ readonly viewType: string;
13337
+ /**
13338
+ * Constructs a webview tab input with the given view type.
13339
+ * @param viewType The type of webview. Maps to WebviewPanel's viewType
13340
+ * @stubbed
13341
+ */
13342
+ constructor(viewType: string);
13343
+ }
13344
+
13345
+ /**
13346
+ * The tab represents a notebook.
13347
+ */
13348
+ export class TabInputNotebook {
13349
+ /**
13350
+ * The uri that the tab is representing.
13351
+ * @stubbed
13352
+ */
13353
+ readonly uri: Uri;
13354
+ /**
13355
+ * The type of notebook. Maps to NotebookDocuments's notebookType
13356
+ * @stubbed
13357
+ */
13358
+ readonly notebookType: string;
13359
+ /**
13360
+ * Constructs a new tab input for a notebook.
13361
+ * @param uri The uri of the notebook.
13362
+ * @param notebookType The type of notebook. Maps to NotebookDocuments's notebookType
13363
+ * @stubbed
13364
+ */
13365
+ constructor(uri: Uri, notebookType: string);
13366
+ }
13367
+
13368
+ /**
13369
+ * The tabs represents two notebooks in a diff configuration.
13370
+ */
13371
+ export class TabInputNotebookDiff {
13372
+ /**
13373
+ * The uri of the original notebook.
13374
+ * @stubbed
13375
+ */
13376
+ readonly original: Uri;
13377
+ /**
13378
+ * The uri of the modified notebook.
13379
+ * @stubbed
13380
+ */
13381
+ readonly modified: Uri;
13382
+ /**
13383
+ * The type of notebook. Maps to NotebookDocuments's notebookType
13384
+ * @stubbed
13385
+ */
13386
+ readonly notebookType: string;
13387
+ /**
13388
+ * Constructs a notebook diff tab input.
13389
+ * @param original The uri of the original unmodified notebook.
13390
+ * @param modified The uri of the modified notebook.
13391
+ * @param notebookType The type of notebook. Maps to NotebookDocuments's notebookType
13392
+ * @stubbed
13393
+ */
13394
+ constructor(original: Uri, modified: Uri, notebookType: string);
13395
+ }
13396
+
13397
+ /**
13398
+ * The tab represents a terminal in the editor area.
13399
+ */
13400
+ export class TabInputTerminal {
13401
+ /**
13402
+ * Constructs a terminal tab input.
13403
+ * @stubbed
13404
+ */
13405
+ constructor();
13406
+ }
13407
+
13408
+ /**
13409
+ * Represents a tab within a {@link TabGroup group of tabs}.
13410
+ * Tabs are merely the graphical representation within the editor area.
13411
+ * A backing editor is not a guarantee.
13412
+ */
13413
+ export interface Tab {
13414
+
13415
+ /**
13416
+ * The text displayed on the tab.
13417
+ * @stubbed
13418
+ */
13419
+ readonly label: string;
13420
+
13421
+ /**
13422
+ * The group which the tab belongs to.
13423
+ * @stubbed
13424
+ */
13425
+ readonly group: TabGroup;
13426
+
13427
+ /**
13428
+ * Defines the structure of the tab i.e. text, notebook, custom, etc.
13429
+ * Resource and other useful properties are defined on the tab kind.
13430
+ * @stubbed
13431
+ */
13432
+ readonly input: TabInputText | TabInputTextDiff | TabInputCustom | TabInputWebview | TabInputNotebook | TabInputNotebookDiff | TabInputTerminal | unknown;
13433
+
13434
+ /**
13435
+ * Whether or not the tab is currently active.
13436
+ * This is dictated by being the selected tab in the group.
13437
+ * @stubbed
13438
+ */
13439
+ readonly isActive: boolean;
13440
+
13441
+ /**
13442
+ * Whether or not the dirty indicator is present on the tab.
13443
+ * @stubbed
13444
+ */
13445
+ readonly isDirty: boolean;
13446
+
13447
+ /**
13448
+ * Whether or not the tab is pinned (pin icon is present).
13449
+ * @stubbed
13450
+ */
13451
+ readonly isPinned: boolean;
13452
+
13453
+ /**
13454
+ * Whether or not the tab is in preview mode.
13455
+ * @stubbed
13456
+ */
13457
+ readonly isPreview: boolean;
13458
+ }
13459
+
13460
+ /**
13461
+ * An event describing change to tabs.
13462
+ */
13463
+ export interface TabChangeEvent {
13464
+ /**
13465
+ * The tabs that have been opened.
13466
+ * @stubbed
13467
+ */
13468
+ readonly opened: readonly Tab[];
13469
+ /**
13470
+ * The tabs that have been closed.
13471
+ * @stubbed
13472
+ */
13473
+ readonly closed: readonly Tab[];
13474
+ /**
13475
+ * Tabs that have changed, e.g have changed
13476
+ * their {@link Tab.isActive active} state.
13477
+ * @stubbed
13478
+ */
13479
+ readonly changed: readonly Tab[];
13480
+ }
13481
+
13482
+ /**
13483
+ * An event describing changes to tab groups.
13484
+ */
13485
+ export interface TabGroupChangeEvent {
13486
+ /**
13487
+ * Tab groups that have been opened.
13488
+ * @stubbed
13489
+ */
13490
+ readonly opened: readonly TabGroup[];
13491
+ /**
13492
+ * Tab groups that have been closed.
13493
+ * @stubbed
13494
+ */
13495
+ readonly closed: readonly TabGroup[];
13496
+ /**
13497
+ * Tab groups that have changed, e.g have changed
13498
+ * their {@link TabGroup.isActive active} state.
13499
+ * @stubbed
13500
+ */
13501
+ readonly changed: readonly TabGroup[];
13502
+ }
13503
+
13504
+ /**
13505
+ * Represents a group of tabs. A tab group itself consists of multiple tabs.
13506
+ */
13507
+ export interface TabGroup {
13508
+ /**
13509
+ * Whether or not the group is currently active.
13510
+ *
13511
+ * *Note* that only one tab group is active at a time, but that multiple tab
13512
+ * groups can have an {@link TabGroup.aciveTab active tab}.
13513
+ *
13514
+ * @see {@link Tab.isActive}
13515
+ * @stubbed
13516
+ */
13517
+ readonly isActive: boolean;
13518
+
13519
+ /**
13520
+ * The view column of the group.
13521
+ * @stubbed
13522
+ */
13523
+ readonly viewColumn: ViewColumn;
13524
+
13525
+ /**
13526
+ * The active {@link Tab tab} in the group. This is the tab whose contents are currently
13527
+ * being rendered.
13528
+ *
13529
+ * *Note* that there can be one active tab per group but there can only be one {@link TabGroups.activeTabGroup active group}.
13530
+ * @stubbed
13531
+ */
13532
+ readonly activeTab: Tab | undefined;
13533
+
13534
+ /**
13535
+ * The list of tabs contained within the group.
13536
+ * This can be empty if the group has no tabs open.
13537
+ * @stubbed
13538
+ */
13539
+ readonly tabs: readonly Tab[];
13540
+ }
13541
+
13542
+ /**
13543
+ * Represents the main editor area which consists of multple groups which contain tabs.
13544
+ */
13545
+ export interface TabGroups {
13546
+ /**
13547
+ * All the groups within the group container.
13548
+ * @stubbed
13549
+ */
13550
+ readonly all: readonly TabGroup[];
13551
+
13552
+ /**
13553
+ * The currently active group.
13554
+ * @stubbed
13555
+ */
13556
+ readonly activeTabGroup: TabGroup;
13557
+
13558
+ /**
13559
+ * An {@link Event event} which fires when {@link TabGroup tab groups} have changed.
13560
+ * @stubbed
13561
+ */
13562
+ readonly onDidChangeTabGroups: Event<TabGroupChangeEvent>;
13563
+
13564
+ /**
13565
+ * An {@link Event event} which fires when {@link Tab tabs} have changed.
13566
+ * @stubbed
13567
+ */
13568
+ readonly onDidChangeTabs: Event<TabChangeEvent>;
13569
+
13570
+ /**
13571
+ * Closes the tab. This makes the tab object invalid and the tab
13572
+ * should no longer be used for further actions.
13573
+ * Note: In the case of a dirty tab, a confirmation dialog will be shown which may be cancelled. If cancelled the tab is still valid
13574
+ *
13575
+ * @param tab The tab to close.
13576
+ * @param preserveFocus When `true` focus will remain in its current position. If `false` it will jump to the next tab.
13577
+ * @returns A promise that resolves to `true` when all tabs have been closed.
13578
+ * @stubbed
13579
+ */
13580
+ close(tab: Tab | readonly Tab[], preserveFocus?: boolean): Thenable<boolean>;
13581
+
13582
+ /**
13583
+ * Closes the tab group. This makes the tab group object invalid and the tab group
13584
+ * should no longer be used for further actions.
13585
+ * @param tabGroup The tab group to close.
13586
+ * @param preserveFocus When `true` focus will remain in its current position.
13587
+ * @returns A promise that resolves to `true` when all tab groups have been closed.
13588
+ * @stubbed
13589
+ */
13590
+ close(tabGroup: TabGroup | readonly TabGroup[], preserveFocus?: boolean): Thenable<boolean>;
13591
+ }
13592
+
13117
13593
  /**
13118
13594
  * Represents a notebook editor that is attached to a {@link NotebookDocument notebook}.
13119
13595
  */
@@ -13846,6 +14322,54 @@ export module '@theia/plugin' {
13846
14322
  readonly selections?: readonly NotebookRange[];
13847
14323
  }
13848
14324
 
14325
+ /**
14326
+ * A snippet edit represents an interactive edit that is performed by
14327
+ * the editor.
14328
+ *
14329
+ * *Note* that a snippet edit can always be performed as a normal {@link TextEdit text edit}.
14330
+ * This will happen when no matching editor is open or when a {@link WorkspaceEdit workspace edit}
14331
+ * contains snippet edits for multiple files. In that case only those that match the active editor
14332
+ * will be performed as snippet edits and the others as normal text edits.
14333
+ */
14334
+ export class SnippetTextEdit {
14335
+
14336
+ /**
14337
+ * Utility to create a replace snippet edit.
14338
+ *
14339
+ * @param range A range.
14340
+ * @param snippet A snippet string.
14341
+ * @return A new snippet edit object.
14342
+ */
14343
+ static replace(range: Range, snippet: SnippetString): SnippetTextEdit;
14344
+
14345
+ /**
14346
+ * Utility to create an insert snippet edit.
14347
+ *
14348
+ * @param position A position, will become an empty range.
14349
+ * @param snippet A snippet string.
14350
+ * @return A new snippet edit object.
14351
+ */
14352
+ static insert(position: Position, snippet: SnippetString): SnippetTextEdit;
14353
+
14354
+ /**
14355
+ * The range this edit applies to.
14356
+ */
14357
+ range: Range;
14358
+
14359
+ /**
14360
+ * The {@link SnippetString snippet} this edit will perform.
14361
+ */
14362
+ snippet: SnippetString;
14363
+
14364
+ /**
14365
+ * Create a new snippet edit.
14366
+ *
14367
+ * @param range A range.
14368
+ * @param snippet A snippet string.
14369
+ */
14370
+ constructor(range: Range, snippet: SnippetString);
14371
+ }
14372
+
13849
14373
  /**
13850
14374
  * A notebook edit represents edits that should be applied to the contents of a notebook.
13851
14375
  */