diff --git a/demo/static-highlighter/client-noconflict.html b/demo/static-highlighter/client-noconflict.html new file mode 100644 index 00000000..fa9d345d --- /dev/null +++ b/demo/static-highlighter/client-noconflict.html @@ -0,0 +1,71 @@ + + +
+ +Syntax highlighting using Ace language modes and themes.
+ +
+function wobble (flam) {
+ return flam.wobbled = true;
+}
+
+// the scrollbars are from overflow auto on .ace_editor.
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/ace/ext/static_highlight.js b/lib/ace/ext/static_highlight.js
index aa8c4ce6..4a44b22e 100644
--- a/lib/ace/ext/static_highlight.js
+++ b/lib/ace/ext/static_highlight.js
@@ -34,6 +34,55 @@ define(function(require, exports, module) {
var EditSession = require("../edit_session").EditSession;
var TextLayer = require("../layer/text").Text;
var baseStyles = require("../requirejs/text!./static.css");
+var config = require("../config");
+/**
+ * Transforms a given input code snippet into HTML using the given mode
+ *
+ * @param {string} input Code snippet
+ * @param {string|mode} mode String specifying the mode to load such as
+ * `ace/mode/javascript` or, a mode loaded from `/ace/mode`
+ * (use 'ServerSideHiglighter.getMode').
+ * @param {string|theme} theme String specifying the theme to load such as
+ * `ace/theme/twilight` or, a theme loaded from `/ace/theme`.
+ * @param {number} lineStart A number indicating the first line number. Defaults
+ * to 1.
+ * @param {boolean} disableGutter Specifies whether or not to disable the gutter.
+ * `true` disables the gutter, `false` enables the gutter. Defaults to `false`.
+ * @param {function} callback When specifying the mode or theme as a string,
+ * this method has no return value and you must specify a callback function. The
+ * callback will receive the rendered object containing the properties `html`
+ * and `css`.
+ * @returns {object} An object containing the properties `html` and `css`.
+ */
+
+exports.render = function(input, mode, theme, lineStart, disableGutter, callback) {
+ var waiting = 0
+
+ // if either the theme or the mode were specified as objects
+ // then we need to lazily load them.
+ if (typeof theme == "string") {
+ waiting++;
+ config.loadModule(['theme', theme], function (m) {
+ theme = m;
+ --waiting || done();
+ });
+ }
+
+ if (typeof mode == "string") {
+ waiting++;
+ config.loadModule(['mode', mode], function (m) {
+ mode = new m.Mode()
+ --waiting || done();
+ });
+ }
+
+ // loads or passes the specified mode module then calls renderer
+ function done() {
+ var result = exports.renderSync(input, mode, theme, lineStart, disableGutter);
+ return callback ? callback(result) : result;
+ }
+ return waiting || done();
+};
/* Transforms a given input code snippet into HTML using the given mode
*
@@ -43,12 +92,12 @@ var baseStyles = require("../requirejs/text!./static.css");
* @returns {object} An object containing: html, css
*/
-exports.render = function(input, mode, theme, lineStart, disableGutter) {
+exports.renderSync = function(input, mode, theme, lineStart, disableGutter) {
lineStart = parseInt(lineStart || 1, 10);
var session = new EditSession("");
- session.setMode(mode);
session.setUseWorker(false);
+ session.setMode(mode);
var textLayer = new TextLayer(document.createElement("div"));
textLayer.setSession(session);