@@ -243,12 +243,29 @@ export class YamlCompletion {
243
243
}
244
244
}
245
245
246
- // trim $1 from end of completion
247
- if ( completionItem . insertText . endsWith ( '$1' ) && ! isForParentCompletion ) {
248
- completionItem . insertText = completionItem . insertText . substr ( 0 , completionItem . insertText . length - 2 ) ;
249
- }
250
- if ( overwriteRange && overwriteRange . start . line === overwriteRange . end . line ) {
251
- completionItem . textEdit = TextEdit . replace ( overwriteRange , completionItem . insertText ) ;
246
+ if ( completionItem . label . toLowerCase ( ) === 'regular expression' ) {
247
+ const docObject = completionItem . documentation as MarkupContent ;
248
+ const splitValues = docObject . value . split ( ':' ) ;
249
+ label =
250
+ splitValues . length > 0 ? `${ this . getQuote ( ) } \\${ JSON . parse ( splitValues [ 1 ] ) } ${ this . getQuote ( ) } ` : completionItem . label ;
251
+ completionItem . insertText = label ;
252
+ completionItem . textEdit = TextEdit . replace ( overwriteRange , label ) ;
253
+ } else {
254
+ let mdText = completionItem . insertText . replace ( / \$ { [ 0 - 9 ] + [: | ] ( .* ) } / g, ( s , arg ) => arg ) . replace ( / \$ ( [ 0 - 9 ] + ) / g, '' ) ;
255
+ const splitMDText = mdText . split ( ':' ) ;
256
+ let value = splitMDText . length > 1 ? splitMDText [ 1 ] . trim ( ) : mdText ;
257
+ if ( value && / ^ ( [ ' \\ " \\ ] ) $ / . test ( value ) ) {
258
+ value = `${ this . getQuote ( ) } \\${ value } ${ this . getQuote ( ) } ` ;
259
+ mdText = splitMDText . length > 1 ? splitMDText [ 0 ] + ': ' + value : value ;
260
+ completionItem . insertText = mdText ;
261
+ }
262
+ // trim $1 from end of completion
263
+ if ( completionItem . insertText . endsWith ( '$1' ) && ! isForParentCompletion ) {
264
+ completionItem . insertText = completionItem . insertText . substr ( 0 , completionItem . insertText . length - 2 ) ;
265
+ }
266
+ if ( overwriteRange && overwriteRange . start . line === overwriteRange . end . line ) {
267
+ completionItem . textEdit = TextEdit . replace ( overwriteRange , completionItem . insertText ) ;
268
+ }
252
269
}
253
270
254
271
completionItem . label = label ;
@@ -1676,8 +1693,9 @@ export class YamlCompletion {
1676
1693
let value : string ;
1677
1694
if ( typeof param === 'string' ) {
1678
1695
//support YAML spec 1.1 boolean values
1679
- const quote = this . isSingleQuote ? `'` : `"` ;
1680
- value = [ 'on' , 'off' , 'true' , 'false' , 'yes' , 'no' ] . includes ( param . toLowerCase ( ) ) ? `${ quote } ${ param } ${ quote } ` : param ;
1696
+ value = [ 'on' , 'off' , 'true' , 'false' , 'yes' , 'no' ] . includes ( param . toLowerCase ( ) )
1697
+ ? `${ this . getQuote ( ) } ${ param } ${ this . getQuote ( ) } `
1698
+ : param ;
1681
1699
} else {
1682
1700
value = '' + param ;
1683
1701
}
@@ -1723,6 +1741,10 @@ export class YamlCompletion {
1723
1741
return value ;
1724
1742
}
1725
1743
1744
+ getQuote ( ) : string {
1745
+ return this . isSingleQuote ? `'` : `"` ;
1746
+ }
1747
+
1726
1748
/**
1727
1749
* simplify `{$1:value}` to `value`
1728
1750
*/
0 commit comments