diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js index 81c9773a..4df72736 100644 --- a/lib/ace/lib/dom.js +++ b/lib/ace/lib/dom.js @@ -33,6 +33,12 @@ define(function(require, exports, module) { var XHTML_NS = "http://www.w3.org/1999/xhtml"; +exports.getDocumentHead = function(doc) { + if (!doc) + doc = document; + return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; +} + exports.createElement = function(tag, ns) { return document.createElementNS ? document.createElementNS(ns || XHTML_NS, tag) : @@ -134,8 +140,7 @@ exports.importCssString = function importCssString(cssText, id, doc) { if (id) style.id = id; - var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; - head.appendChild(style); + exports.getDocumentHead(doc).appendChild(style); } }; @@ -147,8 +152,7 @@ exports.importCssStylsheet = function(uri, doc) { link.rel = 'stylesheet'; link.href = uri; - var head = doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; - head.appendChild(link); + exports.getDocumentHead(doc).appendChild(link); } }; diff --git a/lib/ace/lib/net.js b/lib/ace/lib/net.js index e125582e..3869da45 100644 --- a/lib/ace/lib/net.js +++ b/lib/ace/lib/net.js @@ -7,6 +7,7 @@ */ define(function(require, exports, module) { "use strict"; +var dom = require("./dom"); exports.get = function (url, callback) { var xhr = new XMLHttpRequest(); @@ -22,18 +23,19 @@ exports.get = function (url, callback) { }; exports.loadScript = function(path, callback) { - var head = document.head || document.getElementsByTagName('head')[0]; + var head = dom.getDocumentHead(); var s = document.createElement('script'); s.src = path; head.appendChild(s); - if (s.onload !== undefined) - s.onload = callback; - else - s.onreadystatechange = function () { - this.readyState == 'loaded' && callback(); - }; + s.onload = s.onreadystatechange = function(_, isAbort) { + if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { + s = s.onload = s.onreadystatechange = null; + if (!isAbort) + callback(); + } + }; }; }); diff --git a/lib/ace/mode/_test/text_markdown.txt b/lib/ace/mode/_test/text_markdown.txt index f3c044c6..ecaa01b9 100644 --- a/lib/ace/mode/_test/text_markdown.txt +++ b/lib/ace/mode/_test/text_markdown.txt @@ -9,11 +9,13 @@ test: header ends with '#' test: 6+ #s is not a valid header ####### foo test: # followed be only space is not a valid header +# test: only space between #s is not a valid header # # # test links [Cloud9 IDE](http://www.c9.io/) # * [demo](http://ajaxorg.github.com/ace/) +* usually *work* fine (_em_) in lists in plain text http://ace.ajaxorg.com diff --git a/lib/ace/mode/_test/tokens_markdown.json b/lib/ace/mode/_test/tokens_markdown.json index 63a9650e..91f7f992 100644 --- a/lib/ace/mode/_test/tokens_markdown.json +++ b/lib/ace/mode/_test/tokens_markdown.json @@ -35,6 +35,9 @@ ],[ "start", ["text","test: # followed be only space is not a valid header"] +],[ + "start", + ["text","# "] ],[ "start", ["text","test: only space between #s is not a valid header"] @@ -62,6 +65,13 @@ ["markup.underline","http://ajaxorg.github.com/ace/"], ["text",")"], ["markup.list"," "] +],[ + "listblock", + ["markup.list","* usually "], + ["string","*work*"], + ["markup.list"," fine ("], + ["string","_em_"], + ["markup.list",")"] ],[ "listblock", ["markup.list","in lists"] diff --git a/lib/ace/mode/markdown_highlight_rules.js b/lib/ace/mode/markdown_highlight_rules.js index 39b95fc8..97d3c182 100644 --- a/lib/ace/mode/markdown_highlight_rules.js +++ b/lib/ace/mode/markdown_highlight_rules.js @@ -150,12 +150,12 @@ var MarkdownHighlightRules = function() { token : "empty_line", regex : "^$", next : "start" - }, { - include : "basic", noEscape: true }, { // list token : "markup.list", regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", next : "listblock-start" + }, { + include : "basic", noEscape: true }, { defaultToken : "markup.list" } ],