diff options
Diffstat (limited to 'www/wiki/extensions/CodeEditor/modules/ace/ext-statusbar.js')
-rw-r--r-- | www/wiki/extensions/CodeEditor/modules/ace/ext-statusbar.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/www/wiki/extensions/CodeEditor/modules/ace/ext-statusbar.js b/www/wiki/extensions/CodeEditor/modules/ace/ext-statusbar.js new file mode 100644 index 00000000..0c46b381 --- /dev/null +++ b/www/wiki/extensions/CodeEditor/modules/ace/ext-statusbar.js @@ -0,0 +1,53 @@ +ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { +"use strict"; +var dom = require("ace/lib/dom"); +var lang = require("ace/lib/lang"); + +var StatusBar = function(editor, parentNode) { + this.element = dom.createElement("div"); + this.element.className = "ace_status-indicator"; + this.element.style.cssText = "display: inline-block;"; + parentNode.appendChild(this.element); + + var statusUpdate = lang.delayedCall(function(){ + this.updateStatus(editor) + }.bind(this)).schedule.bind(null, 100); + + editor.on("changeStatus", statusUpdate); + editor.on("changeSelection", statusUpdate); + editor.on("keyboardActivity", statusUpdate); +}; + +(function(){ + this.updateStatus = function(editor) { + var status = []; + function add(str, separator) { + str && status.push(str, separator || "|"); + } + + add(editor.keyBinding.getStatusText(editor)); + if (editor.commands.recording) + add("REC"); + + var sel = editor.selection; + var c = sel.lead; + + if (!sel.isEmpty()) { + var r = editor.getSelectionRange(); + add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " "); + } + add(c.row + ":" + c.column, " "); + if (sel.rangeCount) + add("[" + sel.rangeCount + "]", " "); + status.pop(); + this.element.textContent = status.join(""); + }; +}).call(StatusBar.prototype); + +exports.StatusBar = StatusBar; + +}); + (function() { + ace.require(["ace/ext/statusbar"], function() {}); + })(); +
\ No newline at end of file |