252 lines
7.1 KiB
JavaScript
252 lines
7.1 KiB
JavaScript
ace.define('ace/ext/options', ['require', 'exports', 'module' ], function(require, exports, module) {
|
|
|
|
|
|
var modesByName = modelist.modesByName;
|
|
|
|
var options = [
|
|
["Document", function(name) {
|
|
doclist.loadDoc(name, function(session) {
|
|
if (!session)
|
|
return;
|
|
session = env.split.setSession(session);
|
|
updateUIEditorOptions();
|
|
env.editor.focus();
|
|
});
|
|
}, doclist.all],
|
|
["Mode", function(value) {
|
|
env.editor.session.setMode(modesByName[value].mode || modesByName.text.mode);
|
|
env.editor.session.modeName = value;
|
|
}, function(value) {
|
|
return env.editor.session.modeName || "text"
|
|
}, modelist.modes],
|
|
["Split", function(value) {
|
|
var sp = env.split;
|
|
if (value == "none") {
|
|
if (sp.getSplits() == 2) {
|
|
env.secondSession = sp.getEditor(1).session;
|
|
}
|
|
sp.setSplits(1);
|
|
} else {
|
|
var newEditor = (sp.getSplits() == 1);
|
|
if (value == "below") {
|
|
sp.setOrientation(sp.BELOW);
|
|
} else {
|
|
sp.setOrientation(sp.BESIDE);
|
|
}
|
|
sp.setSplits(2);
|
|
|
|
if (newEditor) {
|
|
var session = env.secondSession || sp.getEditor(0).session;
|
|
var newSession = sp.setSession(session, 1);
|
|
newSession.name = session.name;
|
|
}
|
|
}
|
|
}, ["None", "Beside", "Below"]],
|
|
["Theme", function(value) {
|
|
if (!value)
|
|
return;
|
|
env.editor.setTheme("ace/theme/" + value);
|
|
themeEl.selectedValue = value;
|
|
}, function() {
|
|
return env.editor.getTheme();
|
|
}, {
|
|
"Bright": {
|
|
chrome: "Chrome",
|
|
clouds: "Clouds",
|
|
crimson_editor: "Crimson Editor",
|
|
dawn: "Dawn",
|
|
dreamweaver: "Dreamweaver",
|
|
eclipse: "Eclipse",
|
|
github: "GitHub",
|
|
solarized_light: "Solarized Light",
|
|
textmate: "TextMate",
|
|
tomorrow: "Tomorrow",
|
|
xcode: "XCode"
|
|
},
|
|
"Dark": {
|
|
ambiance: "Ambiance",
|
|
chaos: "Chaos",
|
|
clouds_midnight: "Clouds Midnight",
|
|
cobalt: "Cobalt",
|
|
idle_fingers: "idleFingers",
|
|
kr_theme: "krTheme",
|
|
merbivore: "Merbivore",
|
|
merbivore_soft: "Merbivore Soft",
|
|
mono_industrial: "Mono Industrial",
|
|
monokai: "Monokai",
|
|
pastel_on_dark: "Pastel on dark",
|
|
solarized_dark: "Solarized Dark",
|
|
twilight: "Twilight",
|
|
tomorrow_night: "Tomorrow Night",
|
|
tomorrow_night_blue: "Tomorrow Night Blue",
|
|
tomorrow_night_bright: "Tomorrow Night Bright",
|
|
tomorrow_night_eighties: "Tomorrow Night 80s",
|
|
vibrant_ink: "Vibrant Ink",
|
|
}
|
|
}],
|
|
["Code Folding", function(value) {
|
|
env.editor.getSession().setFoldStyle(value);
|
|
env.editor.setShowFoldWidgets(value !== "manual");
|
|
}, ["manual", "mark begin", "mark begin and end"]],
|
|
["Soft Wrap", function(value) {
|
|
value = value.toLowerCase()
|
|
var session = env.editor.getSession();
|
|
var renderer = env.editor.renderer;
|
|
session.setUseWrapMode(value == "off");
|
|
var col = parseInt(value) || null;
|
|
renderer.setPrintMarginColumn(col || 80);
|
|
session.setWrapLimitRange(col, col);
|
|
}, ["Off", "40 Chars", "80 Chars", "Free"]],
|
|
["Key Binding", function(value) {
|
|
env.editor.setKeyboardHandler(keybindings[value]);
|
|
}, ["Ace", "Vim", "Emacs", "Custom"]],
|
|
["Font Size", function(value) {
|
|
env.split.setFontSize(value + "px");
|
|
}, [10, 11, 12, 14, 16, 20, 24]],
|
|
["Full Line Selection", function(checked) {
|
|
env.editor.setSelectionStyle(checked ? "line" : "text");
|
|
}],
|
|
["Highlight Active Line", function(checked) {
|
|
env.editor.setHighlightActiveLine(checked);
|
|
}],
|
|
["Show Invisibles", function(checked) {
|
|
env.editor.setShowInvisibles(checked);
|
|
}],
|
|
["Show Gutter", function(checked) {
|
|
env.editor.renderer.setShowGutter(checked);
|
|
}],
|
|
["Show Indent Guides", function(checked) {
|
|
env.editor.renderer.setDisplayIndentGuides(checked);
|
|
}],
|
|
["Show Print Margin", function(checked) {
|
|
env.editor.renderer.setShowPrintMargin(checked);
|
|
}],
|
|
["Persistent HScroll", function(checked) {
|
|
env.editor.renderer.setHScrollBarAlwaysVisible(checked);
|
|
}],
|
|
["Animate Scrolling", function(checked) {
|
|
env.editor.setAnimatedScroll(checked);
|
|
}],
|
|
["Use Soft Tab", function(checked) {
|
|
env.editor.getSession().setUseSoftTabs(checked);
|
|
}],
|
|
["Highlight Selected Word", function(checked) {
|
|
env.editor.setHighlightSelectedWord(checked);
|
|
}],
|
|
["Enable Behaviours", function(checked) {
|
|
env.editor.setBehavioursEnabled(checked);
|
|
}],
|
|
["Fade Fold Widgets", function(checked) {
|
|
env.editor.setFadeFoldWidgets(checked);
|
|
}],
|
|
["Show Token info", function(checked) {
|
|
env.editor.setFadeFoldWidgets(checked);
|
|
}]
|
|
]
|
|
|
|
var createOptionsPanel = function(options) {
|
|
var html = []
|
|
var container = document.createElement("div");
|
|
container.style.cssText = "position: absolute; overflow: hidden";
|
|
var inner = document.createElement("div");
|
|
inner.style.cssText = "width: 120%;height:100%;overflow: scroll";
|
|
container.appendChild(inner);
|
|
html.push("<table><tbody>");
|
|
|
|
options.forEach(function(o) {
|
|
|
|
});
|
|
|
|
html.push(
|
|
'<tr>',
|
|
'<td>',
|
|
'<label for="', s,'"></label>',
|
|
'</td><td>',
|
|
'<input type="', s,'" name="', s,'" id="',s ,'">',
|
|
'</td>',
|
|
'</tr>'
|
|
)
|
|
html.push("</tbody></table>");
|
|
return container;
|
|
}
|
|
|
|
function bindCheckbox(id, callback) {
|
|
var el = document.getElementById(id);
|
|
if (localStorage && localStorage.getItem(id))
|
|
el.checked = localStorage.getItem(id) == "1";
|
|
|
|
var onCheck = function() {
|
|
callback(!!el.checked);
|
|
saveOption(el);
|
|
};
|
|
el.onclick = onCheck;
|
|
onCheck();
|
|
}
|
|
|
|
function bindDropdown(id, callback) {
|
|
var el = document.getElementById(id);
|
|
if (localStorage && localStorage.getItem(id))
|
|
el.value = localStorage.getItem(id);
|
|
|
|
var onChange = function() {
|
|
callback(el.value);
|
|
saveOption(el);
|
|
};
|
|
|
|
el.onchange = onChange;
|
|
onChange();
|
|
}
|
|
|
|
function fillOptgroup(list, el) {
|
|
list.forEach(function(item) {
|
|
var option = document.createElement("option");
|
|
option.setAttribute("value", item.name);
|
|
option.innerHTML = item.desc;
|
|
el.appendChild(option);
|
|
});
|
|
}
|
|
|
|
function fillDropdown(list, el) {
|
|
if (Array.isArray(list)) {
|
|
fillOptgroup(list, el);
|
|
return;
|
|
}
|
|
for(var i in list) {
|
|
var group = document.createElement("optgroup");
|
|
group.setAttribute("label", i);
|
|
fillOptgroup(list[i], group);
|
|
el.appendChild(group);
|
|
}
|
|
}
|
|
|
|
function createOptionControl(opt) {
|
|
if (opt.values) {
|
|
var el = dom.createElement("select");
|
|
el.setAttribute("size", opt.visibleSize || 1);
|
|
fillDropdown(opt.values, el)
|
|
} else {
|
|
var el = dom.createElement("checkbox");
|
|
}
|
|
el.setAttribute("name", "opt_" + opt.name)
|
|
return el;
|
|
}
|
|
|
|
function createOptionCell(opt) {
|
|
if (opt.values) {
|
|
var el = dom.createElement("select");
|
|
el.setAttribute("size", opt.visibleSize || 1);
|
|
fillDropdown(opt.values, el)
|
|
} else {
|
|
var el = dom.createElement("checkbox");
|
|
}
|
|
el.setAttribute("name", "opt_" + opt.name)
|
|
return el;
|
|
}
|
|
|
|
|
|
createOptionsPanel(options)
|
|
|
|
|
|
|
|
});
|
|
|