2015-09-17 5 views
0

Я создаю довольно простое расширение для визуальной студии. Я пытаюсь сделать расширение только активным при работе с типом файла python. Я нашел this и попытался применить его к моей ситуации, но я думаю, что у меня что-то не хватает. Расширение работает правильно с файлами python, но также остается активным с другими типами файлов, когда я хочу, чтобы он их игнорировал.Получить Visual Studio Extension для работы только с определенными типами файлов

До сих пор, я последовал за прохождение игры и сделал этот класс:

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

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

} 

Затем в SourceProvider и HandlerProvider у меня есть:

[Export] 
[ContentType("py")] 

Это позволяет типы питон файлов на работу, но делает не отключать расширение, когда открыты другие типы файлов. Есть ли способ для этого?

EDIT: Я понимаю, что это слишком неоднозначно. Расширение предоставляет предложение о завершении комментариев python doc на основе сигнатуры метода, имеющей строку перед (если применимо). Это срабатывает, когда набирается символ '' '. Я хочу, чтобы это произошло только в файлах python.

другой экспорта являются: От HandlerProvider

[Export] 
[ContentType("py")] 

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

От источника поставки

[Export] 
[ContentType("py")] 

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

Я мог бы также добавить, что я последовал за MSDN прохождениям довольно близко, так как это мой первый набег на создание расширения , В результате, однако, я не уверен, что могу объяснить каждый бит кода (перевод: я не знаю, что это такое).

+0

Что вы подразумеваете под "отключить расширение"? Что вы пытаетесь предотвратить? – SLaks

+0

А хорошая точка. Таким образом, расширение обеспечивает завершение для комментариев python doc, запуск, когда набирается символ '' '. Я хочу, чтобы это произошло только в файлах python. –

+0

Пожалуйста, покажите нам свои экспортируемые услуги. – SLaks

ответ

0

Вы Экспортирование поставщикам & слушателей для как[ContentType("text")] и [ContentType("py")].

Не делайте этого.

Кроме того, ваш второй атрибут [Export] будет экспортироваться как сам этот класс, что бесполезно.

+0

Можете ли вы немного расширить свое второе заявление? Какой второй экспорт? Вы имеете в виду оба? –

+0

Я имею в виду тот, который не указывает интерфейс, который импортирует VS. – SLaks

+0

Пробовал просто объявить [ContentType («py»)] и удалить дополнительные вызовы экспорта. Ничего не происходит, когда я набираю '' 'сейчас. Вероятно, некоторые другие проблемы в другом месте, но теперь мне нужно добавить их обратно для восстановления функциональности. –