Skip to content

Commit 44e079a

Browse files
authored
feat(autocomplete): suggest variables (#1752)
1 parent b5c61cd commit 44e079a

File tree

4 files changed

+51
-21
lines changed

4 files changed

+51
-21
lines changed

package-lock.json

+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"@gravity-ui/react-data-table": "^2.1.1",
2525
"@gravity-ui/table": "^1.7.0",
2626
"@gravity-ui/uikit": "^6.33.0",
27-
"@gravity-ui/websql-autocomplete": "^12.1.2",
27+
"@gravity-ui/websql-autocomplete": "^12.7.0",
2828
"@hookform/resolvers": "^3.9.0",
2929
"@reduxjs/toolkit": "^2.2.3",
3030
"@tanstack/react-table": "^8.19.3",

src/utils/monaco/yql/generateSuggestions.ts

+32-11
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,17 @@ const SuggestionsWeight: Record<SuggestionType, number> = {
138138
suggestAllColumns: 3,
139139
suggestColumns: 4,
140140
suggestColumnAliases: 5,
141-
suggestTableIndexes: 6,
142-
suggestTableHints: 7,
143-
suggestEntitySettings: 8,
144-
suggestKeywords: 9,
145-
suggestAggregateFunctions: 10,
146-
suggestTableFunctions: 11,
147-
suggestWindowFunctions: 12,
148-
suggestFunctions: 13,
149-
suggestSimpleTypes: 14,
150-
suggestUdfs: 15,
141+
suggestVariables: 6,
142+
suggestTableIndexes: 7,
143+
suggestTableHints: 8,
144+
suggestEntitySettings: 9,
145+
suggestKeywords: 10,
146+
suggestAggregateFunctions: 11,
147+
suggestTableFunctions: 12,
148+
suggestWindowFunctions: 13,
149+
suggestFunctions: 14,
150+
suggestSimpleTypes: 15,
151+
suggestUdfs: 16,
151152
};
152153

153154
function getSuggestionIndex(suggestionType: SuggestionType) {
@@ -328,7 +329,7 @@ export function generateKeywordsSuggestion(
328329
if (!suggestKeywords) {
329330
return [];
330331
}
331-
return suggestKeywords?.map((keywordSuggestion) => ({
332+
return suggestKeywords.map((keywordSuggestion) => ({
332333
label: keywordSuggestion.value,
333334
insertText: keywordSuggestion.value,
334335
kind: CompletionItemKind.Keyword,
@@ -338,6 +339,26 @@ export function generateKeywordsSuggestion(
338339
}));
339340
}
340341

342+
export function generateVariableSuggestion(
343+
rangeToInsertSuggestion: monaco.IRange,
344+
suggestVariables?: string[],
345+
) {
346+
if (!suggestVariables) {
347+
return [];
348+
}
349+
return suggestVariables.map((rawVariable) => {
350+
const variable = '$' + rawVariable;
351+
return {
352+
label: variable,
353+
insertText: variable,
354+
kind: CompletionItemKind.Variable,
355+
detail: 'Variable',
356+
range: rangeToInsertSuggestion,
357+
sortText: suggestionIndexToWeight(getSuggestionIndex('suggestVariables')),
358+
};
359+
});
360+
}
361+
341362
export async function generateEntitiesSuggestion(
342363
rangeToInsertSuggestion: monaco.IRange,
343364
suggestEntities: YQLEntity[],

src/utils/monaco/yql/yqlSuggestions.ts

+9
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
generateSimpleTypesSuggestion,
1414
generateTableFunctionsSuggestion,
1515
generateUdfSuggestion,
16+
generateVariableSuggestion,
1617
generateWindowFunctionsSuggestion,
1718
} from './generateSuggestions';
1819

@@ -71,6 +72,7 @@ async function getSuggestions(
7172
let simpleTypesSuggestions: Monaco.languages.CompletionItem[] = [];
7273
let pragmasSuggestions: Monaco.languages.CompletionItem[] = [];
7374
let entitySettingsSuggestions: Monaco.languages.CompletionItem[] = [];
75+
let variableSuggestions: Monaco.languages.CompletionItem[] = [];
7476

7577
if (parseResult.suggestEntity) {
7678
const entityNamePrefix = getEntityNameAtCursor(model, cursorPosition);
@@ -99,6 +101,12 @@ async function getSuggestions(
99101
if (parseResult.suggestSimpleTypes) {
100102
simpleTypesSuggestions = await generateSimpleTypesSuggestion(rangeToInsertSuggestion);
101103
}
104+
if (parseResult.suggestVariables) {
105+
variableSuggestions = generateVariableSuggestion(
106+
rangeToInsertSuggestion,
107+
parseResult.suggestVariables,
108+
);
109+
}
102110
if (parseResult.suggestUdfs) {
103111
udfsSuggestions = await generateUdfSuggestion(rangeToInsertSuggestion);
104112
}
@@ -141,6 +149,7 @@ async function getSuggestions(
141149
...keywordsSuggestions,
142150
...aggregateFunctionsSuggestions,
143151
...entitySettingsSuggestions,
152+
...variableSuggestions,
144153
];
145154

146155
return suggestions;

0 commit comments

Comments
 (0)