2016-08-23 2 views
1

Comment connaître les coordonnées d'un changement de texte au contrôle AvalonEdit? Il doit compléter le code, en utilisant Roslyn.Comment obtenir les coordonnées de changement de texte au contrôle AvalonEdit?

J'ai AvalonEdit contrôle et abonnez-vous sur TextEntering:

tbTextEditor.TextArea.TextEntering += TextEditor_exTtArea_TextEntering; 
tbTextEditor.TextArea.TextEntered += TextEditor_TextArea_TextEntered; 

private void TextEditor_TextArea_TextEntered(object sender, TextCompositionEventArgs e) 
    { 
    var textChanging=e.Text; 
    } 

Par exemple, le type i dot dans le contrôle; Donc, Text la valeur est '.';

Mais je dois savoir dans quelle partie du monde il se trouve?

Par exemple, j'ai le code comme ceci:

using System; 
class Test 
{ 
public int I=0; 
public void Completion() 
{ 
var test=new Test(); 
test. // here is my dot. 

test.I=10; // here is dot too. 
} 
} 

Alors, comment obtenir les coordonnées de test.?

+0

C'est une tâche très complexe, [la page d'accueil de AvalonEdit ] (http://avalonedit.net/documentation/html/47c58b63-f30c-4290-a2f2-881d21227446.htm), et des exemples dans [le SharpDevelop repo] (https://github.com/icsharpcode/SharpDevelop/blob/ b0838faf2d4b0c19003039cd48ae8cc49768f30f/src/AddIns/BackendBindings/TypeS cript/Project/Src/TypeScriptCompletionItemProvider.cs) devrait vous aider à démarrer – m0sa

Répondre

1

J'ai trouvé Caret propriété:

var caret = tbTextEditor.TextArea.Caret; 

Ensuite, je devrais utiliser Caret.Offset et faire TextSpan (classe Roslyn) pour faire la complétion de code:

TextSpan span = new TextSpan(caret.Offset, 1);