diff options
Diffstat (limited to 'static')
-rw-r--r-- | static/edit.js | 83 | ||||
-rw-r--r-- | static/paste.css | 18 |
2 files changed, 101 insertions, 0 deletions
diff --git a/static/edit.js b/static/edit.js new file mode 100644 index 0000000..8e754d8 --- /dev/null +++ b/static/edit.js @@ -0,0 +1,83 @@ +function tab_add(t, ti, ss, se) { + t.value = t.value.substr(0, ti) + "\t" + t.value.substr(ti); + t.selectionStart = ss + 1; + t.selectionEnd = se + 1; +} + +function tab_remove(t, ti, ss, se) { + t.value = t.value.substr(0, ti-1) + t.value.substr(ti); + t.selectionStart = ss - 1; + t.selectionEnd = se - 1; +} + +function textarea_handle_tab(t, e) { + if(navigator.userAgent.match("Gecko")) { + keyCode = e.which; + } else { + keyCode = e.keyCode; + } + if(keyCode != 9) + return; + e.preventDefault(); + var ss = t.selectionStart; + var se = t.selectionEnd; + if(ss == se) { + if(e.shiftKey) { + if(t.value[ss-1] == "\t") { + tab_remove(t, ss, ss, se); + } + } else { + tab_add(t, ss, ss, se); + } + } else { + var s; + if(ss < se) + s = t.value.substr(ss, se - ss); + else + s = t.value.substr(se, ss - se); + if(s.indexOf("\n") > -1) { + var nl = s.lastIndexOf("\n"); + if(e.shiftKey) { + while(nl > -1) { + if(s[nl+1] == "\t") { + tab_remove(t, ss + nl + 2, ss, se); + se--; + } + nl = s.lastIndexOf("\n", nl - 2); + } + if(t.value[(ss < se ? ss : se)-1] == "\n" && e.shiftKey) + tab_remove(t, ss+1, ss, se); + if((ss == 0 || se == 0) && t.value[0] == "\t") + tab_remove(t, 1, ss, se); + } else { + while(nl > -1) { + tab_add(t, ss + nl + 1, ss, se); + se++; + if(nl == 0) + break; + nl = s.lastIndexOf("\n", nl - 2); + } + if(ss == 0 || se == 0 || t.value[(ss < se ? ss : se)-1] == "\n") + tab_add(t, ss, ss-1, se); + } + + } else { + var nl = t.value.lastIndexOf("\n", (ss < se ? se : ss) - 1) + 1; + if(e.shiftKey) { + if(t.value[nl] == "\t") { + tab_remove(t, nl + 1, ss, se); + } + } else { + tab_add(t, nl, ss, se); + } + } + } + setTimeout("document.getElementById('" + t.id + "').focus();", 0); +} + +window.onload = function() { + text = document.getElementById("text"); + text.onkeydown = function(event) { + return textarea_handle_tab(text, event); + } +} diff --git a/static/paste.css b/static/paste.css new file mode 100644 index 0000000..11e15a0 --- /dev/null +++ b/static/paste.css @@ -0,0 +1,18 @@ +html, body { margin: 0; padding: 0; font-family: sans-serif; background-color: #fff; color: #000; } +div#page { background: #eee; margin: 1em; } +div#page-header, div#page-content { padding: 1em; } +div#page-header h1 a { color: inherit; } +div#page-header h1 a:hover { text-decoration: none; } +a { color: #00f; text-decoration: none; } +a:hover { text-decoration: underline; } +form#pasteform ul { list-style-type: none; } +div#info { font-size: small; color: #bbb; } +span#nick, span#date, span#syntax-type { color: #888; } +div#alt-links { font-size: small; } +div#alt-links a { color: #44f; } +.highlighttable { width: 100%; padding-top: 1em; } +.highlighttable td.code { width: 100%; background-color: #fff; } +.highlighttable td { vertical-align: top; } +.highlighttable pre { margin: 0; padding: 0; } +.highlighttable .linenos { text-align: right; padding-left: .5em; padding-right: .5em; } +.highlighttable .linenos a { color: #888; } |