Skip to content

Commit a6182e7

Browse files
author
guqiankun.gqk
committed
chore: 增加示例
1 parent 78a44d2 commit a6182e7

8 files changed

Lines changed: 347 additions & 245 deletions

File tree

packages/integrations/src/sql/index.tsx

Lines changed: 234 additions & 179 deletions
Large diffs are not rendered by default.

packages/integrations/src/sql/sql.plugin.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
import type { IPluginAPI } from '@alipay/alex/lib/editor';
22

33
export const PLUGIN_ID = 'sql-plugin';
4+
let _commands: IPluginAPI['commands'] | null = null;
5+
6+
export const api = {
7+
get commands() {
8+
return _commands;
9+
},
10+
};
411

512
export const activate = ({ commands }: IPluginAPI) => {
13+
_commands = commands;
614
commands.registerCommand('alex.update.perference', async (key) => {
715
return commands.executeCommand('')
816
});
Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,77 @@
11
import { Autowired } from '@opensumi/di';
2-
import { Domain, CommandRegistry, URI } from '@opensumi/ide-core-common';
2+
import { Domain, CommandRegistry, URI, Command } from '@opensumi/ide-core-common';
33
import {
44
CommandContribution,
55
KeybindingContribution,
66
KeybindingRegistry,
7+
ClientAppContribution
78
} from '@opensumi/ide-core-browser';
89
import { WorkbenchEditorService } from '@opensumi/ide-editor';
9-
import { RuntimeConfig } from '@alipay/alex-core';
10+
import { AppConfig, RuntimeConfig, WORKSPACE_ROOT } from '@alipay/alex-core';
11+
import { IFileServiceClient } from '@opensumi/ide-file-service';
12+
import { IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser';
13+
import { EditorDocumentModelServiceImpl } from '@opensumi/ide-editor/lib/browser/doc-model/editor-document-model-service';
14+
15+
import * as path from 'path';
1016

1117
const TOGGLE_CHANGE_VIEWED = 'commands.markAsRead';
12-
// const keybinding = [
13-
// {
14-
// command: FILE_COMMANDS.COPY_FILE.id,
15-
// // keybinding: 'ctrlcmd+c',
16-
// // when: `${FilesExplorerFocusedContext.raw} && !${FilesExplorerInputFocusedContext.raw} && !${FilesExplorerFilteredContext.raw}`,
17-
// },
18-
// {
19-
// command: FILE_COMMANDS.PASTE_FILE.id,
20-
// keybinding: 'ctrlcmd+v',
21-
// when: `${FilesExplorerFocusedContext.raw} && !${FilesExplorerInputFocusedContext.raw} && !${FilesExplorerFilteredContext.raw}`,
22-
// },
23-
// {
24-
// command: FILE_COMMANDS.CUT_FILE.id,
25-
// keybinding: 'ctrlcmd+x',
26-
// when: `${FilesExplorerFocusedContext.raw} && !${FilesExplorerInputFocusedContext.raw} && !${FilesExplorerFilteredContext.raw}`,
27-
// },
28-
// {
29-
// command: FILE_COMMANDS.RENAME_FILE.id,
30-
// keybinding: 'enter',
31-
// when: `${FilesExplorerFocusedContext.raw} && !${FilesExplorerInputFocusedContext.raw} && !${FilesExplorerFilteredContext.raw}`,
32-
// },
33-
// {
34-
// command: FILE_COMMANDS.DELETE_FILE.id,
35-
// keybinding: 'ctrlcmd+backspace',
36-
// when: `${FilesExplorerFocusedContext.raw} && !${FilesExplorerInputFocusedContext.raw} && !${FilesExplorerFilteredContext.raw}`,
37-
// },
38-
// ];
3918

40-
@Domain(CommandContribution, KeybindingContribution)
19+
export namespace SQL_COMMANDS {
20+
export const GET_CURRENT_EDITOR: Command = {
21+
id: 'alex.sql.editor',
22+
};
23+
export const OPEN_FILE: Command = {
24+
id: 'alex.sql.open',
25+
};
26+
export const ENCODING: Command = {
27+
id: 'alex.sql.encoding',
28+
};
29+
}
30+
@Domain(CommandContribution, KeybindingContribution, )
4131
export class SQLKeybindContribution implements CommandContribution, KeybindingContribution {
42-
4332
@Autowired(WorkbenchEditorService)
4433
private readonly workbenchEditorService: WorkbenchEditorService;
4534

35+
@Autowired(AppConfig)
36+
appConfig: AppConfig;
37+
4638
@Autowired(RuntimeConfig)
4739
runtimeConfig: RuntimeConfig;
40+
41+
@Autowired(IFileServiceClient)
42+
fileService: IFileServiceClient;
43+
44+
@Autowired(IEditorDocumentModelService)
45+
modelService: EditorDocumentModelServiceImpl;
46+
4847
registerCommands(commands: CommandRegistry): void {
49-
commands.registerCommand(
50-
{
51-
id: TOGGLE_CHANGE_VIEWED,
52-
label: '%commands.markAsRead%',
48+
commands.registerCommand(SQL_COMMANDS.GET_CURRENT_EDITOR, {
49+
execute: () => {
50+
return this.workbenchEditorService.currentEditor;
5351
},
54-
{
55-
execute: async (_uri?: URI) => {
56-
// @ts-ignore
57-
const uri = _uri || this.workbenchEditorService.currentResource.uri;
58-
if (uri) {
52+
});
53+
54+
commands.registerCommand(SQL_COMMANDS.OPEN_FILE, {
55+
execute: (filepath: string, defaultContent?: string) => {
56+
const { workspaceDir } = this.appConfig;
57+
const uri = URI.file(path.join(workspaceDir, filepath));
58+
this.fileService.access(uri.toString()).then((res) => {
59+
if (!res) {
60+
this.fileService
61+
.createFile(uri.toString(), {
62+
content: defaultContent,
63+
})
64+
.then(() => {
65+
this.workbenchEditorService.open(uri);
66+
});
67+
} else {
68+
this.workbenchEditorService.open(uri);
5969
}
60-
},
61-
}
62-
);
70+
});
71+
},
72+
});
6373
}
6474

65-
// registerKeybindings(keybindings: KeybindingRegistry): void {
66-
// keybindings.registerKeybinding({
67-
// command: TOGGLE_CHANGE_VIEWED,
68-
// keybinding: 'alt+c',
69-
// });
70-
// }
71-
7275
registerKeybindings(keybindings: KeybindingRegistry) {
7376
const keybindingList = [
7477
'ctrlcmd+,',
@@ -79,6 +82,7 @@ export class SQLKeybindContribution implements CommandContribution, KeybindingCo
7982
'alt+shift+t',
8083
'alt+shift+w',
8184
'ctrlcmd+\\',
85+
'ctrlcmd+o',
8286
];
8387
for (let i = 1; i < 10; i++) {
8488
keybindingList.push(`ctrlcmd+${i}`);
@@ -91,9 +95,5 @@ export class SQLKeybindContribution implements CommandContribution, KeybindingCo
9195
keybindingList.forEach((binding) => {
9296
keybindings.unregisterKeybinding(binding);
9397
});
94-
95-
96-
97-
9898
}
9999
}

packages/sql-service/src/contribution/sql-service.contribution.ts

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {
66
MaybePromise,
77
URI,
88
WithEventBus,
9-
OnEvent
9+
OnEvent,
1010
} from '@opensumi/ide-core-browser';
1111
// import { monaco , URI as MonacoURI } from '@opensumi/ide-monaco/lib/browser/monaco-api';
12-
import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
12+
import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
1313
import { ITextmateTokenizer } from '@opensumi/ide-monaco/lib/browser/contrib/tokenizer';
1414
import type { ITextmateTokenizerService } from '@opensumi/ide-monaco/lib/browser/contrib/tokenizer';
1515
import { ISQLServiceConfig } from './sql-service.configuration';
@@ -31,10 +31,25 @@ import { DiagnosticsOptions } from '../worker/types';
3131
import { IFileServiceClient, FileChangeType } from '@opensumi/ide-file-service/lib/common';
3232
import * as path from 'path';
3333
import { EditorDocumentModelContentChangedEvent } from '@opensumi/ide-editor/lib/browser';
34+
import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
35+
import { WorkbenchEditorService } from '@opensumi/ide-editor';
36+
import {
37+
BrowserEditorContribution,
38+
IEditorDocumentModelService,
39+
} from '@opensumi/ide-editor/lib/browser';
40+
import { PropsServiceImpl } from '@alipay/alex/lib/core/props.service';
41+
import {
42+
PreferenceSchema,
43+
PreferenceSchemaProvider,
44+
PreferenceService,
45+
} from '@opensumi/ide-core-browser';
3446

3547
@Injectable()
36-
@Domain(ClientAppContribution)
37-
export class SqlServiceContribution extends WithEventBus implements ClientAppContribution {
48+
@Domain(ClientAppContribution, BrowserEditorContribution)
49+
export class SqlServiceContribution
50+
extends WithEventBus
51+
implements ClientAppContribution, BrowserEditorContribution
52+
{
3853
@Autowired(ISQLServiceConfig)
3954
sqlConfig: CompletionProviderOptions;
4055

@@ -50,6 +65,15 @@ export class SqlServiceContribution extends WithEventBus implements ClientAppCon
5065
@Autowired(IFileServiceClient)
5166
fileService: IFileServiceClient;
5267

68+
@Autowired(WorkbenchEditorService)
69+
private readonly editorService: WorkbenchEditorServiceImpl;
70+
71+
@Autowired(PreferenceService)
72+
private readonly preferenceService: PreferenceService;
73+
74+
@Autowired(IEditorDocumentModelService)
75+
private editorDocumentModelService: IEditorDocumentModelService;
76+
5377
initialize() {
5478
type EventType = { uri: string; filepath: string };
5579
this.addDispose(
@@ -82,7 +106,7 @@ export class SqlServiceContribution extends WithEventBus implements ClientAppCon
82106
})
83107
)
84108
.then((data) => {
85-
this.sqlConfig.onChange?.(data)
109+
this.sqlConfig.onChange?.(data);
86110
})
87111
.catch((err) => {
88112
console.error(err);
@@ -132,6 +156,22 @@ export class SqlServiceContribution extends WithEventBus implements ClientAppCon
132156
);
133157
}
134158

159+
onDidRestoreState() {
160+
this.addDispose(
161+
this.preferenceService.onPreferencesChanged((e) => {
162+
const encoding = e['files.encoding'];
163+
if (encoding && encoding.newValue !== encoding.oldValue) {
164+
const resource = this.editorService.currentResource;
165+
if (resource) {
166+
this.editorDocumentModelService.changeModelOptions(resource.uri, {
167+
encoding: encoding.newValue,
168+
});
169+
}
170+
}
171+
})
172+
);
173+
}
174+
135175
registerLanguage(languageId: supportLanguage) {
136176
// 仅占位
137177
const uri = new URI();
@@ -199,7 +239,7 @@ export class SqlServiceContribution extends WithEventBus implements ClientAppCon
199239
// new SQLGenericsFeatures.DocumentRangeFormattingEditAdapter(worker, options)
200240
// );
201241
}
202-
242+
203243
getWorkspaceRelativePath(uri: URI): string | null {
204244
const absolutePath = uri.codeUri.path;
205245
const { workspaceDir } = this.appConfig;

packages/sql-service/src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { extendModule, ModuleConstructor } from '@alipay/alex-core';
44
import { CompletionProviderOptions, supportLanguage } from './types';
55
import { ISQLServiceConfig } from './contribution/sql-service.configuration';
66
import { SqlServiceContribution } from './contribution/sql-service.contribution';
7+
import { SQLKeybindContribution } from './contribution/sql-keybind.contribution';
78

89
export * from './types';
910

@@ -25,16 +26,16 @@ export class SqlServiceModule extends BrowserModule {
2526
});
2627
}
2728

28-
providers: Provider[] = [SqlServiceContribution];
29+
providers: Provider[] = [SqlServiceContribution, SQLKeybindContribution];
2930
}
3031
export function generateCorsUrl(url) {
3132
return `data:text/javascript;charset=utf-8,${encodeURIComponent(`importScripts('${url}');`)}`;
3233
}
3334

34-
export function setMonacoEnvironment() {
35+
export function setMonacoEnvironment(uri?: string) {
3536
self['MonacoEnvironment'] = {
3637
getWorkerUrl: function () {
37-
return generateCorsUrl('http://127.0.0.1:8080/dist/odps-worker.c12f03e6.js');
38+
return generateCorsUrl('http://127.0.0.1:8080/dist/odps-worker.22f636bf.js');
3839
},
3940
};
4041
}

packages/sql-service/src/sql-generics/signature-help-adapter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class SignatureHelpAdapter implements monaco.languages.SignatureHelpProvider {
2828
return worker.doSignatureHelp(resource.toString(), fromPosition(position), context);
2929
})
3030
.then(async (info: monaco.languages.SignatureHelp) => {
31-
console.log(info)
3231
if (!this.options.enableSignature) {
3332
return {} as monaco.languages.SignatureHelpResult;
3433
}

packages/sql-service/src/worker/ODPSWorker.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,6 @@ export class ODPSWorker {
601601
/** 额外获取补全信息的接口,基于光标位置构建ast,提供补全信息 */
602602
const completeErrors = ast.nextToken;
603603

604-
console.log('==> ast', ast, completeErrors)
605604
/** 语法解析时长 */
606605
const parseTime = new Date().getTime() - startTime;
607606

packages/toolkit/define.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
"__WEBVIEW_ENDPOINT__": "https://gw.alipayobjects.com/os/ide-server/webview.1e614a33",
55
"__WEBVIEW_ENDPOINT_INTERNAL__": "http://alipay-rmsdeploy-image.cn-hangzhou.alipay.aliyun-inc.com/ide-server/webview.1e614a33",
66
"__WEBVIEW_SCRIPT__": "https://gw.alipayobjects.com/os/ide-server/webview.66e57793.js",
7-
"__ODPS_WORKER__": "https://gw.alipayobjects.com/os/ide-server/odps-worker.dfb39f71.js"
7+
"__ODPS_WORKER__": "https://gw.alipayobjects.com/os/ide-server/odps-worker.c12053ed.js"
88
}

0 commit comments

Comments
 (0)