我想在ace编辑器中突出显示单个字符(在给定位置)。我似乎可以使用addMarker
,但文档几乎不存在,我无法理解我的尝试中发生了什么。
以下是一次快速演示尝试(fiddle):
setInterval(function () {
if (currentMarker) {
editor.session.removeMarker(currentMarker);
}
currentMarker = editor.session.addMarker(new Range(1, x, 2, x+1), "marked", "text", false);
x = ++x % 25;
}, 250);
我希望期望突出显示单个字符,并且每隔四分之一标记应切换到旁边的字符。但事实并非如此。
我的问题在这里 *为什么这样做? *我如何让它按照我想要的方式行事? *我读到了“动态”标记,但无法找到有关这些标记的任何信息。那么 - 他们是什么?
答案 0 :(得分:3)
您需要为标记的类添加position: absolute;
,并在范围的开头和结尾使用相同的行new Range(1, x, 1, x+1)
var editor = ace.edit("editor");
editor.setTheme("ace/theme/chrome");
editor.getSession().setMode("ace/mode/javascript");
var Range = ace.require('ace/range').Range;
var currentMarker;
var x = 0;
setInterval(function () {
if (currentMarker)
editor.session.removeMarker(currentMarker);
currentMarker = editor.session.addMarker(new Range(1, x, 1, x+1), "marked", "text", false);
x = ++x % 25;
}, 250);

#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.marked {
background: red;
color: red;
position: absolute;
}

<div id="editor">function foo(items) { var x = "All this is syntax highlighted"; return x; }
function foo(items) { var x = "All this is syntax highlighted"; return x; }
function foo(items) { var x = "All this is syntax highlighted"; return x; }</div>
<script src="//cdn.jsdelivr.net/ace/1.1.7/min/ace.js" type="text/javascript" charset="utf-8"></script>
&#13;