list toggle

patch-ionaru
Lukasz Ostrowski 8 years ago
parent 6abda7ab68
commit c849cc95b2

@ -896,18 +896,21 @@ function _toggleLine(cm, name) {
if(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className)) if(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className))
return; return;
var listRegexp = /^(\s*)(\*|\-|\+|\d*\.)(\s+)/;
var whitespacesRegexp = /^\s*/;
var stat = getState(cm); var stat = getState(cm);
var startPoint = cm.getCursor("start"); var startPoint = cm.getCursor("start");
var endPoint = cm.getCursor("end"); var endPoint = cm.getCursor("end");
var repl = { var repl = {
"quote": /^(\s*)\>\s+/, "quote": /^(\s*)\>\s+/,
"unordered-list": /^(\s*)(\*|\-|\+)\s+/, "unordered-list": listRegexp,
"ordered-list": /^(\s*)\d+\.\s+/ "ordered-list": listRegexp,
}; };
var map = { var map = {
"quote": "> ", "quote": ">",
"unordered-list": "* ", "unordered-list": "*",
"ordered-list": "1. " "ordered-list": "1."
}; };
for(var i = startPoint.line; i <= endPoint.line; i++) { for(var i = startPoint.line; i <= endPoint.line; i++) {
(function(i) { (function(i) {
@ -915,7 +918,16 @@ function _toggleLine(cm, name) {
if(stat[name]) { if(stat[name]) {
text = text.replace(repl[name], "$1"); text = text.replace(repl[name], "$1");
} else { } else {
text = map[name] + text; var arr = listRegexp.exec(text);
if (arr !== null && arr[1]) {
var char = map[name];
if (arr[2] && arr[2] == map[name]) {
char = '';
}
text = arr[1] + char + arr[3] +text.replace(whitespacesRegexp, '').replace(repl[name], "$1") ;
} else {
text = map[name] + ' ' + text
}
} }
cm.replaceRange(text, { cm.replaceRange(text, {
line: i, line: i,

Loading…
Cancel
Save