411 lines
12 KiB
HTML
411 lines
12 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<base href="..">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Ace Profile util</title>
|
|
<link rel="stylesheet" href="demo/kitchen-sink/styles.css" type="text/css" media="screen" charset="utf-8">
|
|
<link href="../doc/site/images/favicon.ico" rel="icon" type="image/x-icon">
|
|
</head>
|
|
<body>
|
|
<div id="optionsPanel" style="position:absolute;height:100%;width:260px">
|
|
<a href="http://ajaxorg.github.com/ace/" >
|
|
<img id="logo" src="demo/kitchen-sink/logo.png">
|
|
</a>
|
|
<div style="position: absolute; overflow: hidden; top:80px; bottom:0">
|
|
<div style="width: 120%; height:100%; overflow-y: scroll">
|
|
|
|
<table id="controls">
|
|
<tr>
|
|
<td colspan="2">
|
|
<label for="profile">profile</label>
|
|
<input type="checkbox" checked id="profile"></input>
|
|
<label for="timeout">delay</label>
|
|
<input id="timeout" type="text" value="3" style="width:10em"></input>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<button onclick = "start(this.textContent)">scroll</button>
|
|
<button onclick = "start(this.textContent)">select</button>
|
|
<button onclick = "start(this.textContent)">type</button>
|
|
<button onclick = "start(this.textContent)">selectH</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<button onclick = "start(this.textContent)">tokenize</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label for="doc">Document</label>
|
|
</td><td>
|
|
<select id="doc" size="1">
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="mode">Mode</label>
|
|
</td><td>
|
|
<select id="mode" size="1">
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label for="split">Split</label>
|
|
</td><td>
|
|
<select id="split" size="1">
|
|
<option value="none">None</option>
|
|
<option value="below">Below</option>
|
|
<option value="beside">Beside</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="theme">Theme</label>
|
|
</td><td>
|
|
<select id="theme" size="1">
|
|
<optgroup label="Bright">
|
|
<option value="ace/theme/chrome">Chrome</option>
|
|
<option value="ace/theme/clouds">Clouds</option>
|
|
<option value="ace/theme/crimson_editor">Crimson Editor</option>
|
|
<option value="ace/theme/dawn">Dawn</option>
|
|
<option value="ace/theme/dreamweaver">Dreamweaver</option>
|
|
<option value="ace/theme/eclipse">Eclipse</option>
|
|
<option value="ace/theme/github">GitHub</option>
|
|
<option value="ace/theme/solarized_light">Solarized Light</option>
|
|
<option value="ace/theme/textmate" selected="selected">TextMate</option>
|
|
<option value="ace/theme/tomorrow">Tomorrow</option>
|
|
<option value="ace/theme/xcode">XCode</option>
|
|
</optgroup>
|
|
<optgroup label="Dark">
|
|
<option value="ace/theme/ambiance">Ambiance</option>
|
|
<option value="ace/theme/chaos">Chaos</option>
|
|
<option value="ace/theme/clouds_midnight">Clouds Midnight</option>
|
|
<option value="ace/theme/cobalt">Cobalt</option>
|
|
<option value="ace/theme/idle_fingers">idleFingers</option>
|
|
<option value="ace/theme/kr_theme">krTheme</option>
|
|
<option value="ace/theme/merbivore">Merbivore</option>
|
|
<option value="ace/theme/merbivore_soft">Merbivore Soft</option>
|
|
<option value="ace/theme/mono_industrial">Mono Industrial</option>
|
|
<option value="ace/theme/monokai">Monokai</option>
|
|
<option value="ace/theme/pastel_on_dark">Pastel on dark</option>
|
|
<option value="ace/theme/solarized_dark">Solarized Dark</option>
|
|
<option value="ace/theme/terminal">Terminal</option>
|
|
<option value="ace/theme/tomorrow_night">Tomorrow Night</option>
|
|
<option value="ace/theme/tomorrow_night_blue">Tomorrow Night Blue</option>
|
|
<option value="ace/theme/tomorrow_night_bright">Tomorrow Night Bright</option>
|
|
<option value="ace/theme/tomorrow_night_eighties">Tomorrow Night 80s</option>
|
|
<option value="ace/theme/twilight">Twilight</option>
|
|
<option value="ace/theme/vibrant_ink">Vibrant Ink</option>
|
|
</optgroup>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label for="fontsize">Font Size</label>
|
|
</td><td>
|
|
<select id="fontsize" size="1">
|
|
<option value="10px">10px</option>
|
|
<option value="11px">11px</option>
|
|
<option value="12px" selected="selected">12px</option>
|
|
<option value="13px">13px</option>
|
|
<option value="14px">14px</option>
|
|
<option value="16px">16px</option>
|
|
<option value="18px">18px</option>
|
|
<option value="20px">20px</option>
|
|
<option value="24px">24px</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label for="folding">Code Folding</label>
|
|
</td><td>
|
|
<select id="folding" size="1">
|
|
<option value="manual">manual</option>
|
|
<option value="markbegin" selected="selected">mark begin</option>
|
|
<option value="markbeginend">mark begin and end</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="keybinding">Key Binding</label>
|
|
</td><td>
|
|
<select id="keybinding" size="1">
|
|
<option value="ace">Ace</option>
|
|
<option value="vim">Vim</option>
|
|
<option value="emacs">Emacs</option>
|
|
<option value="custom">Custom</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="soft_wrap">Soft Wrap</label>
|
|
</td><td>
|
|
<select id="soft_wrap" size="1">
|
|
<option value="off">Off</option>
|
|
<option value="40">40 Chars</option>
|
|
<option value="80">80 Chars</option>
|
|
<option value="free">Free</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2">
|
|
<table id="more-controls">
|
|
<tr>
|
|
<td>
|
|
<label for="select_style">Full Line Selection</label>
|
|
</td><td>
|
|
<input type="checkbox" name="select_style" id="select_style" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label for="highlight_active">Highlight Active Line</label>
|
|
</td><td>
|
|
<input type="checkbox" name="highlight_active" id="highlight_active" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="show_hidden">Show Invisibles</label>
|
|
</td><td>
|
|
<input type="checkbox" name="show_hidden" id="show_hidden" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="display_indent_guides">Show Indent Guides</label>
|
|
</td><td>
|
|
<input type="checkbox" name="display_indent_guides" id="display_indent_guides" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="show_hscroll">Persistent HScroll</label>
|
|
</td><td>
|
|
<input type="checkbox" name="show_hscroll" id="show_hscroll">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="animate_scroll">Animate scrolling</label>
|
|
</td><td>
|
|
<input type="checkbox" name="animate_scroll" id="animate_scroll">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="show_gutter">Show Gutter</label>
|
|
</td><td>
|
|
<input type="checkbox" id="show_gutter" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="show_print_margin">Show Print Margin</label>
|
|
</td><td>
|
|
<input type="checkbox" id="show_print_margin" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="soft_tab">Use Soft Tab</label>
|
|
</td><td>
|
|
<input type="checkbox" id="soft_tab" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="highlight_selected_word">Highlight selected word</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="highlight_selected_word" checked>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="enable_behaviours">Enable Behaviours</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="enable_behaviours">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="fade_fold_widgets">Fade Fold Widgets</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="fade_fold_widgets">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="elastic_tabstops">Enable Elastic Tabstops</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="elastic_tabstops">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="isearch">Incremental Search</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="isearch">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="highlight_token">Show token info</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="highlight_token">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td >
|
|
<label for="read_only">Read-only</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="read_only">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<input type="button" value="Edit Snippets", onclick="env.editSnippets()">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="editor-container"></div>
|
|
|
|
<!--DEVEL-->
|
|
<script type="text/javascript">
|
|
var require = {
|
|
baseUrl: window.location.protocol + "//" + window.location.host + window.location.pathname.split("/").slice(0, -1).join("/"),
|
|
paths: {
|
|
ace: "../lib/ace"
|
|
}
|
|
};
|
|
</script>
|
|
<script src="demo/kitchen-sink/require.js" data-main="../demo/kitchen-sink/demo" type="text/javascript"></script>
|
|
|
|
<script>
|
|
if (!Date.now) {
|
|
Date.now = function() { return (new Date()).getTime() };
|
|
}
|
|
|
|
|
|
var scrollTop, startTime;
|
|
var timeout, speed, next
|
|
var editor, shouldProfile;
|
|
|
|
function start(testName) {
|
|
editor = env.editor
|
|
timeout = parseInt(document.getElementById("timeout").value);
|
|
shouldProfile = document.getElementById("profile").checked;
|
|
|
|
startTime = Date.now()
|
|
shouldProfile && console.profile()
|
|
|
|
speed = 10;
|
|
next = window[testName + "Next"];
|
|
|
|
window[testName + "Start"] && window[testName + "Start"]()
|
|
setTimeout(next, 1);
|
|
}
|
|
function end(){
|
|
shouldProfile && console.profileEnd()
|
|
var dt = startTime - Date.now()
|
|
console.log(dt)
|
|
ace.cmdLine.setValue(dt+"", 1)
|
|
}
|
|
|
|
/*editor.renderer.scrollToY(0);
|
|
editor.navigateFileStart(0);
|
|
*/
|
|
|
|
var scrollNext = function() {
|
|
var r = editor.renderer
|
|
for (var i = speed; i--; )
|
|
r.scrollBy(0, 1)
|
|
if (r.scrollTop + r.layerConfig.height > r.layerConfig.maxHeight - 20)
|
|
end()
|
|
else
|
|
setTimeout(next, timeout, speed++)
|
|
}
|
|
|
|
var selectNext = function() {
|
|
var r = editor.renderer
|
|
for (var i = speed; i-- > 0; )
|
|
editor.selection.selectDown()
|
|
if (r.scrollTop + r.layerConfig.height > r.layerConfig.maxHeight - 20)
|
|
end()
|
|
else
|
|
setTimeout(next, timeout, speed+=0.1)
|
|
}
|
|
|
|
var selectHNext = function() {
|
|
var r = editor.renderer
|
|
for (var i = speed; i-- > 0; )
|
|
editor.selection.selectRight()
|
|
if (r.scrollTop + r.layerConfig.height > r.layerConfig.maxHeight - 20)
|
|
end()
|
|
else
|
|
setTimeout(next, timeout, speed+=0.1)
|
|
}
|
|
|
|
var typeChars = start.toString().split("")
|
|
var typeNext = function() {
|
|
var r = editor.renderer
|
|
for (var i = speed; i--; )
|
|
editor.insert(typeChars[i % typeChars.length])
|
|
if (speed == 100)
|
|
end()
|
|
else
|
|
setTimeout(next, timeout, speed++)
|
|
}
|
|
|
|
var tokenizer, state, lines, chunk
|
|
var tokenizeStart = function() {
|
|
var b = ace.session.bgTokenizer
|
|
state = null
|
|
tokenizer = b.tokenizer
|
|
lines = b.doc.getAllLines()
|
|
chunk = 1000
|
|
}
|
|
|
|
var tokenizeNext = function() {
|
|
var states = []
|
|
for (var i = 0, l = lines.length; i < l; i++) {
|
|
state = tokenizer.getLineTokens(lines[i], state).state
|
|
}
|
|
states.push(state)
|
|
if (speed-- > 3)
|
|
setTimeout(next, timeout)
|
|
else
|
|
end()
|
|
}
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|