手动更改ace行号

时间:2019-06-14 15:36:28

标签: ace-editor

我将ace编辑器用于多种用途,但一个用例是呈现差异。

渲染diff时,有规则线,绿线和红线,与git中显示的相同。我已经完成所有工作,但是现在我希望能够更改行号,以使行号仅出现在上一行和插入的行上,而我不想删除行上的行号。

我在ace API中找不到任何东西可以做到这一点,有人知道是否有简单的方法吗?切换到CodeMirror可能是最简单的方法,因为我看到它们具有以下功能:

  

lineNumberFormatter:函数(行:整数)→字符串

我可以手动更改DOM,但我担心的是:

  • 会密集吗?
  • 这是个坏主意吗,ACE以后是否会刷新它?

1 个答案:

答案 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#L185editor.renderer.$gutterLayer.update方法