--- /dev/null
+(function() {
+ 'use strict';
+
+ var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/,
+ unorderedBullets = '*+-';
+
+ CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {
+ var pos = cm.getCursor(),
+ inList = cm.getStateAfter(pos.line).list,
+ match;
+
+ if (!inList || !(match = cm.getLine(pos.line).match(listRE))) {
+ cm.execCommand('newlineAndIndent');
+ return;
+ }
+
+ var indent = match[1], after = match[4];
+ var bullet = unorderedBullets.indexOf(match[2]) >= 0
+ ? match[2]
+ : (parseInt(match[3], 10) + 1) + '.';
+
+ cm.replaceSelection('\n' + indent + bullet + after, 'end');
+ };
+
+}());