@@ -569,8 +569,14 @@ export class XsltTokenCompletions {
569569break ;
570570}
571571} else if ( isOnRequiredToken && tagAttributeNames . length > 0 && tagAttributeNames [ tagAttributeNames . length - 1 ] === 'as' ) {
572+ let tokenRange : vscode . Range | undefined ;
573+ if ( token . tokenType === TokenLevelState . simpleType || token . tokenType === TokenLevelState . nodeType ) {
574+ const tokenStart = new vscode . Position ( token . line , token . startCharacter ) ;
575+ const tokenEnd = new vscode . Position ( token . line , token . startCharacter + token . length ) ;
576+ tokenRange = new vscode . Range ( tokenStart , tokenEnd ) ;
577+ }
572578let completionStrings = XsltTokenCompletions . sequenceTypes ;
573- resultCompletions = XsltTokenCompletions . getSimpleInsertCompletions ( completionStrings , vscode . CompletionItemKind . TypeParameter ) ;
579+ resultCompletions = XsltTokenCompletions . getRangeInsertCompletions ( completionStrings , tokenRange , vscode . CompletionItemKind . TypeParameter ) ;
574580} else {
575581let xpathCharType = < CharLevelState > token . charType ;
576582let xpathTokenType = < TokenLevelState > token . tokenType ;
@@ -1313,6 +1319,21 @@ export class XsltTokenCompletions {
13131319return completionItems ;
13141320}
13151321
1322+ private static getRangeInsertCompletions ( completionStrings : string [ ] , range : vscode . Range | undefined , kind : vscode . CompletionItemKind , excludeChar ?: string ) {
1323+ let completionItems : vscode . CompletionItem [ ] = [ ] ;
1324+ completionStrings . forEach ( ( name ) => {
1325+ if ( ! excludeChar || name !== excludeChar ) {
1326+ const varName = name ;
1327+ const newItem = new vscode . CompletionItem ( varName , kind ) ;
1328+ if ( range ) {
1329+ newItem . range = range ;
1330+ }
1331+ completionItems . push ( newItem ) ;
1332+ }
1333+ } ) ;
1334+ return completionItems ;
1335+ }
1336+
13161337private static getXSLTTagCompletions ( document : vscode . TextDocument , docType : DocumentTypes , languageConfig : LanguageConfiguration , schemaQuery : SchemaQuery | undefined , pos : vscode . Position , elementStack : ElementData [ ] , inScopeVariablesList : VariableData [ ] , symbolId : string ) {
13171338if ( ! schemaQuery ) {
13181339return XsltTokenCompletions . getXSLTSnippetCompletions ( languageConfig . elementSnippets ) ;
0 commit comments