2014-09-30 119 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');