@theia/plugin-ext 1.29.0-next.2 → 1.29.0-next.20
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.
- package/lib/common/plugin-api-rpc-model.d.ts +7 -0
- package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc-model.js.map +1 -1
- package/lib/common/plugin-api-rpc.d.ts +15 -9
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/common/rpc-protocol.d.ts +1 -1
- package/lib/common/rpc-protocol.d.ts.map +1 -1
- package/lib/common/rpc-protocol.js +3 -3
- package/lib/common/rpc-protocol.js.map +1 -1
- package/lib/main/browser/comments/comment-thread-widget.d.ts +2 -0
- package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
- package/lib/main/browser/comments/comment-thread-widget.js +4 -3
- package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
- package/lib/main/browser/languages-main.d.ts +6 -1
- package/lib/main/browser/languages-main.d.ts.map +1 -1
- package/lib/main/browser/languages-main.js +15 -1
- package/lib/main/browser/languages-main.js.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.d.ts +1 -0
- package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.js +1 -0
- package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
- package/lib/main/browser/preference-registry-main.d.ts +4 -3
- package/lib/main/browser/preference-registry-main.d.ts.map +1 -1
- package/lib/main/browser/preference-registry-main.js +26 -14
- package/lib/main/browser/preference-registry-main.js.map +1 -1
- package/lib/main/browser/theme-icon-override.d.ts +2 -0
- package/lib/main/browser/theme-icon-override.d.ts.map +1 -0
- package/lib/main/browser/theme-icon-override.js +217 -0
- package/lib/main/browser/theme-icon-override.js.map +1 -0
- package/lib/main/browser/view/tree-view-decorator-service.d.ts +1 -1
- package/lib/main/browser/view/tree-view-decorator-service.d.ts.map +1 -1
- package/lib/main/browser/view/tree-view-decorator-service.js +1 -1
- package/lib/main/browser/view/tree-view-decorator-service.js.map +1 -1
- package/lib/plugin/languages/code-action.d.ts.map +1 -1
- package/lib/plugin/languages/code-action.js +8 -9
- package/lib/plugin/languages/code-action.js.map +1 -1
- package/lib/plugin/languages/document-highlight.d.ts.map +1 -1
- package/lib/plugin/languages/document-highlight.js +0 -1
- package/lib/plugin/languages/document-highlight.js.map +1 -1
- package/lib/plugin/languages/evaluatable-expression.d.ts +12 -0
- package/lib/plugin/languages/evaluatable-expression.d.ts.map +1 -0
- package/lib/plugin/languages/evaluatable-expression.js +41 -0
- package/lib/plugin/languages/evaluatable-expression.js.map +1 -0
- package/lib/plugin/languages/util.d.ts +2 -2
- package/lib/plugin/languages/util.d.ts.map +1 -1
- package/lib/plugin/languages/util.js +0 -2
- package/lib/plugin/languages/util.js.map +1 -1
- package/lib/plugin/languages.d.ts +3 -1
- package/lib/plugin/languages.d.ts.map +1 -1
- package/lib/plugin/languages.js +11 -0
- package/lib/plugin/languages.js.map +1 -1
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +4 -0
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/plugin-storage.d.ts +1 -0
- package/lib/plugin/plugin-storage.d.ts.map +1 -1
- package/lib/plugin/plugin-storage.js +3 -0
- package/lib/plugin/plugin-storage.js.map +1 -1
- package/lib/plugin/preference-registry.d.ts +15 -2
- package/lib/plugin/preference-registry.d.ts.map +1 -1
- package/lib/plugin/preference-registry.js +105 -62
- package/lib/plugin/preference-registry.js.map +1 -1
- package/lib/plugin/preference-registry.spec.js +207 -35
- package/lib/plugin/preference-registry.spec.js.map +1 -1
- package/lib/plugin/type-converters.d.ts +7 -6
- package/lib/plugin/type-converters.d.ts.map +1 -1
- package/lib/plugin/type-converters.js +54 -55
- package/lib/plugin/type-converters.js.map +1 -1
- package/lib/plugin/types-impl.d.ts +8 -3
- package/lib/plugin/types-impl.d.ts.map +1 -1
- package/lib/plugin/types-impl.js +22 -10
- package/lib/plugin/types-impl.js.map +1 -1
- package/package.json +24 -24
- package/src/common/plugin-api-rpc-model.ts +10 -0
- package/src/common/plugin-api-rpc.ts +18 -9
- package/src/common/rpc-protocol.ts +5 -5
- package/src/main/browser/comments/comment-thread-widget.tsx +5 -3
- package/src/main/browser/languages-main.ts +23 -1
- package/src/main/browser/plugin-ext-frontend-module.ts +1 -0
- package/src/main/browser/preference-registry-main.ts +23 -14
- package/src/main/browser/theme-icon-override.ts +221 -0
- package/src/main/browser/view/tree-view-decorator-service.ts +2 -2
- package/src/plugin/languages/code-action.ts +9 -12
- package/src/plugin/languages/document-highlight.ts +1 -2
- package/src/plugin/languages/evaluatable-expression.ts +47 -0
- package/src/plugin/languages/util.ts +2 -4
- package/src/plugin/languages.ts +15 -0
- package/src/plugin/plugin-context.ts +6 -1
- package/src/plugin/plugin-storage.ts +4 -0
- package/src/plugin/preference-registry.spec.ts +247 -39
- package/src/plugin/preference-registry.ts +107 -71
- package/src/plugin/type-converters.ts +58 -59
- package/src/plugin/types-impl.ts +30 -14
- package/lib/plugin/preferences/configuration.d.ts +0 -35
- package/lib/plugin/preferences/configuration.d.ts.map +0 -1
- package/lib/plugin/preferences/configuration.js +0 -137
- package/lib/plugin/preferences/configuration.js.map +0 -1
- package/lib/plugin/preferences/configuration.spec.d.ts +0 -2
- package/lib/plugin/preferences/configuration.spec.d.ts.map +0 -1
- package/lib/plugin/preferences/configuration.spec.js +0 -178
- package/lib/plugin/preferences/configuration.spec.js.map +0 -1
- package/src/plugin/preferences/configuration.spec.ts +0 -292
- package/src/plugin/preferences/configuration.ts +0 -167
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
MarkerData,
|
|
42
42
|
SignatureHelp,
|
|
43
43
|
Hover,
|
|
44
|
+
EvaluatableExpression,
|
|
44
45
|
DocumentHighlight,
|
|
45
46
|
FormattingOptions,
|
|
46
47
|
ChainedCacheId,
|
|
@@ -733,7 +734,7 @@ export interface TreeViewSelection {
|
|
|
733
734
|
treeItemId: string
|
|
734
735
|
}
|
|
735
736
|
export namespace TreeViewSelection {
|
|
736
|
-
export function is(arg:
|
|
737
|
+
export function is(arg: unknown): arg is TreeViewSelection {
|
|
737
738
|
return !!arg && typeof arg === 'object' && 'treeViewId' in arg && 'treeItemId' in arg;
|
|
738
739
|
}
|
|
739
740
|
}
|
|
@@ -779,7 +780,7 @@ export interface ScmCommandArg {
|
|
|
779
780
|
resourceStateHandle?: number
|
|
780
781
|
}
|
|
781
782
|
export namespace ScmCommandArg {
|
|
782
|
-
export function is(arg:
|
|
783
|
+
export function is(arg: unknown): arg is ScmCommandArg {
|
|
783
784
|
return !!arg && typeof arg === 'object' && 'sourceControlHandle' in arg;
|
|
784
785
|
}
|
|
785
786
|
}
|
|
@@ -795,7 +796,7 @@ export interface ScmExt {
|
|
|
795
796
|
}
|
|
796
797
|
|
|
797
798
|
export namespace TimelineCommandArg {
|
|
798
|
-
export function is(arg:
|
|
799
|
+
export function is(arg: unknown): arg is TimelineCommandArg {
|
|
799
800
|
return !!arg && typeof arg === 'object' && 'timelineHandle' in arg;
|
|
800
801
|
}
|
|
801
802
|
}
|
|
@@ -814,7 +815,7 @@ export type DecorationData = [boolean, string, string, ThemeColor];
|
|
|
814
815
|
export interface DecorationReply { [id: number]: DecorationData; }
|
|
815
816
|
|
|
816
817
|
export namespace CommentsCommandArg {
|
|
817
|
-
export function is(arg:
|
|
818
|
+
export function is(arg: unknown): arg is CommentsCommandArg {
|
|
818
819
|
return !!arg && typeof arg === 'object' && 'commentControlHandle' in arg && 'commentThreadHandle' in arg && 'text' in arg && !('commentUniqueId' in arg);
|
|
819
820
|
}
|
|
820
821
|
}
|
|
@@ -825,7 +826,7 @@ export interface CommentsCommandArg {
|
|
|
825
826
|
}
|
|
826
827
|
|
|
827
828
|
export namespace CommentsContextCommandArg {
|
|
828
|
-
export function is(arg:
|
|
829
|
+
export function is(arg: unknown): arg is CommentsContextCommandArg {
|
|
829
830
|
return !!arg && typeof arg === 'object' && 'commentControlHandle' in arg && 'commentThreadHandle' in arg && 'commentUniqueId' in arg && !('text' in arg);
|
|
830
831
|
}
|
|
831
832
|
}
|
|
@@ -836,7 +837,7 @@ export interface CommentsContextCommandArg {
|
|
|
836
837
|
}
|
|
837
838
|
|
|
838
839
|
export namespace CommentsEditCommandArg {
|
|
839
|
-
export function is(arg:
|
|
840
|
+
export function is(arg: unknown): arg is CommentsEditCommandArg {
|
|
840
841
|
return !!arg && typeof arg === 'object' && 'commentControlHandle' in arg && 'commentThreadHandle' in arg && 'commentUniqueId' in arg && 'text' in arg;
|
|
841
842
|
}
|
|
842
843
|
}
|
|
@@ -1263,18 +1264,24 @@ export interface PreferenceRegistryMain {
|
|
|
1263
1264
|
target: boolean | ConfigurationTarget | undefined,
|
|
1264
1265
|
key: string,
|
|
1265
1266
|
value: any,
|
|
1266
|
-
resource?: string
|
|
1267
|
+
resource?: string,
|
|
1268
|
+
withLanguageOverride?: boolean
|
|
1267
1269
|
): PromiseLike<void>;
|
|
1268
1270
|
$removeConfigurationOption(
|
|
1269
1271
|
target: boolean | ConfigurationTarget | undefined,
|
|
1270
1272
|
key: string,
|
|
1271
|
-
resource?: string
|
|
1273
|
+
resource?: string,
|
|
1274
|
+
withLanguageOverride?: boolean,
|
|
1272
1275
|
): PromiseLike<void>;
|
|
1273
1276
|
}
|
|
1274
1277
|
|
|
1275
1278
|
export interface PreferenceChangeExt {
|
|
1276
1279
|
preferenceName: string,
|
|
1277
|
-
newValue: any
|
|
1280
|
+
newValue: any,
|
|
1281
|
+
/**
|
|
1282
|
+
* The URI the folder affected, or undefined if User scope.
|
|
1283
|
+
*/
|
|
1284
|
+
scope?: string;
|
|
1278
1285
|
}
|
|
1279
1286
|
|
|
1280
1287
|
export interface TerminalOptionsExt {
|
|
@@ -1464,6 +1471,7 @@ export interface LanguagesExt {
|
|
|
1464
1471
|
): Promise<SignatureHelp | undefined>;
|
|
1465
1472
|
$releaseSignatureHelp(handle: number, id: number): void;
|
|
1466
1473
|
$provideHover(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<Hover | undefined>;
|
|
1474
|
+
$provideEvaluatableExpression(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<EvaluatableExpression | undefined>;
|
|
1467
1475
|
$provideDocumentHighlights(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<DocumentHighlight[] | undefined>;
|
|
1468
1476
|
$provideDocumentFormattingEdits(handle: number, resource: UriComponents,
|
|
1469
1477
|
options: FormattingOptions, token: CancellationToken): Promise<TextEdit[] | undefined>;
|
|
@@ -1540,6 +1548,7 @@ export interface LanguagesMain {
|
|
|
1540
1548
|
$registerReferenceProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void;
|
|
1541
1549
|
$registerSignatureHelpProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], metadata: theia.SignatureHelpProviderMetadata): void;
|
|
1542
1550
|
$registerHoverProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void;
|
|
1551
|
+
$registerEvaluatableExpressionProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void;
|
|
1543
1552
|
$registerDocumentHighlightProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void;
|
|
1544
1553
|
$registerQuickFixProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], codeActionKinds?: string[], documentation?: CodeActionProviderDocumentation): void;
|
|
1545
1554
|
$clearDiagnostics(id: string): void;
|
|
@@ -70,9 +70,8 @@ export namespace ConnectionClosedError {
|
|
|
70
70
|
export function create(message: string = 'connection is closed'): ConnectionClosedError {
|
|
71
71
|
return Object.assign(new Error(message), { code });
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return !!error && typeof error === 'object' && 'code' in error && error['code'] === code;
|
|
73
|
+
export function is(error: unknown): error is ConnectionClosedError {
|
|
74
|
+
return !!error && typeof error === 'object' && 'code' in error && (error as ConnectionClosedError).code === code;
|
|
76
75
|
}
|
|
77
76
|
}
|
|
78
77
|
|
|
@@ -469,8 +468,9 @@ enum SerializedObjectType {
|
|
|
469
468
|
TEXT_BUFFER
|
|
470
469
|
}
|
|
471
470
|
|
|
472
|
-
function isSerializedObject(obj:
|
|
473
|
-
|
|
471
|
+
function isSerializedObject(obj: unknown): obj is SerializedObject {
|
|
472
|
+
const serializedObject = obj as SerializedObject;
|
|
473
|
+
return !!obj && typeof obj === 'object' && serializedObject.$type !== undefined && serializedObject.data !== undefined;
|
|
474
474
|
}
|
|
475
475
|
|
|
476
476
|
export const enum MessageType {
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
} from '../../../common/plugin-api-rpc-model';
|
|
23
23
|
import { CommentGlyphWidget } from './comment-glyph-widget';
|
|
24
24
|
import { BaseWidget, DISABLED_CLASS } from '@theia/core/lib/browser';
|
|
25
|
-
import * as ReactDOM from '@theia/core/shared/react-dom';
|
|
26
25
|
import * as React from '@theia/core/shared/react';
|
|
27
26
|
import { MouseTargetType } from '@theia/editor/lib/browser';
|
|
28
27
|
import { CommentsService } from './comments-service';
|
|
@@ -36,6 +35,7 @@ import {
|
|
|
36
35
|
import { CommentsContextKeyService } from './comments-context-key-service';
|
|
37
36
|
import { RefObject } from '@theia/core/shared/react';
|
|
38
37
|
import * as monaco from '@theia/monaco-editor-core';
|
|
38
|
+
import { createRoot, Root } from '@theia/core/shared/react-dom/client';
|
|
39
39
|
|
|
40
40
|
/*---------------------------------------------------------------------------------------------
|
|
41
41
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -50,6 +50,7 @@ export const COMMENT_TITLE: MenuPath = ['comment-title-menu'];
|
|
|
50
50
|
export class CommentThreadWidget extends BaseWidget {
|
|
51
51
|
|
|
52
52
|
protected readonly zoneWidget: MonacoEditorZoneWidget;
|
|
53
|
+
protected readonly containerNodeRoot: Root;
|
|
53
54
|
protected readonly commentGlyphWidget: CommentGlyphWidget;
|
|
54
55
|
protected readonly contextMenu: CompositeMenuNode;
|
|
55
56
|
protected readonly commentFormRef: RefObject<CommentForm> = React.createRef<CommentForm>();
|
|
@@ -67,6 +68,7 @@ export class CommentThreadWidget extends BaseWidget {
|
|
|
67
68
|
) {
|
|
68
69
|
super();
|
|
69
70
|
this.toDispose.push(this.zoneWidget = new MonacoEditorZoneWidget(editor));
|
|
71
|
+
this.containerNodeRoot = createRoot(this.zoneWidget.containerNode);
|
|
70
72
|
this.toDispose.push(this.commentGlyphWidget = new CommentGlyphWidget(editor));
|
|
71
73
|
this.toDispose.push(this._commentThread.onDidChangeCollapsibleState(state => {
|
|
72
74
|
if (state === CommentThreadCollapsibleState.Expanded && !this.isExpanded) {
|
|
@@ -255,7 +257,7 @@ export class CommentThreadWidget extends BaseWidget {
|
|
|
255
257
|
|
|
256
258
|
protected render(): void {
|
|
257
259
|
const headHeight = Math.ceil(this.zoneWidget.editor.getOption(monaco.editor.EditorOption.lineHeight) * 1.2);
|
|
258
|
-
|
|
260
|
+
this.containerNodeRoot.render(<div className={'review-widget'}>
|
|
259
261
|
<div className={'head'} style={{ height: headHeight, lineHeight: `${headHeight}px` }}>
|
|
260
262
|
<div className={'review-title'}>
|
|
261
263
|
<span className={'filename'}>{this.getThreadLabel()}</span>
|
|
@@ -295,7 +297,7 @@ export class CommentThreadWidget extends BaseWidget {
|
|
|
295
297
|
ref={this.commentFormRef}
|
|
296
298
|
/>
|
|
297
299
|
</div>
|
|
298
|
-
</div
|
|
300
|
+
</div>);
|
|
299
301
|
}
|
|
300
302
|
}
|
|
301
303
|
|
|
@@ -66,6 +66,9 @@ import * as MonacoPath from '@theia/monaco-editor-core/esm/vs/base/common/path';
|
|
|
66
66
|
import { IRelativePattern } from '@theia/monaco-editor-core/esm/vs/base/common/glob';
|
|
67
67
|
import { EditorLanguageStatusService, LanguageStatus as EditorLanguageStatus } from '@theia/editor/lib/browser/language-status/editor-language-status-service';
|
|
68
68
|
import { LanguageSelector, RelativePattern } from '@theia/editor/lib/common/language-selector';
|
|
69
|
+
import { ILanguageFeaturesService } from '@theia/monaco-editor-core/esm/vs/editor/common/services/languageFeatures';
|
|
70
|
+
import { EvaluatableExpression, EvaluatableExpressionProvider } from '@theia/monaco-editor-core/esm/vs/editor/common/languages';
|
|
71
|
+
import { ITextModel } from '@theia/monaco-editor-core/esm/vs/editor/common/model';
|
|
69
72
|
|
|
70
73
|
/**
|
|
71
74
|
* @monaco-uplift The public API declares these functions as (languageId: string, service).
|
|
@@ -338,7 +341,26 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
|
|
|
338
341
|
return this.proxy.$provideHover(handle, model.uri, position, token);
|
|
339
342
|
}
|
|
340
343
|
|
|
341
|
-
$
|
|
344
|
+
$registerEvaluatableExpressionProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
|
|
345
|
+
const languageSelector = this.toLanguageSelector(selector);
|
|
346
|
+
const evaluatableExpressionProvider = this.createEvaluatableExpressionProvider(handle);
|
|
347
|
+
this.register(handle,
|
|
348
|
+
(StandaloneServices.get(ILanguageFeaturesService).evaluatableExpressionProvider.register as RegistrationFunction<EvaluatableExpressionProvider>)
|
|
349
|
+
(languageSelector, evaluatableExpressionProvider));
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
protected createEvaluatableExpressionProvider(handle: number): EvaluatableExpressionProvider {
|
|
353
|
+
return {
|
|
354
|
+
provideEvaluatableExpression: (model, position, token) => this.provideEvaluatableExpression(handle, model, position, token)
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
protected provideEvaluatableExpression(handle: number, model: ITextModel, position: monaco.Position,
|
|
359
|
+
token: monaco.CancellationToken): monaco.languages.ProviderResult<EvaluatableExpression | undefined> {
|
|
360
|
+
return this.proxy.$provideEvaluatableExpression(handle, model.uri, position, token);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
$registerDocumentHighlightProvider(handle: number, _pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
|
|
342
364
|
const languageSelector = this.toLanguageSelector(selector);
|
|
343
365
|
const documentHighlightProvider = this.createDocumentHighlightProvider(handle);
|
|
344
366
|
this.register(handle, (monaco.languages.registerDocumentHighlightProvider as RegistrationFunction<monaco.languages.DocumentHighlightProvider>)
|
|
@@ -79,6 +79,7 @@ import { AuthenticationService } from '@theia/core/lib/browser/authentication-se
|
|
|
79
79
|
import { bindTreeViewDecoratorUtilities, TreeViewDecoratorService } from './view/tree-view-decorator-service';
|
|
80
80
|
import { CodeEditorWidgetUtil } from './menus/vscode-theia-menu-mappings';
|
|
81
81
|
import { PluginMenuCommandAdapter } from './menus/plugin-menu-command-adapter';
|
|
82
|
+
import './theme-icon-override';
|
|
82
83
|
|
|
83
84
|
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
84
85
|
|
|
@@ -70,11 +70,10 @@ export class PreferenceRegistryMainImpl implements PreferenceRegistryMain, Dispo
|
|
|
70
70
|
|
|
71
71
|
const roots = workspaceService.tryGetRoots();
|
|
72
72
|
const data = getPreferences(preferenceProviderProvider, roots);
|
|
73
|
-
const eventData
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
73
|
+
const eventData = Object.values(changes).map<PreferenceChangeExt>(({ scope, newValue, domain, preferenceName }) => {
|
|
74
|
+
const extScope = scope === PreferenceScope.User ? undefined : domain?.[0];
|
|
75
|
+
return { preferenceName, newValue, scope: extScope };
|
|
76
|
+
});
|
|
78
77
|
this.proxy.$acceptConfigurationChanged(data, eventData);
|
|
79
78
|
}));
|
|
80
79
|
}
|
|
@@ -84,17 +83,19 @@ export class PreferenceRegistryMainImpl implements PreferenceRegistryMain, Dispo
|
|
|
84
83
|
}
|
|
85
84
|
|
|
86
85
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
87
|
-
async $updateConfigurationOption(target: boolean | ConfigurationTarget | undefined, key: string, value: any, resource?: string): Promise<void> {
|
|
88
|
-
const scope = this.parseConfigurationTarget(target);
|
|
89
|
-
|
|
86
|
+
async $updateConfigurationOption(target: boolean | ConfigurationTarget | undefined, key: string, value: any, resource?: string, withLanguageOverride?: boolean): Promise<void> {
|
|
87
|
+
const scope = this.parseConfigurationTarget(target, resource);
|
|
88
|
+
const effectiveKey = this.getEffectiveKey(key, scope, withLanguageOverride, resource);
|
|
89
|
+
await this.preferenceService.set(effectiveKey, value, scope, resource);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
async $removeConfigurationOption(target: boolean | ConfigurationTarget | undefined, key: string, resource?: string): Promise<void> {
|
|
93
|
-
const scope = this.parseConfigurationTarget(target);
|
|
94
|
-
|
|
92
|
+
async $removeConfigurationOption(target: boolean | ConfigurationTarget | undefined, key: string, resource?: string, withLanguageOverride?: boolean): Promise<void> {
|
|
93
|
+
const scope = this.parseConfigurationTarget(target, resource);
|
|
94
|
+
const effectiveKey = this.getEffectiveKey(key, scope, withLanguageOverride, resource);
|
|
95
|
+
await this.preferenceService.set(effectiveKey, undefined, scope, resource);
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
private parseConfigurationTarget(target?: boolean | ConfigurationTarget): PreferenceScope
|
|
98
|
+
private parseConfigurationTarget(target?: boolean | ConfigurationTarget, resource?: string): PreferenceScope {
|
|
98
99
|
if (typeof target === 'boolean') {
|
|
99
100
|
return target ? PreferenceScope.User : PreferenceScope.Workspace;
|
|
100
101
|
}
|
|
@@ -106,9 +107,17 @@ export class PreferenceRegistryMainImpl implements PreferenceRegistryMain, Dispo
|
|
|
106
107
|
case ConfigurationTarget.WorkspaceFolder:
|
|
107
108
|
return PreferenceScope.Folder;
|
|
108
109
|
default:
|
|
109
|
-
|
|
110
|
-
return undefined;
|
|
110
|
+
return resource ? PreferenceScope.Folder : PreferenceScope.Workspace;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
// If the caller does not set `withLanguageOverride = true`, we have to check whether the setting exists with that override already.
|
|
115
|
+
protected getEffectiveKey(key: string, scope: PreferenceScope, withLanguageOverride?: boolean, resource?: string): string {
|
|
116
|
+
if (withLanguageOverride) { return key; }
|
|
117
|
+
const overridden = this.preferenceService.overriddenPreferenceName(key);
|
|
118
|
+
if (!overridden) { return key; }
|
|
119
|
+
const value = this.preferenceService.inspectInScope(key, scope, resource, withLanguageOverride);
|
|
120
|
+
return value === undefined ? overridden.preferenceName : key;
|
|
121
|
+
}
|
|
122
|
+
|
|
114
123
|
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2022 TypeFox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
|
|
18
|
+
|
|
19
|
+
// @monaco-uplift
|
|
20
|
+
// Keep this up-to-date with the table at https://code.visualstudio.com/api/references/icons-in-labels#icon-listing
|
|
21
|
+
const codeIconMap: Record<string, string> = {
|
|
22
|
+
'accounts-view-bar-icon': 'account',
|
|
23
|
+
'breakpoints-activate': 'activate-breakpoints',
|
|
24
|
+
'breakpoints-remove-all': 'close-all',
|
|
25
|
+
'breakpoints-view-icon': 'debug-alt',
|
|
26
|
+
'callhierarchy-incoming': 'call-incoming',
|
|
27
|
+
'callhierarchy-outgoing': 'call-outgoing',
|
|
28
|
+
'callstack-view-icon': 'debug-alt',
|
|
29
|
+
'callstack-view-session': 'bug',
|
|
30
|
+
'comments-view-icon': 'comment-discussion',
|
|
31
|
+
'debug-collapse-all': 'collapse-all',
|
|
32
|
+
'debug-configure': 'gear',
|
|
33
|
+
'debug-console-clear-all': 'clear-all',
|
|
34
|
+
'debug-console-evaluation-input': 'arrow-small-right',
|
|
35
|
+
'debug-console-evaluation-prompt': 'chevron-right',
|
|
36
|
+
'debug-console-view-icon': 'debug-console',
|
|
37
|
+
'debug-gripper': 'gripper',
|
|
38
|
+
'default-view-icon': 'window',
|
|
39
|
+
'diff-editor-next-change': 'arrow-down',
|
|
40
|
+
'diff-editor-previous-change': 'arrow-up',
|
|
41
|
+
'diff-editor-toggle-whitespace': 'whitespace',
|
|
42
|
+
'diff-insert': 'add',
|
|
43
|
+
'diff-remove': 'remove',
|
|
44
|
+
'diff-review-close': 'close',
|
|
45
|
+
'diff-review-insert': 'add',
|
|
46
|
+
'diff-review-remove': 'remove',
|
|
47
|
+
'explorer-view-icon': 'files',
|
|
48
|
+
'extensions-clear-search-results': 'clear-all',
|
|
49
|
+
'extensions-configure-recommended': 'pencil',
|
|
50
|
+
'extensions-filter': 'filter',
|
|
51
|
+
'extensions-info-message': 'info',
|
|
52
|
+
'extensions-install-count': 'cloud-download',
|
|
53
|
+
'extensions-install-local-in-remote': 'cloud-download',
|
|
54
|
+
'extensions-install-workspace-recommended': 'cloud-download',
|
|
55
|
+
'extensions-manage': 'gear',
|
|
56
|
+
'extensions-rating': 'star',
|
|
57
|
+
'extensions-refresh': 'refresh',
|
|
58
|
+
'extensions-remote': 'remote',
|
|
59
|
+
'extensions-star-empty': 'star-empty',
|
|
60
|
+
'extensions-star-full': 'star-full',
|
|
61
|
+
'extensions-star-half': 'star-half',
|
|
62
|
+
'extensions-sync-enabled': 'sync',
|
|
63
|
+
'extensions-sync-ignored': 'sync-ignored',
|
|
64
|
+
'extensions-view-icon': 'extensions',
|
|
65
|
+
'extensions-warning-message': 'warning',
|
|
66
|
+
'find-collapsed': 'chevron-right',
|
|
67
|
+
'find-expanded': 'chevron-down',
|
|
68
|
+
'find-next-match': 'arrow-down',
|
|
69
|
+
'find-previous-match': 'arrow-up',
|
|
70
|
+
'find-replace': 'replace',
|
|
71
|
+
'find-replace-all': 'replace-all',
|
|
72
|
+
'find-selection': 'selection',
|
|
73
|
+
'folding-collapsed': 'chevron-right',
|
|
74
|
+
'folding-expanded': 'chevron-down',
|
|
75
|
+
'getting-started-beginner': 'lightbulb',
|
|
76
|
+
'getting-started-codespaces': 'github',
|
|
77
|
+
'getting-started-item-checked': 'pass-filled',
|
|
78
|
+
'getting-started-item-unchecked': 'circle-large-outline',
|
|
79
|
+
'getting-started-setup': 'heart',
|
|
80
|
+
'goto-next-location': 'arrow-down',
|
|
81
|
+
'goto-previous-location': 'arrow-up',
|
|
82
|
+
'keybindings-add': 'add',
|
|
83
|
+
'keybindings-edit': 'edit',
|
|
84
|
+
'keybindings-record-keys': 'record-keys',
|
|
85
|
+
'keybindings-sort': 'sort-precedence',
|
|
86
|
+
'loaded-scripts-view-icon': 'debug-alt',
|
|
87
|
+
'marker-navigation-next': 'chevron-down',
|
|
88
|
+
'marker-navigation-previous': 'chevron-up',
|
|
89
|
+
'markers-view-filter': 'filter',
|
|
90
|
+
'markers-view-icon': 'warning',
|
|
91
|
+
'markers-view-multi-line-collapsed': 'chevron-down',
|
|
92
|
+
'markers-view-multi-line-expanded': 'chevron-up',
|
|
93
|
+
'notebook-clear': 'clear-all',
|
|
94
|
+
'notebook-collapsed': 'chevron-right',
|
|
95
|
+
'notebook-delete-cell': 'trash',
|
|
96
|
+
'notebook-edit': 'pencil',
|
|
97
|
+
'notebook-execute': 'play',
|
|
98
|
+
'notebook-execute-all': 'run-all',
|
|
99
|
+
'notebook-expanded': 'chevron-down',
|
|
100
|
+
'notebook-kernel-configure': 'settings-gear',
|
|
101
|
+
'notebook-kernel-select': 'server-environment',
|
|
102
|
+
'notebook-mimetype': 'code',
|
|
103
|
+
'notebook-move-down': 'arrow-down',
|
|
104
|
+
'notebook-move-up': 'arrow-up',
|
|
105
|
+
'notebook-open-as-text': 'file-code',
|
|
106
|
+
'notebook-render-output': 'preview',
|
|
107
|
+
'notebook-revert': 'discard',
|
|
108
|
+
'notebook-split-cell': 'split-vertical',
|
|
109
|
+
'notebook-state-error': 'error',
|
|
110
|
+
'notebook-state-success': 'check',
|
|
111
|
+
'notebook-stop': 'primitive-square',
|
|
112
|
+
'notebook-stop-edit': 'check',
|
|
113
|
+
'notebook-unfold': 'unfold',
|
|
114
|
+
'notifications-clear': 'close',
|
|
115
|
+
'notifications-clear-all': 'clear-all',
|
|
116
|
+
'notifications-collapse': 'chevron-down',
|
|
117
|
+
'notifications-configure': 'gear',
|
|
118
|
+
'notifications-expand': 'chevron-up',
|
|
119
|
+
'notifications-hide': 'chevron-down',
|
|
120
|
+
'open-editors-view-icon': 'book',
|
|
121
|
+
'outline-view-icon': 'symbol-class',
|
|
122
|
+
'output-view-icon': 'output',
|
|
123
|
+
'panel-close': 'close',
|
|
124
|
+
'panel-maximize': 'chevron-up',
|
|
125
|
+
'panel-restore': 'chevron-down',
|
|
126
|
+
'parameter-hints-next': 'chevron-down',
|
|
127
|
+
'parameter-hints-previous': 'chevron-up',
|
|
128
|
+
'ports-forward-icon': 'plus',
|
|
129
|
+
'ports-open-browser-icon': 'globe',
|
|
130
|
+
'ports-stop-forward-icon': 'x',
|
|
131
|
+
'ports-view-icon': 'plug',
|
|
132
|
+
'preferences-clear-input': 'clear-all',
|
|
133
|
+
'preferences-open-settings': 'go-to-file',
|
|
134
|
+
'private-ports-view-icon': 'lock',
|
|
135
|
+
'public-ports-view-icon': 'eye',
|
|
136
|
+
'refactor-preview-view-icon': 'lightbulb',
|
|
137
|
+
'remote-explorer-documentation': 'book',
|
|
138
|
+
'remote-explorer-feedback': 'twitter',
|
|
139
|
+
'remote-explorer-get-started': 'star',
|
|
140
|
+
'remote-explorer-report-issues': 'comment',
|
|
141
|
+
'remote-explorer-review-issues': 'issues',
|
|
142
|
+
'remote-explorer-view-icon': 'remote-explorer',
|
|
143
|
+
'review-comment-collapse': 'chevron-up',
|
|
144
|
+
'run-view-icon': 'debug-alt',
|
|
145
|
+
'search-clear-results': 'clear-all',
|
|
146
|
+
'search-collapse-results': 'collapse-all',
|
|
147
|
+
'search-details': 'ellipsis',
|
|
148
|
+
'search-expand-results': 'expand-all',
|
|
149
|
+
'search-hide-replace': 'chevron-right',
|
|
150
|
+
'search-new-editor': 'new-file',
|
|
151
|
+
'search-refresh': 'refresh',
|
|
152
|
+
'search-remove': 'close',
|
|
153
|
+
'search-replace': 'replace',
|
|
154
|
+
'search-replace-all': 'replace-all',
|
|
155
|
+
'search-show-context': 'list-selection',
|
|
156
|
+
'search-show-replace': 'chevron-down',
|
|
157
|
+
'search-stop': 'search-stop',
|
|
158
|
+
'search-view-icon': 'search',
|
|
159
|
+
'settings-add': 'add',
|
|
160
|
+
'settings-discard': 'discard',
|
|
161
|
+
'settings-edit': 'edit',
|
|
162
|
+
'settings-folder-dropdown': 'triangle-down',
|
|
163
|
+
'settings-group-collapsed': 'chevron-right',
|
|
164
|
+
'settings-group-expanded': 'chevron-down',
|
|
165
|
+
'settings-more-action': 'gear',
|
|
166
|
+
'settings-remove': 'close',
|
|
167
|
+
'settings-sync-view-icon': 'sync',
|
|
168
|
+
'settings-view-bar-icon': 'settings-gear',
|
|
169
|
+
'source-control-view-icon': 'source-control',
|
|
170
|
+
'suggest-more-info': 'chevron-right',
|
|
171
|
+
'tasks-list-configure': 'gear',
|
|
172
|
+
'tasks-remove': 'close',
|
|
173
|
+
'terminal-kill': 'trash',
|
|
174
|
+
'terminal-new': 'add',
|
|
175
|
+
'terminal-rename': 'gear',
|
|
176
|
+
'terminal-view-icon': 'terminal',
|
|
177
|
+
'test-view-icon': 'beaker',
|
|
178
|
+
'testing-cancel-icon': 'close',
|
|
179
|
+
'testing-debug-icon': 'debug-alt',
|
|
180
|
+
'testing-error-icon': 'warning',
|
|
181
|
+
'testing-failed-icon': 'close',
|
|
182
|
+
'testing-passed-icon': 'pass',
|
|
183
|
+
'testing-queued-icon': 'watch',
|
|
184
|
+
'testing-run-all-icon': 'run-all',
|
|
185
|
+
'testing-run-icon': 'run',
|
|
186
|
+
'testing-show-as-list-icon': 'list-tree',
|
|
187
|
+
'testing-skipped-icon': 'debug-step-over',
|
|
188
|
+
'testing-unset-icon': 'circle-outline',
|
|
189
|
+
'timeline-open': 'history',
|
|
190
|
+
'timeline-pin': 'pin',
|
|
191
|
+
'timeline-refresh': 'refresh',
|
|
192
|
+
'timeline-unpin': 'pinned',
|
|
193
|
+
'timeline-view-icon': 'history',
|
|
194
|
+
'variables-view-icon': 'debug-alt',
|
|
195
|
+
'view-pane-container-collapsed': 'chevron-right',
|
|
196
|
+
'view-pane-container-expanded': 'chevron-down',
|
|
197
|
+
'watch-expressions-add': 'add',
|
|
198
|
+
'watch-expressions-add-function-breakpoint': 'add',
|
|
199
|
+
'watch-expressions-remove-all': 'close-all',
|
|
200
|
+
'watch-view-icon': 'debug-alt',
|
|
201
|
+
'widget-close': 'close'
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
const originalAsCSSSelector = ThemeIcon.asCSSSelector;
|
|
205
|
+
const originalAsClassName = ThemeIcon.asClassName;
|
|
206
|
+
const originalAsClassNameArray = ThemeIcon.asClassNameArray;
|
|
207
|
+
|
|
208
|
+
function buildMappedIcon(icon: ThemeIcon): ThemeIcon {
|
|
209
|
+
const id = codeIconMap[icon.id] ?? icon.id;
|
|
210
|
+
const newIcon: ThemeIcon = {
|
|
211
|
+
...icon,
|
|
212
|
+
id
|
|
213
|
+
};
|
|
214
|
+
return newIcon;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
Object.assign(ThemeIcon, {
|
|
218
|
+
asCSSSelector: (icon: ThemeIcon) => originalAsCSSSelector(buildMappedIcon(icon)),
|
|
219
|
+
asClassName: (icon: ThemeIcon) => originalAsClassName(buildMappedIcon(icon)),
|
|
220
|
+
asClassNameArray: (icon: ThemeIcon) => originalAsClassNameArray(buildMappedIcon(icon))
|
|
221
|
+
});
|
|
@@ -32,9 +32,9 @@ export class TreeViewDecoratorAdapter extends FileTreeDecoratorAdapter {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
protected isTreeItem(node:
|
|
35
|
+
protected isTreeItem(node: unknown): node is TreeItem & { resourceUri: Uri } {
|
|
36
36
|
const candidate = node as TreeItem;
|
|
37
|
-
return !!candidate && 'resourceUri' in candidate && !!candidate.resourceUri;
|
|
37
|
+
return !!candidate && typeof node === 'object' && 'resourceUri' in candidate && !!candidate.resourceUri;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -145,20 +145,17 @@ export class CodeActionAdapter {
|
|
|
145
145
|
return this.cacheId++;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return typeof (<theia.Command>smth).command === 'string';
|
|
148
|
+
private static _isCommand(arg: unknown): arg is theia.Command {
|
|
149
|
+
return !!arg && typeof arg === 'object' && typeof (arg as theia.Command).command === 'string';
|
|
151
150
|
}
|
|
152
151
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return
|
|
156
|
-
|
|
157
|
-
&&
|
|
158
|
-
&&
|
|
159
|
-
&&
|
|
160
|
-
&& (typeof obj.positionColumn === 'number')
|
|
161
|
-
);
|
|
152
|
+
private static _isSelection(obj: unknown): obj is Selection {
|
|
153
|
+
const selection = obj as Selection;
|
|
154
|
+
return !!obj && typeof obj === 'object'
|
|
155
|
+
&& typeof selection.selectionStartLineNumber === 'number'
|
|
156
|
+
&& typeof selection.selectionStartColumn === 'number'
|
|
157
|
+
&& typeof selection.positionLineNumber === 'number'
|
|
158
|
+
&& typeof selection.positionColumn === 'number';
|
|
162
159
|
}
|
|
163
160
|
|
|
164
161
|
}
|
|
@@ -55,8 +55,7 @@ export class DocumentHighlightAdapter {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
private isDocumentHighlightArray(array: any): array is types.DocumentHighlight[] {
|
|
58
|
+
private isDocumentHighlightArray(array: unknown): array is types.DocumentHighlight[] {
|
|
60
59
|
return Array.isArray(array) && array.length > 0 && array[0] instanceof types.DocumentHighlight;
|
|
61
60
|
}
|
|
62
61
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2022 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { URI } from '@theia/core/shared/vscode-uri';
|
|
18
|
+
import * as theia from '@theia/plugin';
|
|
19
|
+
import { Position } from '../../common/plugin-api-rpc';
|
|
20
|
+
import { EvaluatableExpression } from '../../common/plugin-api-rpc-model';
|
|
21
|
+
import { DocumentsExtImpl } from '../documents';
|
|
22
|
+
import * as Converter from '../type-converters';
|
|
23
|
+
|
|
24
|
+
export class EvaluatableExpressionAdapter {
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
private readonly provider: theia.EvaluatableExpressionProvider,
|
|
28
|
+
private readonly documents: DocumentsExtImpl
|
|
29
|
+
) { }
|
|
30
|
+
|
|
31
|
+
async provideEvaluatableExpression(resource: URI, position: Position, token: theia.CancellationToken): Promise<EvaluatableExpression | undefined> {
|
|
32
|
+
const documentData = this.documents.getDocumentData(resource);
|
|
33
|
+
if (!documentData) {
|
|
34
|
+
return Promise.reject(new Error(`There is no document data for ${resource}`));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const document = documentData.document;
|
|
38
|
+
const pos = Converter.toPosition(position);
|
|
39
|
+
|
|
40
|
+
return Promise.resolve(this.provider.provideEvaluatableExpression(document, pos, token)).then(expression => {
|
|
41
|
+
if (!expression) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return Converter.fromEvaluatableExpression(expression);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -17,12 +17,10 @@
|
|
|
17
17
|
import * as theia from '@theia/plugin';
|
|
18
18
|
import * as types from '../types-impl';
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
export function isLocationArray(array: any): array is types.Location[] {
|
|
20
|
+
export function isLocationArray(array: unknown): array is types.Location[] {
|
|
22
21
|
return Array.isArray(array) && array.length > 0 && array[0] instanceof types.Location;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
export function isDefinitionLinkArray(array: any): array is theia.DefinitionLink[] {
|
|
24
|
+
export function isDefinitionLinkArray(array: unknown): array is theia.DefinitionLink[] {
|
|
27
25
|
return Array.isArray(array) && array.length > 0 && array[0].hasOwnProperty('targetUri') && array[0].hasOwnProperty('targetRange');
|
|
28
26
|
}
|