summaryrefslogtreecommitdiff
path: root/public/js
diff options
context:
space:
mode:
authorCheng-Han, Wu2016-01-31 15:32:35 -0600
committerCheng-Han, Wu2016-01-31 15:32:35 -0600
commit2eec0ae35d32f18d082fe588e048f90296bd371c (patch)
treee337d2323b1c5f69662ccfb91ad29789bac4c695 /public/js
parenteb4cb3f52f9ff810c08b4ee745997f1601b4d9fc (diff)
Improved code block and emojiy textcomplete and match rules
Diffstat (limited to 'public/js')
-rw-r--r--public/js/index.js82
1 files changed, 63 insertions, 19 deletions
diff --git a/public/js/index.js b/public/js/index.js
index 80322c4e..96e614ef 100644
--- a/public/js/index.js
+++ b/public/js/index.js
@@ -2186,23 +2186,42 @@ function checkCursorMenu() {
var isInCode = false;
-function check(text) {
+function checkInCode() {
+ isInCode = checkAbove() && checkBelow();
+}
+
+function checkAbove() {
+ var cursor = editor.getCursor();
+ 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();
- text = [];
- for (var i = 0; i < cursor.line; i++)
+ 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);
}
- });
+ }); \ No newline at end of file