2015-09-17 1 views
0

Je crée une extension assez simple pour Visual Studio. J'essaye de rendre l'extension seulement active en travaillant avec un type de dossier de python. J'ai trouvé this et j'ai essayé de l'appliquer à ma situation mais je pense qu'il me manque quelque chose. L'extension fonctionne correctement avec les fichiers python mais reste également active avec d'autres types de fichiers quand je voudrais qu'elle les ignore.Get Visual Studio Extension pour fonctionner uniquement avec des types de fichiers spécifiques

Jusqu'à présent, j'ai suivi la procédure pas à pas et fait de cette classe:

static class FileAndContentTypeDefinitions 
{ 
    [Export] 
    [Name("py")] 
    [BaseDefinition("text")] 
    internal static ContentTypeDefinition hidingContentTypeDefinition; 

    [Export] 
    [FileExtension(".py")] 
    [ContentType("py")] 
    internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition; 

} 

Ensuite, dans le SourceProvider et HandlerProvider je:

[Export] 
[ContentType("py")] 

Cela permet aux types de fichiers python pour travaux, mais ne pas désactiver l'extension lorsque d'autres types de fichiers sont ouverts. Y a-t-il un moyen d'accomplir cela?

EDIT: Je réalise que c'est trop ambigu. L'extension fournit une suggestion d'achèvement pour les commentaires doc python basés sur une signature de méthode se trouvant sur la ligne avant (le cas échéant). Ceci est déclenché quand '' 'est tapé. Je veux que cela n'arrive que dans les fichiers python.

Les autres exportations sont: De HandlerProvider

[Export] 
[ContentType("py")] 

[Export(typeof(IVsTextViewCreationListener))] 
[Name("token completion handler")] 
[ContentType("text")] 
[TextViewRole(PredefinedTextViewRoles.Editable)] 

De Source des informations

[Export] 
[ContentType("py")] 

[Export(typeof(ICompletionSourceProvider))] 
[ContentType("text")] 
[Name("token completion")] 

Puis-je ajouter aussi que je suivais le MSDN soluces assez près puisque c'est ma première incursion dans la création d'extension . Par conséquent, je ne suis pas sûr de pouvoir expliquer chaque partie du code (traduction: je ne sais pas ce que ça fait).

+0

Que voulez-vous dire par "désactiver l'extension"? Qu'est-ce que vous essayez d'empêcher? – SLaks

+0

Ah bon point. Donc l'extension fournit une complétion pour les commentaires de python doc, se déclenchant quand '' 'est tapé. Je veux que cela n'arrive que dans les fichiers python. –

+0

S'il vous plaît nous montrer vos services exportés. – SLaks

Répondre

0

Vous exportez vos fournisseurs & auditeurs pour les deux[ContentType("text")] et [ContentType("py")].

Ne faites pas cela.

De plus, votre deuxième attribut [Export] exportera en tant que classe elle-même, ce qui est inutile.

+0

Pouvez-vous développer un peu votre deuxième déclaration? Quelle deuxième exportation? Voulez-vous dire les deux? –

+0

Je veux dire celui qui ne spécifie pas une interface que VS importe. – SLaks

+0

J'ai essayé de simplement déclarer [ContentType ("py")] et supprimer les appels d'exportation supplémentaires. Rien ne se passe quand je tape '' 'maintenant. Probablement un autre problème ailleurs mais pour l'instant j'ai besoin de les rajouter pour restaurer la fonctionnalité. –