             When the student code changes, run it through the
             interpreter to figure out commands remaining.
         ###
-        if @scanTimer?
-            window.clearTimeout @scanTimer
-            @scanTimer = null
-        @scanTimer = window.setTimeout @scan, 500
+        if @editorConfig.freeformEditting
+            if @scanTimer?
+                window.clearTimeout @scanTimer
+                @scanTimer = null
+            @scanTimer = window.setTimeout @scan, 300
+        else
+        @UpdateCommandsStatus null
         if @onStudentCodeChangeCallback?
             @onStudentCodeChangeCallback changeData
         return

            setTimeout @moveEditorButtons, @moveEditorButtonDelay
            return
        ed.editSession.on 'changeScrollTop', updateMove
        normalResize = ed.editor.renderer.onResize.bind ed.editor.renderer
        addOurResize = (force, gutterWidth, width, height) ->
            normalResize(force, gutterWidth, width, height)

            button = buttonField.find "##{command}"
            line = @editor.createBlankFunctionHeader command

            if remaining != null
                usesRemaining = remaining[command]
            else
                usesRemaining = @commands[command]['usesRemaining']
            if usesRemaining <= 0
                button.attr 'disabled', true
                if usesRemaining < 0
