@@ -243,12 +243,29 @@ export class YamlCompletion {
243243 }
244244 }
245245
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+ }
252269 }
253270
254271 completionItem . label = label ;
@@ -1676,8 +1693,9 @@ export class YamlCompletion {
16761693 let value : string ;
16771694 if ( typeof param === 'string' ) {
16781695 //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 ;
16811699 } else {
16821700 value = '' + param ;
16831701 }
@@ -1723,6 +1741,10 @@ export class YamlCompletion {
17231741 return value ;
17241742 }
17251743
1744+ getQuote ( ) : string {
1745+ return this . isSingleQuote ? `'` : `"` ;
1746+ }
1747+
17261748 /**
17271749 * simplify `{$1:value}` to `value`
17281750 */
0 commit comments