Ace编辑器标记更新

问题描述 投票:0回答:2

当我向编辑器添加错误注释时,添加新行时它们的位置会自动更新。但是我如何才能为标记实现同样的目标呢?

我能想到的唯一解决方案是听取更改,存储它们,并将所有增量应用于所有标记。这似乎不是非常有效..

ace-editor
2个回答
2
投票

目前添加更改侦听器是唯一的方法。 Cloud9也是这样(参见https://github.com/c9/core/blob/4ee99bd/plugins/c9.ide.language.core/marker.js#L201

当然,如果要添加许多标记,并且拥有某种树会更好,但这并不是非常有效,但渲染器代码本身会对所有标记进行simply iterates,并且在将所有增量应用于所有标记之前它将成为瓶颈慢,所以如果你需要显示大量的标记,你应该在ace网站上打开一个问题,要求该功能,这似乎是应该内置的功能,而不是由每个人重新实现。


0
投票

我也遇到过这个问题,最后找到了一个华丽的演示来解决这个问题:Ace Editor Marker Popovers

以下是解决问题的关键代码:

var range = new Range(startRow, startColumn, endRow, endColumn);
var session = editor.getSession();

range.start = session.doc.createAnchor(range.start);
range.end = session.doc.createAnchor(range.end);

var id = session.addMarker(range, 'your_marker_class_name');
© www.soinside.com 2019 - 2024. All rights reserved.