Ace: Comment faire défiler l'éditeur jusqu'à une position, pas seulement une ligne ?

Créé le 30 oct. 2015  ·  4Commentaires  ·  Source: ajaxorg/ace

J'utilise Ace pour une expérience d'édition collaborative et je souhaite pouvoir faire défiler jusqu'à la position du curseur d'un autre utilisateur.

Je vois qu'il y a des méthodes editor.scrollToRow() et editor.scrollToLine() , mais je n'arrive pas à trouver de méthode qui fonctionne avec un objet cursor qui a position et selectionEnd propriétés.

Ce que j'aimerais, c'est pouvoir faire défiler jusqu'à une position, pas seulement une ligne. Ou s'il existe un moyen de convertir une position en une ligne qui serait également utile.

Merci!

Commentaire le plus utile

La position est un objet comme {ligne, colonne}, il est donc facile d'en tirer une ligne en utilisant position.row.
Vous pouvez aussi utiliser
editor.renderer.scrollCursorIntoView({row: 50, column: 1}, 0.5) (0,5 centre la ligne à l'écran, utilisez 1 pour le bas 0 pour le haut)

Tous les 4 commentaires

La position est un objet comme {ligne, colonne}, il est donc facile d'en tirer une ligne en utilisant position.row.
Vous pouvez aussi utiliser
editor.renderer.scrollCursorIntoView({row: 50, column: 1}, 0.5) (0,5 centre la ligne à l'écran, utilisez 1 pour le bas 0 pour le haut)

Je suppose que je suis sur une ancienne version où la position n'est que la position du personnage, mais ce sera bien quand je pourrai mettre à niveau.

Ça doit être autre chose, ce code n'a pas beaucoup changé depuis le tout début.
Si vous avez un index de caractères dans la chaîne de valeur, editor.session.doc.indexToPosition(index) peut vous aider à obtenir {row, column} mais c'est une fonction relativement lente.

Merci pour la réponse! Vous avez raison à propos de l'API du curseur Ace. Je pense maintenant que cela a à voir avec mon plugin Firepad qui fait autre chose de bizarre avec, donc il n'y a rien de mal du côté Ace.

Cette page vous a été utile?
0 / 5 - 0 notes