2014-09-30 120 views
0

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

我能想到的唯一解决办法是听的变化,存储它们,并应用所有增量来的所有标记。这似乎不是很有效率..

回答

2

目前将改变监听器唯一的办法。 Cloud9也是如此(请参阅https://github.com/c9/core/blob/4ee99bd/plugins/c9.ide.language.core/marker.js#L201

当然,如果您要添加多个标记,并且让某种树更好,但渲染器在所有标记上自行编码simply iterates,在将所有标记应用到所有标记变得缓慢之前,它将成为瓶颈,因此如果需要显示大量标记,则应在ace站点上打开一个问题以询问该功能,这似乎是应该是内置,而不是被所有人重新实现。

+0

感谢您指出我在这个方向,看起来像我在寻找的东西。它也似乎ext.language做了更多的东西,可能对我来说真的很有用。有没有关于如何开始使用它的文档? – 2014-09-30 16:41:43

+0

我认为不是----- – 2014-10-03 11:07:55

+0

您的链接已损坏。 – vqdave 2017-12-22 22:54:24

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');