Estou usando o Ace para uma experiência de edição colaborativa e quero poder rolar para a posição do cursor de outro usuário.
Vejo que existem editor.scrollToRow()
e editor.scrollToLine()
métodos, mas não consigo encontrar nenhum método que funcione com um objeto cursor
que tenha position
e selectionEnd
propriedades.
O que eu gostaria é poder rolar para uma posição, não apenas uma linha. Ou se houver uma maneira de converter uma posição em uma linha, isso também seria útil.
Obrigado!
Posição é um objeto como {linha, coluna}, portanto, obter uma linha dele é fácil usando position.row.
Você também pode usar
editor.renderer.scrollCursorIntoView({row: 50, column: 1}, 0.5)
(0,5 centraliza a linha na tela, use 1 para parte inferior 0 para parte superior)
Eu acho que estou em uma versão mais antiga, onde a posição é apenas a posição do personagem, mas isso será bom quando eu puder atualizar.
Deve ser outra coisa, esse código não mudou muito desde o início.
Se você tem índice de caracteres na string de valor editor.session.doc.indexToPosition(index)
pode ajudá-lo a obter {row, column}
mas essa é uma função relativamente lenta.
Obrigado pela resposta! Você está certo sobre a API do cursor Ace. Agora acho que tem a ver com o meu plugin Firepad fazendo algo estranho com ele, então não há nada de errado no lado do Ace.
Comentários muito úteis
Posição é um objeto como {linha, coluna}, portanto, obter uma linha dele é fácil usando position.row.
Você também pode usar
editor.renderer.scrollCursorIntoView({row: 50, column: 1}, 0.5)
(0,5 centraliza a linha na tela, use 1 para parte inferior 0 para parte superior)