From 12a8f2e81cfc4382ad640a199531923e2e63af9a Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Fri, 20 Sep 2013 17:33:11 +0100 Subject: [PATCH] Wrap in if plus delays on findReplace onKeyEvent actually happens on multiple events (keypress and keyup at least) Wrapped in an if statement now so we only trigger half the time, meaning half the work, meaning improved usage Clear any existing timeouts and set a new Timeout to trigger the findReplace action in 0.5s This means as you type it's continually clearing & setting timeouts When you pause typing for more then 0.5s, then it'll trigger the findReplace The result is no lag whilst typing and giving find results within inactivity time only --- editor.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/editor.php b/editor.php index 99e07e6..1ca9028 100644 --- a/editor.php +++ b/editor.php @@ -179,12 +179,19 @@ function createNewCMInstance(num) { lintWith: -1 ? CodeMirror.javascriptValidator : ';};?>false, keyMap: "ICEcoder", onKeyEvent: function(thisCM, e) { - top.ICEcoder.redoChangedContent(e); - top.ICEcoder.findReplace(top.document.getElementById('find').value,true,false); - top.ICEcoder.getCaretPosition(); - top.ICEcoder.updateCharDisplay(); - top.ICEcoder.updateByteDisplay(); - tok = thisCM.getTokenAt(thisCM.getCursor()); + if (e.type=="keyup") { + top.ICEcoder.redoChangedContent(e); + if ("undefined" != typeof top.doFind) { + clearInterval(top.doFind); + } + top.doFind = setTimeout(function() { + top.ICEcoder.findReplace(top.document.getElementById('find').value,true,false); + },500); + top.ICEcoder.getCaretPosition(); + top.ICEcoder.updateCharDisplay(); + top.ICEcoder.updateByteDisplay(); + tok = thisCM.getTokenAt(thisCM.getCursor()); + } } });