@@ -76,9 +76,13 @@ class MdSyntaxCompletionProvider implements Monaco.languages.CompletionItemProvi
7676 return 0
7777 }
7878
79- private async provideSelectionCompletionItems ( model : Monaco . editor . IModel , selection : Monaco . Selection ) : Promise < Monaco . languages . CompletionList | undefined > {
79+ private async provideSelectionCompletionItems ( model : Monaco . editor . IModel , selection : Monaco . Selection , languageId : string ) : Promise < Monaco . languages . CompletionList | undefined > {
8080 const selectionEndLineMaxColumn = model . getLineMaxColumn ( selection . endLineNumber )
8181 const items = this . ctx . editor . getSimpleCompletionItems ( ) . filter ( item => {
82+ if ( item . language && item . language !== languageId ) {
83+ return false
84+ }
85+
8286 if ( item . insertText . includes ( '${TM_SELECTED_TEXT}' ) ) {
8387 return true
8488 }
@@ -126,9 +130,11 @@ class MdSyntaxCompletionProvider implements Monaco.languages.CompletionItemProvi
126130 }
127131
128132 public async provideCompletionItems ( model : Monaco . editor . IModel , position : Monaco . Position ) : Promise < Monaco . languages . CompletionList | undefined > {
133+ const languageId = this . ctx . editor . getLineLanguageId ( position . lineNumber , model )
134+
129135 const selection = this . ctx . editor . getEditor ( ) . getSelection ( ) !
130136 if ( ! selection . isEmpty ( ) ) {
131- return this . provideSelectionCompletionItems ( model , selection )
137+ return this . provideSelectionCompletionItems ( model , selection , languageId )
132138 }
133139
134140 const line = model . getLineContent ( position . lineNumber )
@@ -142,6 +148,10 @@ class MdSyntaxCompletionProvider implements Monaco.languages.CompletionItemProvi
142148 }
143149
144150 const items = this . ctx . editor . getSimpleCompletionItems ( ) . filter ( ( item ) => {
151+ if ( item . language && item . language !== languageId ) {
152+ return false
153+ }
154+
145155 return ! item . block || startColumn === 1
146156 } )
147157
@@ -228,30 +238,30 @@ export default {
228238
229239 ctx . editor . tapSimpleCompletionItems ( items => {
230240 items . unshift (
231- { label : '/ ![]() Image' , insertText : '' } ,
232- { label : '/ []() Link' , insertText : '[${2:Link}]($1)' } ,
233- { label : '/ # Head 1' , insertText : '# $1' , block : true } ,
234- { label : '/ ## Head 2' , insertText : '## $1' , block : true } ,
235- { label : '/ ### Head 3' , insertText : '### $1' , block : true } ,
236- { label : '/ #### Head 4' , insertText : '#### $1' , block : true } ,
237- { label : '/ ##### Head 5' , insertText : '##### $1' , block : true } ,
238- { label : '/ ###### Head 6' , insertText : '###### $1' , block : true } ,
239- { label : '/ + List' , insertText : '+ ' } ,
240- { label : '/ - List' , insertText : '- ' } ,
241- { label : '/ > Blockquote' , insertText : '> ' } ,
242- { label : '/ ` Code' , insertText : '`$1`' , surroundSelection : '$1' , } ,
243- { label : '/ * Italic' , insertText : '*$1*' , surroundSelection : '$1' , } ,
244- { label : '/ _ Italic' , insertText : '_$1_' , surroundSelection : '$1' , } ,
245- { label : '/ ~ Sub' , insertText : '~$1~' , surroundSelection : '$1' , } ,
246- { label : '/ ^ Sup' , insertText : '^$1^' , surroundSelection : '$1' , } ,
247- { label : '/ ** Bold' , insertText : '**$1**' , surroundSelection : '$1' , } ,
248- { label : '/ __ Bold' , insertText : '__$1__' , surroundSelection : '$1' , } ,
249- { label : '/ ~~ Delete' , insertText : '~~$1~~' , surroundSelection : '$1' , } ,
250- { label : '/ == Mark' , insertText : '==$1==' , surroundSelection : '$1' , } ,
251- { label : '/ ``` Fence' , insertText : '```$1\n$2\n```\n' , block : true , surroundSelection : '$2' , } ,
252- { label : '/ --- Horizontal Line' , insertText : '---\n' , block : true } ,
253- { label : '/ + [ ] TODO List' , insertText : '+ [ ] ' } ,
254- { label : '/ - [ ] TODO List' , insertText : '- [ ] ' } ,
241+ { language : 'markdown' , label : '/ ![]() Image' , insertText : '' } ,
242+ { language : 'markdown' , label : '/ []() Link' , insertText : '[${2:Link}]($1)' } ,
243+ { language : 'markdown' , label : '/ # Head 1' , insertText : '# $1' , block : true } ,
244+ { language : 'markdown' , label : '/ ## Head 2' , insertText : '## $1' , block : true } ,
245+ { language : 'markdown' , label : '/ ### Head 3' , insertText : '### $1' , block : true } ,
246+ { language : 'markdown' , label : '/ #### Head 4' , insertText : '#### $1' , block : true } ,
247+ { language : 'markdown' , label : '/ ##### Head 5' , insertText : '##### $1' , block : true } ,
248+ { language : 'markdown' , label : '/ ###### Head 6' , insertText : '###### $1' , block : true } ,
249+ { language : 'markdown' , label : '/ + List' , insertText : '+ ' } ,
250+ { language : 'markdown' , label : '/ - List' , insertText : '- ' } ,
251+ { language : 'markdown' , label : '/ > Blockquote' , insertText : '> ' } ,
252+ { language : 'markdown' , label : '/ ` Code' , insertText : '`$1`' , surroundSelection : '$1' , } ,
253+ { language : 'markdown' , label : '/ * Italic' , insertText : '*$1*' , surroundSelection : '$1' , } ,
254+ { language : 'markdown' , label : '/ _ Italic' , insertText : '_$1_' , surroundSelection : '$1' , } ,
255+ { language : 'markdown' , label : '/ ~ Sub' , insertText : '~$1~' , surroundSelection : '$1' , } ,
256+ { language : 'markdown' , label : '/ ^ Sup' , insertText : '^$1^' , surroundSelection : '$1' , } ,
257+ { language : 'markdown' , label : '/ ** Bold' , insertText : '**$1**' , surroundSelection : '$1' , } ,
258+ { language : 'markdown' , label : '/ __ Bold' , insertText : '__$1__' , surroundSelection : '$1' , } ,
259+ { language : 'markdown' , label : '/ ~~ Delete' , insertText : '~~$1~~' , surroundSelection : '$1' , } ,
260+ { language : 'markdown' , label : '/ == Mark' , insertText : '==$1==' , surroundSelection : '$1' , } ,
261+ { language : 'markdown' , label : '/ ``` Fence' , insertText : '```$1\n$2\n```\n' , block : true , surroundSelection : '$2' , } ,
262+ { language : 'markdown' , label : '/ --- Horizontal Line' , insertText : '---\n' , block : true } ,
263+ { language : 'markdown' , label : '/ + [ ] TODO List' , insertText : '+ [ ] ' } ,
264+ { language : 'markdown' , label : '/ - [ ] TODO List' , insertText : '- [ ] ' } ,
255265 )
256266 } )
257267
0 commit comments