Skip to content

Commit 6f98ce5

Browse files
committed
workaround for xml weirdness
1 parent 34e9a5a commit 6f98ce5

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

demo/svg.svg

+11
Loading

demo/xml.xml

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4+
<head>
5+
<meta charset="UTF-8"></meta>
6+
<title>ACE Autocompletion demo</title>
7+
<style type="text/css" media="screen">
8+
body { overflow: hidden; }
9+
#editor {
10+
margin: 0; position: absolute;
11+
top: 0; bottom: 0; left: 0; right: 0;
12+
}
13+
</style>
14+
</head>
15+
<body>
16+
<pre id="editor"></pre>
17+
18+
<script src="kitchen-sink/require.js"></script>
19+
<script><![CDATA[
20+
// setup paths
21+
require.config({paths: { "ace" : "../lib/ace"}});
22+
// load ace and extensions
23+
require(["ace/ace", "ace/ext/language_tools"], function(ace) {
24+
var langagueTools = require("ace/ext/language_tools");
25+
var editor = ace.edit("editor");
26+
editor.session.setMode("ace/mode/xml");
27+
editor.setTheme("ace/theme/tomorrow");
28+
});
29+
]]></script>
30+
31+
<script src="./show_own_source.js"></script>
32+
</body>
33+
</html>

lib/ace/layer/text.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ var Text = function(parentEl) {
321321

322322
this.$renderToken = function(stringBuilder, screenColumn, token, value) {
323323
var self = this;
324-
var replaceReg = /\t|&|<|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g;
324+
var replaceReg = /\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g;
325325
var replaceFunc = function(c, a, b, tabIdx, idx4) {
326326
if (a) {
327327
return self.showInvisibles
@@ -331,6 +331,9 @@ var Text = function(parentEl) {
331331
return "&#38;";
332332
} else if (c == "<") {
333333
return "&#60;";
334+
} else if (c == ">") {
335+
// normally escaping this is not needed, but xml documents throw error when setting innerHTML to ]]>
336+
return "&#62;";
334337
} else if (c == "\t") {
335338
var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);
336339
screenColumn += tabSize - 1;

0 commit comments

Comments
 (0)