Add featureFlags param with lint ignore
This commit is contained in:
@@ -2,6 +2,7 @@ import {DescriptionPair} from "./completion/descriptionDictionary.js";
|
|||||||
import {Dictionary, isDictionary} from "./data/dictionary.js";
|
import {Dictionary, isDictionary} from "./data/dictionary.js";
|
||||||
import {ExpressionData} from "./data/expressiondata.js";
|
import {ExpressionData} from "./data/expressiondata.js";
|
||||||
import {Evaluator} from "./evaluator.js";
|
import {Evaluator} from "./evaluator.js";
|
||||||
|
import {FeatureFlags} from "./features.js";
|
||||||
import {wellKnownFunctions} from "./funcs.js";
|
import {wellKnownFunctions} from "./funcs.js";
|
||||||
import {FunctionDefinition, FunctionInfo} from "./funcs/info.js";
|
import {FunctionDefinition, FunctionInfo} from "./funcs/info.js";
|
||||||
import {Lexer, Token, TokenType} from "./lexer.js";
|
import {Lexer, Token, TokenType} from "./lexer.js";
|
||||||
@@ -26,13 +27,16 @@ export type CompletionItem = {
|
|||||||
* @param context Context available for the expression
|
* @param context Context available for the expression
|
||||||
* @param extensionFunctions List of functions available
|
* @param extensionFunctions List of functions available
|
||||||
* @param functions Optional map of functions to use during evaluation
|
* @param functions Optional map of functions to use during evaluation
|
||||||
|
* @param featureFlags Optional feature flags to control which features are enabled
|
||||||
* @returns Array of completion items
|
* @returns Array of completion items
|
||||||
*/
|
*/
|
||||||
export function complete(
|
export function complete(
|
||||||
input: string,
|
input: string,
|
||||||
context: Dictionary,
|
context: Dictionary,
|
||||||
extensionFunctions: FunctionInfo[],
|
extensionFunctions: FunctionInfo[],
|
||||||
functions?: Map<string, FunctionDefinition>
|
functions?: Map<string, FunctionDefinition>,
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
featureFlags?: FeatureFlags
|
||||||
): CompletionItem[] {
|
): CompletionItem[] {
|
||||||
// Lex
|
// Lex
|
||||||
const lexer = new Lexer(input);
|
const lexer = new Lexer(input);
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ export async function complete(
|
|||||||
func.description = getFunctionDescription(func.name);
|
func.description = getFunctionDescription(func.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return getExpressionCompletionItems(token, context, extensionFunctions, newPos);
|
return getExpressionCompletionItems(token, context, extensionFunctions, newPos, config?.featureFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
const indentation = guessIndentation(newDoc, 2, true); // Use 2 spaces as default and most common for YAML
|
const indentation = guessIndentation(newDoc, 2, true); // Use 2 spaces as default and most common for YAML
|
||||||
@@ -531,7 +531,8 @@ function getExpressionCompletionItems(
|
|||||||
token: TemplateToken,
|
token: TemplateToken,
|
||||||
context: DescriptionDictionary,
|
context: DescriptionDictionary,
|
||||||
extensionFunctions: FunctionInfo[],
|
extensionFunctions: FunctionInfo[],
|
||||||
pos: Position
|
pos: Position,
|
||||||
|
featureFlags?: FeatureFlags
|
||||||
): CompletionItem[] {
|
): CompletionItem[] {
|
||||||
if (!token.range) {
|
if (!token.range) {
|
||||||
return [];
|
return [];
|
||||||
@@ -550,8 +551,8 @@ function getExpressionCompletionItems(
|
|||||||
const expressionInput = (getExpressionInput(currentInput, cursorOffset) || "").trim();
|
const expressionInput = (getExpressionInput(currentInput, cursorOffset) || "").trim();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return completeExpression(expressionInput, context, extensionFunctions, validatorFunctions).map(item =>
|
return completeExpression(expressionInput, context, extensionFunctions, validatorFunctions, featureFlags).map(
|
||||||
mapExpressionCompletionItem(item, currentInput[cursorOffset])
|
item => mapExpressionCompletionItem(item, currentInput[cursorOffset])
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error(`Error while completing expression: '${(e as Error)?.message || "<no details>"}'`);
|
error(`Error while completing expression: '${(e as Error)?.message || "<no details>"}'`);
|
||||||
|
|||||||
Reference in New Issue
Block a user