2011-01-13 5 views
0

Я написал базовое расширение LanguageService для Visual Studio 2008 для собственного языка сценариев моей студии. Он отлично работает, и я реализовал базовую таблицу символов, чтобы отслеживать определения и вызовы скриптов, позволяющие использовать функции определения goto.Получение IVsTextLines из пути к файлу

Проблема, с которой я столкнулся, заключается в том, что я знаю, как анализировать текущий активный вид, и я хотел бы сканировать содержимое всего решения, чтобы пользователь мог определить определение скрипта, определенного в файле они еще не разобрались и разобрались. Я выяснил, как создать список всех файлов в решении, но теперь мне нужно создать новый файл Microsoft.VisualStudio.Package. Источник, для которого требуется Microsoft.VisualStudio.TextManager.Interop. IVsTextLines и я понятия не имею, как создать новый, основанный на файле, который у меня есть.

Возможно, проблема связана с неправильным способом, и кто-то может указать мне на лучший способ заставить файл разбираться с помощью LanguageService.

С уважением, Colin

ответ

0

Покопавшись я обнаружил, что причина Visual Studio необходим новый источник, что это держать внутренний список из них, и они, как взгляд в текстовый файл, проведенного редактором ,

Я пришел к выводу, что закрытые файлы не нуждаются в файлах IVsTextLines или должны быть введены во внутренний список VS исходных файлов, потому что я не делаю никаких операций непосредственно с ними, все, что мне нужно в этом случае для создания таблицы символов и их соответствующих TextSpan. Поэтому вместо этого я создал новый API для своего синтаксического анализатора, который только что взял строку и построил мой AST вместо того, чтобы захватывать текст из ParseRequest и беспокоился только о конкретных типах символов, которые мне нужно записывать. Затем я нажал эту кнопку в BackgroundWorker.

Итак, я думаю, что я ошибся с проблемой. Хотя это кажется странным, я не могу просто запустить файл, который будет открыт в списке Source.

Интересно, что я задал этот вопрос Microsoft на своих форумах поддержки, и они посоветовали мне, чтобы я купил часть услуг и план поддержки, чтобы они могли ответить на мой вопрос.