70 lines
2.2 KiB
JavaScript
Executable File
70 lines
2.2 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
var LineWidgets = require("ace/line_widgets").LineWidgets;
|
|
var Editor = require("ace/editor").Editor;
|
|
var Renderer = require("ace/virtual_renderer").VirtualRenderer;
|
|
var dom = require("ace/lib/dom");
|
|
|
|
|
|
require("ace/commands/default_commands").commands.push({
|
|
name: "openInlineEditor",
|
|
bindKey: "F3",
|
|
exec: function(editor) {
|
|
var split = window.env.split;
|
|
var s = editor.session;
|
|
var inlineEditor = new Editor(new Renderer());
|
|
var splitSession = split.$cloneSession(s);
|
|
|
|
var row = editor.getCursorPosition().row;
|
|
if (editor.session.lineWidgets && editor.session.lineWidgets[row]) {
|
|
editor.session.lineWidgets[row].destroy();
|
|
return;
|
|
}
|
|
|
|
var rowCount = 10;
|
|
var w = {
|
|
row: row,
|
|
// rowCount: rowCount,
|
|
fixedWidth: true,
|
|
el: dom.createElement("div"),
|
|
editor: inlineEditor
|
|
};
|
|
var el = w.el;
|
|
el.appendChild(inlineEditor.container);
|
|
|
|
if (!editor.session.widgetManager) {
|
|
editor.session.widgetManager = new LineWidgets(editor.session);
|
|
editor.session.widgetManager.attach(editor);
|
|
}
|
|
|
|
var h = rowCount*editor.renderer.layerConfig.lineHeight;
|
|
inlineEditor.container.style.height = h + "px";
|
|
|
|
el.style.position = "absolute";
|
|
el.style.zIndex = "4";
|
|
el.style.borderTop = "solid blue 2px";
|
|
el.style.borderBottom = "solid blue 2px";
|
|
|
|
inlineEditor.setSession(splitSession);
|
|
editor.session.widgetManager.addLineWidget(w);
|
|
|
|
var kb = {
|
|
handleKeyboard:function(_,hashId, keyString) {
|
|
if (hashId === 0 && keyString === "esc") {
|
|
w.destroy();
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
|
|
w.destroy = function() {
|
|
editor.keyBinding.removeKeyboardHandler(kb);
|
|
s.widgetManager.removeLineWidget(w);
|
|
};
|
|
|
|
editor.keyBinding.addKeyboardHandler(kb);
|
|
inlineEditor.keyBinding.addKeyboardHandler(kb);
|
|
inlineEditor.setTheme("ace/theme/solarized_light");
|
|
}
|
|
});
|