Je suis nouveau dans la création d'addins pour Visual Studio, mais j'ai réussi à construire un outil simpe pour VS2010 qui fait un peu de manipulation de texte dans la fenêtre de code actuellement active. Je suis au point où j'ai besoin de connaître la langue (VB.Net, C# ou autre) de la vue de texte en cours.Langue pour l'affichage de texte dans l'extension VS2010
J'ai essayé d'obtenir le nom de fichier (donc je peux regarder l'extension pour déterminer la langue) en utilisant le le code suivant:
IVsTextManager txtMgr = (IVsTextManager)GetService(typeof(SVsTextManager));
int mustHaveFocus = 1;//means true
txtMgr.GetActiveView(mustHaveFocus, null, out currentTextView);
userData = currentTextView as IVsUserData;
if (userData == null)// no text view
{
Console.WriteLine("No text view is currently open");
return;
}
object pathAsObject;
Guid monikerGuid = typeof(IVsUserData).GUID;
userData.GetData(ref monikerGuid, out pathAsObject);
string docPath = (string)pathAsObject;
Malheureusement pathAsObject retourne toujours null. Y a-t-il un autre moyen d'obtenir le nom de fichier/la langue?
Juste pour info, vous devriez essayer d'éviter snapshot.GetText(). Il est relativement coûteux pour le tampon de se transformer en une seule grande chaîne (elle est stockée dans un "arbre à morceaux", pas sous la forme d'une seule chaîne sous les couvertures). –
@Noah: Merci - c'est bon à savoir. – Kramii