From f1d5af1f40a764dd52d4bad92b72434e58de447f 2013-02-09 21:39:05 From: Matthias BUSSONNIER Date: 2013-02-09 21:39:05 Subject: [PATCH] monkey patch codemirror with new functionality use marijnh recommended way: https://github.com/marijnh/CodeMirror/pull/661 --- diff --git a/IPython/frontend/html/notebook/static/js/codecell.js b/IPython/frontend/html/notebook/static/js/codecell.js index cadc3c0..559d043 100644 --- a/IPython/frontend/html/notebook/static/js/codecell.js +++ b/IPython/frontend/html/notebook/static/js/codecell.js @@ -15,6 +15,32 @@ * @submodule CodeCell */ + +/* local util for codemirror */ +var posEq = function(a, b) {return a.line == b.line && a.ch == b.ch;} + +/** + * + * function to delete until previous non blanking space character + * or first multiple of 4 tabstop. + * @private + */ +CodeMirror.commands.delSpaceToPrevTabStop = function(cm){ + var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to); + if (!posEq(from, to)) {cm.replaceRange("", from, to); return} + var cur = cm.getCursor(), line = cm.getLine(cur.line); + var tabsize = cm.getOption('tabSize'); + var chToPrevTabStop = cur.ch-(Math.ceil(cur.ch/tabsize)-1)*tabsize; + var from = {ch:cur.ch-chToPrevTabStop,line:cur.line} + var select = cm.getRange(from,cur) + if( select.match(/^\ +$/) != null){ + cm.replaceRange("",from,cur) + } else { + cm.deleteH(-1,"char") + } +}; + + var IPython = (function (IPython) { "use strict";