Skip to content

Commit ef0ec9c

Browse files
committed
feat: add autoNext param
1 parent 6eb273b commit ef0ec9c

17 files changed

Lines changed: 2035 additions & 54 deletions

File tree

packages/monaco-plugin-ob/example/src/components/App/index.tsx

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -64,37 +64,23 @@ export default function () {
6464
editor.current = monaco.editor.create(dom.current, {
6565
language: 'obmysql',
6666
theme: theme,
67-
wordBasedSuggestions: false
67+
wordBasedSuggestions: false,
68+
inlineSuggest: {
69+
mode: "prefix",
70+
enabled: true,
71+
suppressSuggestions: false
72+
}
6873
});
6974
const model = editor.current.getModel()?.id;
7075
if (model) {
7176
plugin.setModelOptions(model, {
7277
delimiter: ';',
73-
// llm: {
74-
// async completions(input: string, pos: number) {
75-
// // input 的 pos 位置增加一个光标
76-
// const cursor = input.slice(0, pos) + '|' + input.slice(pos);
77-
// const res = await fetch('http://localhost/v1/workflows/run', {
78-
// method: 'POST',
79-
// headers: {
80-
// "Authorization": `Bearer app-XyQfvJ9VFtm58VLquEMNHUmO`,
81-
// "Content-Type": 'application/json'
82-
// },
83-
// body: JSON.stringify({
84-
// user: 'shankar',
85-
// response_mode: "blocking",
86-
// inputs: {
87-
// sql: cursor,
88-
// currentDatabase: 'dbgpt'
89-
// }
90-
// })
91-
// })
92-
// const data = await res.json();
93-
// const sql = data.data?.outputs?.sql || '';
94-
// console.log(sql);
95-
// return sql;
96-
// }
97-
// },
78+
llm: {
79+
async completions(input: string, pos: number) {
80+
// input 的 pos 位置增加一个光标
81+
return 'select112233'
82+
}
83+
},
9884
async getSnippets() {
9985
return [
10086
{

packages/monaco-plugin-ob/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@oceanbase-odc/monaco-plugin-ob",
3-
"version": "1.6.4",
3+
"version": "1.6.5",
44
"description": "",
55
"main": "dist/index.js",
66
"scripts": {

packages/monaco-plugin-ob/src/autoComplete/completionItem.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ export enum CompletionItemSort{
1212
Snippet = '52'
1313
}
1414

15-
export function keywordItem(keyword: string, range: monaco.languages.CompletionItemRanges | monaco.IRange): monaco.languages.CompletionItem {
15+
export function keywordItem(keyword: string, range: monaco.languages.CompletionItemRanges | monaco.IRange, autoNext: boolean): monaco.languages.CompletionItem {
1616
return {
1717
label: keyword,
1818
range,
1919
insertText: keyword + ' ',
2020
kind: monaco.languages.CompletionItemKind.Keyword,
21-
command: {id: 'editor.action.triggerSuggest', title: "" },
21+
command: autoNext ? {id: 'editor.action.triggerSuggest', title: "" } : undefined,
2222
sortText: keyword === "*" ? CompletionItemSort.Star : CompletionItemSort.Keyword
2323
}
2424
}

packages/monaco-plugin-ob/src/inlineCompletion/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class MonacoInlineComplete implements monaco.languages.InlineCompletionsProvider
2323
this.modelVersion[modelId] = version;
2424
const currentToken = model.getWordAtPosition(position)
2525
const plugin = this.getModelOptions(modelId);
26+
2627
if (!plugin?.llm?.completions) {
2728
return;
2829
}
@@ -48,13 +49,18 @@ class MonacoInlineComplete implements monaco.languages.InlineCompletionsProvider
4849
})
4950
return;
5051
}
51-
52+
/**
53+
* 当前行头到光标的内容
54+
*/
5255
const start = model.getValueInRange({
5356
startLineNumber: position.lineNumber,
5457
startColumn: 0,
5558
endLineNumber: position.lineNumber,
5659
endColumn: position.column
5760
});
61+
/**
62+
* 当前行光标到行尾的内容
63+
*/
5864
const end = model.getValueInRange({
5965
startLineNumber: position.lineNumber,
6066
startColumn: position.column,

packages/monaco-plugin-ob/src/mysql/autoComplete/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class MonacoAutoComplete implements monaco.languages.CompletionItemProvider {
9191
onlyKeywords = false;
9292
}
9393
if (typeof item === 'string') {
94-
suggestions.push(keywordItem(item, range))
94+
suggestions.push(keywordItem(item, range, this.getModelOptions(model.id)?.autoNext ?? true))
9595
} else if (item.type === 'allTables') {
9696
suggestions = suggestions.concat(await this.getTableList(model, item.schema, range))
9797
} else if (item.type === 'tableColumns') {

packages/monaco-plugin-ob/src/obmysql/autoComplete/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class MonacoAutoComplete implements monaco.languages.CompletionItemProvider {
9090
onlyKeywords = false;
9191
}
9292
if (typeof item === 'string') {
93-
suggestions.push(keywordItem(item, range))
93+
suggestions.push(keywordItem(item, range, this.getModelOptions(model.id)?.autoNext ?? true))
9494
} else if (item.type === 'allTables') {
9595
suggestions = suggestions.concat(await this.getTableList(model, item.schema, range))
9696
} else if (item.type === 'tableColumns') {
@@ -121,7 +121,7 @@ class MonacoAutoComplete implements monaco.languages.CompletionItemProvider {
121121
}
122122
}
123123
if (onlyKeywords) {
124-
suggestions.push(keywordItem("RETURN", range));
124+
suggestions.push(keywordItem("RETURN", range, this.getModelOptions(model.id)?.autoNext ?? true));
125125
suggestions = suggestions.concat(
126126
await this.getSnippets(model, range)
127127
)

packages/monaco-plugin-ob/src/oboracle/autoComplete/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class MonacoAutoComplete implements monaco.languages.CompletionItemProvider {
9696
onlyKeywords = false;
9797
}
9898
if (typeof item === 'string') {
99-
suggestions.push(keywordItem(item, range))
99+
suggestions.push(keywordItem(item, range, this.getModelOptions(model.id)?.autoNext ?? true))
100100
} else if (item.type === 'allTables') {
101101
suggestions = suggestions.concat(await this.getTableList(model, item.schema, range));
102102
if (!item.schema && !item.disableSys) {

packages/monaco-plugin-ob/src/type.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ export declare type IFunctionParam = IFunctionParamRich | string;
2828

2929
export interface IModelOptions {
3030
delimiter: string;
31+
/**
32+
* 自动提示下一个token,默认为true
33+
*/
34+
autoNext?: boolean;
3135
getTableList?: (schema?: string) => Promise<string[]>;
3236
getSchemaList?: () => Promise<string[]>;
3337
getViewList?: (schema?: string) => Promise<string[]>;

packages/ob-parser-js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@oceanbase-odc/ob-parser-js",
3-
"version": "3.2.1",
3+
"version": "3.2.2",
44
"description": "OB 前端解析工具库",
55
"main": "./lib/index.js",
66
"module": "./esm/index.js",

packages/ob-parser-js/src/parser/obmysql/PLLexer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// @ts-nocheck
12
// Generated from PLLexer.g4 by ANTLR 4.8
23
// jshint ignore: start
34
var antlr4 = require('antlr4/index');

0 commit comments

Comments
 (0)