我将ace编辑器用于多种用途,但一个用例是呈现差异。
渲染diff时,有规则线,绿线和红线,与git中显示的相同。我已经完成所有工作,但是现在我希望能够更改行号,以使行号仅出现在上一行和插入的行上,而我不想删除行上的行号。
我在ace API中找不到任何东西可以做到这一点,有人知道是否有简单的方法吗?切换到CodeMirror可能是最简单的方法,因为我看到它们具有以下功能:
lineNumberFormatter:函数(行:整数)→字符串
我可以手动更改DOM,但我担心的是:
答案 0 :(得分:1)
gutterRenderer相当于ace中的lineNumberFormatter
editor.session.gutterRenderer = {
getWidth: function(session, lastLineText, config) {
return lastLineText.length * config.characterWidth //desired gutter width in pixels
},
getText: function(session, row) {
return row.toString(36) // any string
}
}
editor.renderer.updateFull()
另一种选择是重新定义类似于https://github.com/c9/core/blob/master/plugins/c9.ide.scm/diff/unified.js#L185的editor.renderer.$gutterLayer.update
方法