|
|
@ -11,9 +11,13 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* Source on Github http://github.com/Seldaek/php-console
|
|
|
|
* Source on Github http://github.com/Seldaek/php-console
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
$(function() { |
|
|
|
(function() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var updateStatusBar, handleKeyPress, options; |
|
|
|
|
|
|
|
|
|
|
|
var updateStatusBar, handleKeyPress; |
|
|
|
options = { |
|
|
|
|
|
|
|
tab: ' ' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// updates the text of the status bar
|
|
|
|
// updates the text of the status bar
|
|
|
|
updateStatusBar = function() { |
|
|
|
updateStatusBar = function() { |
|
|
@ -35,12 +39,12 @@ $(function() { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
handleKeyPress = function(e) { |
|
|
|
handleKeyPress = function(e) { |
|
|
|
var caret, part, matches; |
|
|
|
var caret, part, matches, re; |
|
|
|
switch(e.keyCode) { |
|
|
|
switch(e.keyCode) { |
|
|
|
case 9: |
|
|
|
case 9: |
|
|
|
// add 4 spaces when tab is pressed
|
|
|
|
// add 4 spaces when tab is pressed
|
|
|
|
e.preventDefault(); |
|
|
|
e.preventDefault(); |
|
|
|
$(this).injectText(" "); |
|
|
|
$(this).injectText(options.tab); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 13: |
|
|
|
case 13: |
|
|
|
// submit form on ctrl-enter or alt-enter
|
|
|
|
// submit form on ctrl-enter or alt-enter
|
|
|
@ -53,7 +57,7 @@ $(function() { |
|
|
|
// indent automatically the new lines
|
|
|
|
// indent automatically the new lines
|
|
|
|
caret = $(this).getCaret(); |
|
|
|
caret = $(this).getCaret(); |
|
|
|
part = $(this).val().substr(0, caret); |
|
|
|
part = $(this).val().substr(0, caret); |
|
|
|
matches = part.match(/(\n +)[^\r\n]*$/); |
|
|
|
matches = part.match(/(\n[ \t]+)[^\r\n]*$/); |
|
|
|
if (matches) { |
|
|
|
if (matches) { |
|
|
|
$(this).val(function(idx, val) { |
|
|
|
$(this).val(function(idx, val) { |
|
|
|
return val.substring(0, caret) + matches[1] + val.substring(caret); |
|
|
|
return val.substring(0, caret) + matches[1] + val.substring(caret); |
|
|
@ -66,11 +70,12 @@ $(function() { |
|
|
|
// deindent automatically on backspace
|
|
|
|
// deindent automatically on backspace
|
|
|
|
caret = $(this).getCaret(); |
|
|
|
caret = $(this).getCaret(); |
|
|
|
part = $(this).val().substr(0, caret); |
|
|
|
part = $(this).val().substr(0, caret); |
|
|
|
if (part.match(/\n( {4,})$/)) { |
|
|
|
re = new RegExp('\n[ \t]*?'+options.tab+'$'); |
|
|
|
|
|
|
|
if (part.match(re)) { |
|
|
|
$(this).val(function(idx, val) { |
|
|
|
$(this).val(function(idx, val) { |
|
|
|
return val.substring(0, caret - 4) + val.substring(caret); |
|
|
|
return val.substring(0, caret - options.tab.length) + val.substring(caret); |
|
|
|
}); |
|
|
|
}); |
|
|
|
$(this).setCaret(caret - 4); |
|
|
|
$(this).setCaret(caret - options.tab.length); |
|
|
|
e.preventDefault(); |
|
|
|
e.preventDefault(); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -79,6 +84,10 @@ $(function() { |
|
|
|
updateStatusBar(); |
|
|
|
updateStatusBar(); |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$.console = function(settings) { |
|
|
|
|
|
|
|
$.extend(options, settings); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$(function() { |
|
|
|
$('textarea[name="code"]') |
|
|
|
$('textarea[name="code"]') |
|
|
|
.keyup(updateStatusBar) |
|
|
|
.keyup(updateStatusBar) |
|
|
|
.click(updateStatusBar) |
|
|
|
.click(updateStatusBar) |
|
|
@ -124,3 +133,6 @@ $(function() { |
|
|
|
.prependTo('.output'); |
|
|
|
.prependTo('.output'); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}()); |