Improved code block and emojiy textcomplete and match rules
This commit is contained in:
		
							parent
							
								
									eb4cb3f52f
								
							
						
					
					
						commit
						2eec0ae35d
					
				| @ -2186,23 +2186,42 @@ function checkCursorMenu() { | ||||
| 
 | ||||
| var isInCode = false; | ||||
| 
 | ||||
| function check(text) { | ||||
| function checkInCode() { | ||||
|     isInCode = checkAbove() && checkBelow(); | ||||
| } | ||||
| 
 | ||||
| function checkAbove() { | ||||
|     var cursor = editor.getCursor(); | ||||
|     text = []; | ||||
|     for (var i = 0; i < cursor.line; i++) | ||||
|     var text = []; | ||||
|     for (var i = 0; i < cursor.line; i++) //contain current line
 | ||||
|         text.push(editor.getLine(i)); | ||||
|     text = text.join('\n') + '\n' + editor.getLine(cursor.line).slice(0, cursor.ch); | ||||
|     //console.log(text);
 | ||||
|     return matchInCode(text); | ||||
| } | ||||
| 
 | ||||
| function checkBelow() { | ||||
|     var cursor = editor.getCursor(); | ||||
|     var count = editor.lineCount(); | ||||
|     var text = []; | ||||
|     for (var i = cursor.line + 1; i < count; i++) //not contain current line
 | ||||
|         text.push(editor.getLine(i)); | ||||
|     text = text.join('\n') + '\n' + editor.getLine(cursor.line).slice(0, cursor.ch); | ||||
|     //console.log(text);
 | ||||
|     return matchInCode(text); | ||||
| } | ||||
| 
 | ||||
| function matchInCode(text) { | ||||
|     var match; | ||||
|     match = text.match(/`{3,}/g); | ||||
|     if (match && match.length % 2) { | ||||
|         isInCode = true; | ||||
|         return true; | ||||
|     } else { | ||||
|         match = text.match(/`/g); | ||||
|         if (match && match.length % 2) { | ||||
|             isInCode = true; | ||||
|             return true; | ||||
|         } else { | ||||
|             isInCode = false; | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -2212,9 +2231,16 @@ $(editor.getInputField()) | ||||
|         { // emoji strategy
 | ||||
|             match: /(?:^|\n|)\B:([\-+\w]*)$/, | ||||
|             search: function (term, callback) { | ||||
|                 callback($.map(emojify.emojiNames, function (emoji) { | ||||
|                     return emoji.indexOf(term) === 0 ? emoji : null; | ||||
|                 })); | ||||
|                 var list = []; | ||||
|                 $.map(emojify.emojiNames, function (emoji) { | ||||
|                     if (emoji.indexOf(term) === 0) //match at first character
 | ||||
|                       list.push(emoji); | ||||
|                 }); | ||||
|                 $.map(emojify.emojiNames, function (emoji) { | ||||
|                     if (emoji.indexOf(term) !== -1) //match inside the word
 | ||||
|                       list.push(emoji); | ||||
|                 }); | ||||
|                 callback(list); | ||||
|                 checkCursorMenu(); | ||||
|             }, | ||||
|             template: function (value) { | ||||
| @ -2225,7 +2251,8 @@ $(editor.getInputField()) | ||||
|             }, | ||||
|             index: 1, | ||||
|             context: function (text) { | ||||
|                 check(text); | ||||
|                 checkCursorMenu(); | ||||
|                 checkInCode(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     }, | ||||
| @ -2236,27 +2263,39 @@ $(editor.getInputField()) | ||||
|             search: function (term, callback) { | ||||
|                 var list = []; | ||||
|                 $.map(this.langs, function (lang) { | ||||
|                     if (lang.indexOf(term) === 0) | ||||
|                     if (lang.indexOf(term) === 0 && lang !== term) | ||||
|                         list.push(lang); | ||||
|                 }); | ||||
|                 $.map(this.charts, function (chart) { | ||||
|                     if (chart.indexOf(term) === 0) | ||||
|                     if (chart.indexOf(term) === 0 && chart !== term) | ||||
|                         list.push(chart); | ||||
|                 }); | ||||
|                 checkCursorMenu(); | ||||
|                 callback(list); | ||||
|                 checkCursorMenu(); | ||||
|             }, | ||||
|             replace: function (lang) { | ||||
|                 var ending = ''; | ||||
|                 if (isInCode) { | ||||
|                     ending = '\n\n```'; | ||||
|                 } | ||||
|                 if (this.langs.indexOf(lang) !== -1) | ||||
|                     return '$1```' + lang + '=\n\n```'; | ||||
|                     return '$1```' + lang + '=' + ending; | ||||
|                 else if (this.charts.indexOf(lang) !== -1) | ||||
|                     return '$1```' + lang + '\n\n```'; | ||||
|                     return '$1```' + lang + ending; | ||||
|             }, | ||||
|             done: function () { | ||||
|                 editor.doc.cm.execCommand("goLineUp"); | ||||
|                 var cursor = editor.getCursor(); | ||||
|                 var text = []; | ||||
|                 text.push(editor.getLine(cursor.line - 1)); | ||||
|                 text.push(editor.getLine(cursor.line)); | ||||
|                 text = text.join('\n'); | ||||
|                 //console.log(text);
 | ||||
|                 if (text == '\n```') | ||||
|                     editor.doc.cm.execCommand("goLineUp"); | ||||
|             }, | ||||
|             context: function () { | ||||
|                 return isInCode; | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return true; | ||||
|             } | ||||
|     }, | ||||
|         { //header
 | ||||
| @ -2271,6 +2310,7 @@ $(editor.getInputField()) | ||||
|                 return '$1' + value; | ||||
|             }, | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     }, | ||||
| @ -2293,6 +2333,7 @@ $(editor.getInputField()) | ||||
|                 return '$1' + value; | ||||
|             }, | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     }, | ||||
| @ -2315,6 +2356,7 @@ $(editor.getInputField()) | ||||
|                 return '$1' + value; | ||||
|             }, | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     }, | ||||
| @ -2330,6 +2372,7 @@ $(editor.getInputField()) | ||||
|                 return '$1' + value; | ||||
|             }, | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     }, | ||||
| @ -2345,6 +2388,7 @@ $(editor.getInputField()) | ||||
|                 return '$1' + value; | ||||
|             }, | ||||
|             context: function (text) { | ||||
|                 checkCursorMenu(); | ||||
|                 return !isInCode; | ||||
|             } | ||||
|     } | ||||
| @ -2384,4 +2428,4 @@ $(editor.getInputField()) | ||||
|             $(this).data('autocompleting', false); | ||||
|             editor.setOption("extraKeys", defaultExtraKeys); | ||||
|         } | ||||
|     }); | ||||
|     }); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user