@@ -16,6 +16,7 @@ const triggerCharacterSets: { [key: string]: string[]; } = {
1616 scopeName : [ '"' , '.' ] ,
1717 name : [ '"' ] ,
1818 include : [ '"' , '#' , '.' , '$' ] ,
19+ replace_capture : [ '$' , '{' ] ,
1920 scope : [ '.' , '$' ] ,
2021 scope_new : [ '"' , ' ' ] ,
2122 regex : [ '{' , '^' , /* '\\', '(', '?', '<', '\'' */ ] ,
@@ -67,6 +68,7 @@ export const CompletionItemProvider: vscode.CompletionItemProvider = {
6768 (scopeName (value) @scopeName)
6869 (name_display (value) @name)
6970 (include (value) @include)
71+ (name (value (scope (replace_capture) @replace_capture)))
7072 (name (value (scope) @scope))
7173 (name (value) @scope_new)
7274 (contentName (value (scope) @scope))
@@ -395,8 +397,14 @@ export const CompletionItemProvider: vscode.CompletionItemProvider = {
395397 sortText : ` ${ scope } ` ,
396398 } ) ;
397399 }
398-
399- const noOfCaptureGroups = locateRegex ( trees , cursorName == 'scope' ? cursorNode . parent . parent : cursorNode . parent ) ;
400+ /* FallThrough */
401+
402+ case 'replace_capture' : {
403+ const nameNode =
404+ cursorName == 'replace_capture' ? cursorNode . parent . parent . parent :
405+ cursorName == 'scope' ? cursorNode . parent . parent :
406+ cursorNode . parent ;
407+ const noOfCaptureGroups = locateRegex ( trees , nameNode ) ;
400408 // vscode.window.showInformationMessage(`noOfCaptureGroups: ${(performance.now() - start).toFixed(3)}ms ${noOfCaptureGroups.length}\n${JSON.stringify(noOfCaptureGroups)}`);
401409 const updowncaseSnippet =
402410 new vscode . SnippetString ( )
@@ -410,7 +418,7 @@ export const CompletionItemProvider: vscode.CompletionItemProvider = {
410418 label : '${0:/updowncase}' ,
411419 description : "Transform Capture's Case" ,
412420 } ,
413- range : cursorRange ,
421+ range : cursorName == 'replace_capture' ? cursorRange : undefined ,
414422 kind : vscode . CompletionItemKind . Function ,
415423 insertText : updowncaseSnippet ,
416424 documentation : "Converts all the alphabetic characters in a capture to UPPERCASE or lowercase.\nAll leading dots (.) are stripped." ,
@@ -421,11 +429,12 @@ export const CompletionItemProvider: vscode.CompletionItemProvider = {
421429 label : '$0' ,
422430 description : "Capture Replacement" ,
423431 } ,
424- range : cursorRange ,
432+ range : cursorName == 'replace_capture' ? cursorRange : undefined ,
425433 kind : vscode . CompletionItemKind . Function ,
426434 insertText : replaceSnippet ,
427435 documentation : "Replaced with the corresponding capture's captured text.\nAll leading dots (.) are stripped." ,
428436 } ) ;
437+ }
429438
430439 break ;
431440 case 'regex' :
0 commit comments