-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【WIP】feat: support built-in sql snippets #154
base: main
Are you sure you want to change the base?
Conversation
ts失败了 |
需要等dt-sql-parser出包 |
@@ -45,17 +46,32 @@ export abstract class BaseSQLWorker { | |||
async doCompletionWithEntities( | |||
code: string, | |||
position: Position | |||
): Promise<[Suggestions | null, EntityContext[] | null]> { | |||
): Promise<{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
返回结构的变更,需要检查使用到的地方,目前没有发现其他地方有使用到
@@ -80,6 +81,27 @@ export function setupLanguageFeatures( | |||
} | |||
} | |||
|
|||
function getDefaultSnippets(languageId: LanguageIdEnum) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
当前文件函数内容缩进异常
@@ -183,5 +185,17 @@ export const completionService: CompletionService = async function ( | |||
} | |||
} | |||
} | |||
return [...syntaxCompletionItems, ...keywordsCompletionItems]; | |||
|
|||
const snippetCompletionItems: ICompletionItem[] = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
当前文件缩进异常
@@ -0,0 +1,7 @@ | |||
export { hiveSnippets } from './languages/hive/hive.snippet'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
模板需要和产品经理确认
@@ -159,13 +159,22 @@ export class CompletionAdapter<T extends BaseSQLWorker> | |||
} | |||
return worker.doCompletionWithEntities(code, position); | |||
}) | |||
.then(([suggestions, allEntities]) => { | |||
.then(async ({ suggestions, allEntities, context: semanticContext }) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
async 有无必要?
@@ -183,5 +185,17 @@ export const completionService: CompletionService = async function ( | |||
} | |||
} | |||
} | |||
return [...syntaxCompletionItems, ...keywordsCompletionItems]; | |||
|
|||
const snippetCompletionItems: ICompletionItem[] = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
将和 getCatalogs 一样写在 dbMetaProvider.ts 文件中
@@ -183,5 +185,17 @@ export const completionService: CompletionService = async function ( | |||
} | |||
} | |||
} | |||
return [...syntaxCompletionItems, ...keywordsCompletionItems]; | |||
|
|||
const snippetCompletionItems: ICompletionItem[] = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
离线可以验证下接口获取是否可行,看代码应该是没问题的
{ | ||
prefix: 'INSERT', | ||
label: 'INSERT代码片段', | ||
body: ['insert', 'into', '\t`${1:table1}`', 'values', '\t(`$2`);', '${3}'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
新增功能: #23 支持SQL代码片段
功能描述:对每种语言内置部分常用的SQL片段,在合适的时机可以通过关键字或者空格触发代码片段补全列表
Preview
使用方式:
默认情况下自动启用内置的代码片段,如果自定义了
completionService
, 则需要在completionService
中将snippets
返回需要手动包裹
snippets
补全项并返回设置自定义用户片段
snippets 配置参数与 vscode 的 snippet 基本相同, 详见 vscode snippets
使用
setupLanguageFeatures
方式配置的snippets
, 只有在当前输入上下文为新语句开头时才能在completionService
中访问到,如果不需要该特性, 可以直接在completionService
中使用自己的代码片段列表