Вручную изменить номера линий туза - PullRequest
0 голосов
/ 14 июня 2019

Я использую редактор ace для нескольких целей, но один из вариантов использования - рендеринг различий.

Когда вы визуализируете diff, у вас есть обычные линии, зеленые линии и красные линии, идентичные тем, которые вы видели бы в git. У меня все это работает, но теперь я хотел бы иметь возможность изменять номера строк так, чтобы номера строк появлялись только на предыдущих и вставленных строках, а я не хотел, чтобы номера строк на удаленных строках.

Я не могу найти что-либо в Ace API для этого, кто-нибудь знает, есть ли простой способ? Возможно, проще всего перейти на CodeMirror, потому что я вижу, что они имеют следующее:

lineNumberFormatter: функция (строка: целое число) → строка

Я мог бы вручную изменить DOM, но моя проблема:

  • Это будет интенсивно?
  • Это плохая идея, собирается ли АСЕ обновить ее позже?

1 Ответ

1 голос
/ 14 июня 2019

Эквивалентом lineNumberFormatter в тузе является 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()

Другой вариант - переопределить метод editor.renderer.$gutterLayer.update, аналогичный https://github.com/c9/core/blob/master/plugins/c9.ide.scm/diff/unified.js#L185

...