Arie Milner
Arie Milner

Reputation: 316

Manually change ace line numbers

I'm using the ace editor for multiple purposes but one use-case is to render diffs.

When you render a diff you have regular lines, green lines, and red lines, identical to what you would see in git. I have all that working, but now I I would like to be able to change the line numbers so that line numbers only appear on previous and inserted lines, I don't want line numbers on deleted lines.

I can't find anything in the ace API to do this, does anyone know if there is an easy way? It may be easiest to switch to CodeMirror because I see they have this:

lineNumberFormatter: function(line: integer) → string

I could manually change the DOM but my concern is:

Upvotes: 3

Views: 526

Answers (1)

a user
a user

Reputation: 24104

An equivalent of lineNumberFormatter in ace is gutterRenderer

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()

Another option is to redefine the editor.renderer.$gutterLayer.update method similar to https://github.com/c9/core/blob/master/plugins/c9.ide.scm/diff/unified.js#L185

Upvotes: 4

Related Questions