Файлы немерла не показывает стандартный ClassView. Посему начал прикручивать к Nemerle один из любимых плагинов
Source Outliner. Сразу наступил на мелкую проблемку: при инициализации плагина Document.ProjectItem почему-то null (для C# и VB.NET там лежит ProjectItem). Обошлось через Document.ActiveWindow.ProjectItem который оказывается установлен как надо. Но дальше — хуже — при обращении к projectItem.FileCodeModel.CodeElements всё зависает. Подозорение на компилятор немерла, но проверить возможности пока нет
![](/Forum/Images/frown.gif)
Если кто-нить может сходу врубиться/поправить -- буду очень благодарен и постараюсь довести поддержку немерла этим плагином до рабочего состояния или сделать его частью интеграции.
вот изменения которые я делал:
private void ContinueLoadingCodeModel()
{
ProjectItem projectItem = null;
try
{
// Read the code model only if the document and project item opened are not null.
if (_currentDocument != null)
{
projectItem = _currentDocument.ProjectItem;
if(projectItem == null)
projectItem = _currentDocument.ActiveWindow.ProjectItem;
}
if(projectItem == null)
{
State = OutlineFileManagerState.DoneLoadingCodeModel;
return;
}
}
catch (ArgumentException)
{
State = OutlineFileManagerState.DoneLoadingCodeModel;
return;
}
EnvDTE.FileCodeModel fileCodeModel = projectItem.FileCodeModel;
if (fileCodeModel == null)
{
State = OutlineFileManagerState.DoneLoadingCodeModel;
return;
}
// Only C# and VB are currently supported.
if ((fileCodeModel.Language != CodeModelLanguageConstants.vsCMLanguageCSharp)
&& (fileCodeModel.Language != CodeModelLanguageConstants.vsCMLanguageVB)
&& (fileCodeModel.Language != "EDCC3B79-0BAD-11DB-BC1A-00112FDE8B61")) //Nemerle
{
TreeView.Hide();
State = OutlineFileManagerState.DoneLoadingCodeModel;
return;
}
EnvDTE.CodeElements fileCodeElements = fileCodeModel.CodeElements;
^^^^^^^^^^^^^^^^^ ЗДЕСЬ ВИСНЕТ ^^^^^^^^^^^^^^^^^^^^^^^^
int nFileCodeElements = fileCodeElements.Count;
...