diff --git a/README.md b/README.md index fa160c0..0c1be55 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,7 @@ code | toggleCodeBlock | Code (Ctrl+Alt+C)
fa fa-code quote | toggleBlockquote | Quote (Ctrl+')
fa fa-quote-left unordered-list | toggleUnorderedList | Generic List (Ctrl+L)
fa fa-list-ul ordered-list | toggleOrderedList | Numbered List (Ctrl+Alt+L)
fa fa-list-ol +clean-block | cleanBlock | Clean block (Ctrl+E)
fa fa-eraser fa-clean-block link | drawLink | Create Link (Ctrl+K)
fa fa-link image | drawImage | Insert Image (Ctrl+Alt+I)
fa fa-picture-o table | drawTable | Insert Table
fa fa-table diff --git a/src/js/simplemde.js b/src/js/simplemde.js index dfe4401..a84fe25 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -22,6 +22,7 @@ var shortcuts = { "Cmd-K": drawLink, "Cmd-H": toggleHeadingSmaller, "Shift-Cmd-H": toggleHeadingBigger, + "Cmd-E": cleanBlock, "Cmd-Alt-I": drawImage, "Cmd-'": toggleBlockquote, "Cmd-Alt-L": toggleOrderedList, @@ -265,6 +266,14 @@ function toggleOrderedList(editor) { _toggleLine(cm, "ordered-list"); } +/** + * Action for clean block (remove headline, list, blockquote code, markers) + */ +function cleanBlock(editor) { + var cm = editor.codemirror; + _cleanBlock(cm); +} + /** * Action for drawing a link. */ @@ -629,6 +638,28 @@ function _toggleBlock(editor, type, start_chars, end_chars) { cm.focus(); } +function _cleanBlock(cm) { + if(/editor-preview-active/.test(cm.getWrapperElement().lastChild.className)) + return; + + var startPoint = cm.getCursor("start"); + var endPoint = cm.getCursor("end"); + var text; + + for(var line = startPoint.line; line <= endPoint.line; line++) { + text = cm.getLine(line); + text = text.replace(/^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/, ""); + + cm.replaceRange(text, { + line: line, + ch: 0 + }, { + line: line, + ch: 99999999999999 + }); + } +} + // Merge the properties of one object into another. function _mergeProperties(target, source) { for(var property in source) { @@ -763,6 +794,12 @@ var toolbarBuiltInButtons = { title: "Numbered List (Ctrl+Alt+L)", default: true }, + "clean-block": { + name: "clean-block", + action: cleanBlock, + className: "fa fa-eraser fa-clean-block", + title: "Clean block (Ctrl+E)" + }, "separator-2": { name: "separator-2" }, @@ -1354,6 +1391,7 @@ SimpleMDE.toggleHeading3 = toggleHeading3; SimpleMDE.toggleCodeBlock = toggleCodeBlock; SimpleMDE.toggleUnorderedList = toggleUnorderedList; SimpleMDE.toggleOrderedList = toggleOrderedList; +SimpleMDE.cleanBlock = cleanBlock; SimpleMDE.drawLink = drawLink; SimpleMDE.drawImage = drawImage; SimpleMDE.drawTable = drawTable; @@ -1403,6 +1441,9 @@ SimpleMDE.prototype.toggleUnorderedList = function() { SimpleMDE.prototype.toggleOrderedList = function() { toggleOrderedList(this); }; +SimpleMDE.prototype.cleanBlock = function() { + cleanBlock(this); +}; SimpleMDE.prototype.drawLink = function() { drawLink(this); };