diff --git a/src/codeflask.js b/src/codeflask.js index abed387e..ee0a6a44 100644 --- a/src/codeflask.js +++ b/src/codeflask.js @@ -1,5 +1,5 @@ -function CodeFlask() { - +function CodeFlask(indent) { + this.indent = indent || " "; } CodeFlask.prototype.run = function(selector, opts) { @@ -109,11 +109,19 @@ CodeFlask.prototype.handleInput = function(textarea, highlightCode, highlightPre inputVal = input.value; // If TAB pressed, insert four spaces - if(e.keyCode === 9){ - input.value = inputVal.substring(0, selStartPos) + " " + inputVal.substring(selStartPos, input.value.length); - input.selectionStart = selStartPos + 4; - input.selectionEnd = selStartPos + 4; - e.preventDefault(); + if (e.keyCode === 9) { + e.preventDefault(); + + // Allow shift-tab if the 4 characters in front are spaces + if (e.shiftKey && inputVal.substring(selStartPos - self.indent.length, selStartPos) == self.indent) { + input.value = inputVal.substring(0, selStartPos - self.indent.length) + inputVal.substring(selStartPos, input.value.length); + input.selectionStart = selStartPos - self.indent.length; + input.selectionEnd = selStartPos - self.indent.length; + } else { + input.value = inputVal.substring(0, selStartPos) + self.indent + inputVal.substring(selStartPos, input.value.length); + input.selectionStart = selStartPos + self.indent.length; + input.selectionEnd = selStartPos + self.indent.length; + } highlightCode.innerHTML = input.value.replace(/&/g, "&") .replace(/