Здравствуйте, AndrewVK, Вы писали:
Д>>хотя там еще что-то из VisualStudioIntegration\Tools вроде бы нужно. Как минимум таргеты для msbuild
AVK>Не знаю, у меня никаких таргетов не используется.
в самом файле я не копался, но предположить нетрудно — эта штука отвечает за регистрацию плагина в студии.
Так что нужно или тащить за собой этот файл с его зависимостями, или писать хоть какой-то свой инсталлер.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, VladD2, Вы писали:
VD>>Я вот тоже думал, а не плюнуть ли на эту студию и не попробовать залепить свой полностью менеджед-варинат. Конкурента ШарпДеву.
VD>>Редактор есть. С проектом тоже проблем не будет, так как МСБилд имеет своей АПИ (я в статье практически читаю прокт Шарпа).
Д>Тогда уж лучше взять MonoDevelop и запинать его, чтобы он на винде нормально шел, назло всем линуксоидам Д>А вообще, писать свою IDE — это конечно заманчиво, но очень уж большой объем работы.... боюсь, что не потянем. Вот например, jebrains свой проект Oblivion в конце концов свернул... неудивительно, проект с таким названием изначально был обречен Д>С другой стороны, интеграция к студии уже привернута, во всяком случае по основным направлениям. Всё, что нужно — это добить редактор и все фичи, которые к нему прилагаются.
Хотя бы потому, что Bethesda Softworks такое название не очень бы понравилось
Д>в самом файле я не копался, но предположить нетрудно — эта штука отвечает за регистрацию плагина в студии. Д>Так что нужно или тащить за собой этот файл с его зависимостями, или писать хоть какой-то свой инсталлер.
Какий на фиг плагинов? Это такргет МСБилда. Он за компиляцию и за содержимое проекта отвечает.
А вот зависимости зависят от того какие Task-и использует этот файл.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Какий на фиг плагинов? Это такргет МСБилда. Он за компиляцию и за содержимое проекта отвечает. VD>А вот зависимости зависят от того какие Task-и использует этот файл.
я всего лишь показывал, что откомпилировать плагин можно только при наличии хотя бы части SDK
но это в принципе не особо важно — писать инсталлер для плагина все равно придется, и лучше сделать это раньше чем позже
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, VladD2, Вы писали:
AVK>>>Не знаю, у меня никаких таргетов не используется.
VD>>Значти ты не 2005-ую студию используешь. VD>>В 2005-ой без них нельзя.
VD>>Собственно современный хак C#-ного проекта и основан на добавлении лишнего таргет-файла заставляющего компилировать Немерловые файлы.
AVK>Речь шла о таргетах VSIP.
Ссылку можно на описание этого чуда? А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда. А то что VSIP для 2005-ой студии их использует совершенно нормально.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ссылку можно на описание этого чуда? А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда. А то что VSIP для 2005-ой студии их использует совершенно нормально.
АФАИК на самом низком уровне надо обрабатывать команды BuildSln, RebuildSln, DeploySln, CleanSln, BuildSel, RebuildSel, DeploySel, CleanSel, CancelBuild в методах QueryStatusCommand и ExecCommand интерфейса IVsUIHierarchy.
Здравствуйте, adontz, Вы писали:
A>АФАИК на самом низком уровне надо обрабатывать команды BuildSln, RebuildSln, DeploySln, CleanSln, BuildSel, RebuildSel, DeploySel, CleanSel, CancelBuild в методах QueryStatusCommand и ExecCommand интерфейса IVsUIHierarchy.
Что значит "Sel"?
И нельзя ли взять за основу Шарповский проект? А то ведь уже все делаетсфя?
Сформулирю более прямо и понятно:
Нельзя ли вместо того чтобы делать поддержку с нуля просто заменить поддержку интелисенс для C#-проекта?
Ведь в нем уже есть все что нужно. И сделано хорошо. Плюс мы сможем компилировать проект состоящий из C#- и Nemerle-файлов.
Нельзя ли обойтись плагином к судии, а не полноценным VSIP-пакетом? Боюсь мы просто увязнем в каше студии.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Что значит "Sel"?
Selection
VD>И нельзя ли взять за основу Шарповский проект? А то ведь уже все делаетсфя? VD>Сформулирю более прямо и понятно: VD>Нельзя ли вместо того чтобы делать поддержку с нуля просто заменить поддержку интелисенс для C#-проекта? VD>Ведь в нем уже есть все что нужно. И сделано хорошо. Плюс мы сможем компилировать проект состоящий из C#- и Nemerle-файлов. VD>Нельзя ли обойтись плагином к судии, а не полноценным VSIP-пакетом? Боюсь мы просто увязнем в каше студии.
Хммм. Тут какое дело. Лично мне как раз интересно разобраться во всей этой каше, чтобы не просто написать VSIP, а стать очень крутым спецом по VSIP И увязнуть в каше вполне входило в мои планы. А если тебе хочеться переделывать проект-пример из SDK, то на здоровье. Собственно именно новый тип проекта для этого делать не объязательно, достаточно зарегистрировать новый тип редактора для файлов с расширением n. Но с моими планами "глубоко поковыряться" это не особо коррелирует.
Тут видишь ли какое дело, мне код из SDK очень не нравиться. Не нравится не только такими мелочами как бардак в отступах, дурацкие имена переменных и проч, но и откровенно плохим дизайном. Потому что при хорошем дизайне комментариев вроде
// Do not call virtual methods after this point since the object is in a deleted state.
не встретишь. Хотелось написать своё. Не потому что в этом есть великая нужда, а из любви к красоте.
Здравствуйте, VladD2, Вы писали:
AVK>>Речь шла о таргетах VSIP.
VD>Ссылку можно на описание этого чуда?
Это не ко мне.
VD> А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда.
О них и идет речь. Ты внимательнее читай топик, прежде чем отвечать. Тут было замечено, что пакет не собрать без инсталляции VS2005 SDK, на что я заметил, что мой пакет собирается без него без каких либо проблем.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, adontz, Вы писали:
VD>>Что значит "Sel"?
A>Selection
А это что означает?
A>Хммм. Тут какое дело. Лично мне как раз интересно разобраться во всей этой каше, чтобы не просто написать VSIP, а стать очень крутым спецом по VSIP И увязнуть в каше вполне входило в мои планы. А если тебе хочеться переделывать проект-пример из SDK, то на здоровье. Собственно именно новый тип проекта для этого делать не объязательно, достаточно зарегистрировать новый тип редактора для файлов с расширением n.
А что нужно сделать чтобы зарегистрировать свой редактор? И можно ли при этом пользоваться редактором VS?
A>Но с моими планами "глубоко поковыряться" это не особо коррелирует.
Я понимаю твое желание покапаться в студии. Но лично я хотел бы по быстрее получить полноценную поддержку Немерла в студии.
В общем-то ясно, что для совсем полноценной поддержки нужно разрабатывать свой пакет, но это не мешает на первое время сделать хоть какую то поддержку.
A>Тут видишь ли какое дело, мне код из SDK очень не нравиться. Не нравится не только такими мелочами как бардак в отступах, дурацкие имена переменных и проч, но и откровенно плохим дизайном.
Я тоже не в восторге от грязи, но хотелось бы поглядеть на код самому, а не верить на слово.
A>Потому что при хорошем дизайне комментариев вроде A>
A>// Do not call virtual methods after this point since the object is in a deleted state.
A>
A>не встретишь. Хотелось написать своё. Не потому что в этом есть великая нужда, а из любви к красоте.
Это может быть вызвано проблемами интеграции с СОМ-ом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
VD>>Ссылку можно на описание этого чуда?
AVK>Это не ко мне.
Хм. Ты же сказал "А".
VD>> А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда.
AVK>О них и идет речь.
Если о них, то неясно в чем проблема.
AVK> Ты внимательнее читай топик, прежде чем отвечать. Тут было замечено, что пакет не собрать без инсталляции VS2005 SDK, на что я заметил, что мой пакет собирается без него без каких либо проблем.
Не вижу связи между пакетами с регистрацией и таргетами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А что нужно сделать чтобы зарегистрировать свой редактор? И можно ли при этом пользоваться редактором VS?
Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory
Как пользовать редактор студии я не знаю. Но дело это ИМХО беспонтовое, потому что без поддержки со стороны проекта твой редактор ничего о структуре проекта и всех осталных файлах знать не будет (или будет получать эту информацию через жопу) и особо дальше подсветки/завершения служебных слов ты не уедешь.
VD>Я понимаю твое желание покапаться в студии. Но лично я хотел бы по быстрее получить полноценную поддержку Немерла в студии.
АФАИК только редактором не обойтись, нужен весь комплекс.
VD>В общем-то ясно, что для совсем полноценной поддержки нужно разрабатывать свой пакет, но это не мешает на первое время сделать хоть какую то поддержку.
Хоть какая-то у тебя и так есть.
VD>Я тоже не в восторге от грязи, но хотелось бы поглядеть на код самому, а не верить на слово.
Скачай SDK, там примеры в исходниках.
VD>Это может быть вызвано проблемами интеграции с СОМ-ом.
К сожалению это проблемы неправильного назначения владельцев ресурсов.
Здравствуйте, adontz, Вы писали:
A>Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory
Хм. Опять свой покет. А без этого никак? Ну, через плагин?...
A>Как пользовать редактор студии я не знаю. Но дело это ИМХО беспонтовое, потому что без поддержки со стороны проекта твой редактор ничего о структуре проекта и всех осталных файлах знать не будет (или будет получать эту информацию через жопу) и особо дальше подсветки/завершения служебных слов ты не уедешь.
Насколько мне известно получить ProjectItem не очень большая проблема. Ну, а там получить список файлов проекта уже становится делом техники. С C#-проектами я копался...
VD>>Я понимаю твое желание покапаться в студии. Но лично я хотел бы по быстрее получить полноценную поддержку Немерла в студии.
A>АФАИК только редактором не обойтись, нужен весь комплекс.
Боюсь это будет слишком большой объем работ. Там одних диалогов настройки проектов дцать штук.
VD>>В общем-то ясно, что для совсем полноценной поддержки нужно разрабатывать свой пакет, но это не мешает на первое время сделать хоть какую то поддержку.
A>Хоть какая-то у тебя и так есть.
Нужно автодополнение при вводе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
A>>Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory VD>Хм. Опять свой покет. А без этого никак? Ну, через плагин?...
Не волнуйся, голый пакет, который ничего не делает это ОЧЕНЬ МАЛО кода.
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.OLE;
using Microsoft.VisualStudio.OLE.Interop;
namespace Nemerle.VSIP
{
[ComVisible(true)]
public abstract class VsPackageBase :
IVsPackage,
IVsInstalledProduct
{
private Microsoft.VisualStudio.OLE.Interop.IServiceProvider _serviceProvider = null;
private ServiceProvider _serviceProviderHelper = null;
private IVsRegisterEditors _vsRegisterEditors = null;
public int SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider serviceProvider)
{
this._serviceProvider = serviceProvider;
this._serviceProviderHelper = new ServiceProvider(this._serviceProvider);
int result = ResultCom.S_OK;
try
{
this._vsRegisterEditors = _serviceProviderHelper.GetService(typeof(SVsRegisterEditors)) as IVsRegisterEditors;
// Вот ту и регистрируем
}
catch (Exception /* exception */)
{
result = ResultCom.E_FAIL;
}
return result;
}
public int QueryClose(out int result)
{
// Давайте выключатся, мы не против.
result = 1;
return ResultCom.S_OK;
}
public int Close()
{
// А вот тут надо разрегистрировать всё что мы зарегистрировалиreturn ResultCom.S_OK;
}
public int GetAutomationObject(string name, out object automationObject)
{
// Прячемся, до нас снаружи не достучатся :) Можно наверное выдавать new DispatchWrapper(this).
automationObject = null;
return ResultCom.S_OK;
}
public int CreateTool(ref System.Guid guid)
{
// А тут мы окошечко создаём.return ResultCom.S_OK;
}
public int ResetDefaults(uint flags)
{
return ResultCom.S_OK;
}
public int GetPropertyPage(ref System.Guid guid, Microsoft.VisualStudio.Shell.Interop.VSPROPSHEETPAGE[] pageList)
{
return ResultCom.S_OK;
}
public int IdBmpSplash(out uint bitmapID)
{
bitmapID = 0;
return ResultCom.S_OK;
}
public int OfficialName(out string officialName)
{
officialName = "Nemerle VSIP! Wow, we did it!";
return ResultCom.S_OK;
}
public abstract int ProductID(out string productID)
{
productID = "v1.0 unreleased";
return ResultCom.S_OK;
}
public abstract int ProductDetails(out string productDetails)
{
productDetails = "some details";
return ResultCom.S_OK;
}
public abstract int IdIcoLogoForAboutbox(out uint bitmapID)
{
bitmapID = 0;
return ResultCom.S_OK;
}
}
}
Ну и с десяток записей в реестре.
VD>Насколько мне известно получить ProjectItem не очень большая проблема. Ну, а там получить список файлов проекта уже становится делом техники. С C#-проектами я копался...
Ну вот и это и есть через ж. Потому что от ProjectItem до иерархии классов в файле, оповещений о том, что надо бы эту иерархию обновить и проч. и проч. путь не близкий и тупиковый.
VD>Боюсь это будет слишком большой объем работ. Там одних диалогов настройки проектов дцать штук.
Каких таких диалогов? Есть Project Properties, и что ещё тебе надо? Вообще-то объязательного интерфейса у VSIP нету. Можешь совсем без диалогов всё сделать.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, adontz, Вы писали:
Д>для начала нужно решить, что от VSIP вообще требуется Д>я бы предложил вот такой список (в порядке уменьшения соотношения важности/простоты)
Д>подсветка кода
+1 Д>автокомплит Д>1. Ключевые слова и встроенные типы Д>2. Классы FCL Д>3. Классы программы
А что делать с макросами? Внутремакросовское (слово красивое) не будет автокомплититься?
Я просто уточняю и понимаю что макросы парсить это тормоза системы и разработки. Д>resolve namespaces
Д>implement interface/abstract class
Вот здесь не дошло В каком смысле "implement" и какие именно "interface/abstract class"?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, adontz, Вы писали:
VD>Ну, да пофигу на чем писать. Переписать на Немерлю потом будет не проблема. Там почти полноценный конвертер есть.
А есть ли смысл конвертировать на Немерле без применения Немерлешных изысков?
O>>>Можно ещё Rene (Refactoring for Nemerle).
A>>Вот. Так и назовём.
VD>Можно так NeVs
А ещё есть такое очень красивое название: Neva. Правда расшифровку я не могу предоставить, ммм, NEmerle Visual Assistant, VisuAl studio?
Здравствуйте, Chipsеt, Вы писали:
Д>>implement interface/abstract class C>Вот здесь не дошло В каком смысле "implement" и какие именно "interface/abstract class"?
Имеешь
interface IInterface
{
int Method();
}
Пишешь
class Implementation : IInterface
{
}
Щёлкаешь правой кнопкой на IInterface, выбираешь Implement, получаешь
class Implementation : IInterface
{
public int Method()
{
throw new Exception("not implemented");
}
}
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, VladD2, Вы писали:
A>>>Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory VD>>Хм. Опять свой покет. А без этого никак? Ну, через плагин?...
A>Не волнуйся, голый пакет, который ничего не делает это ОЧЕНЬ МАЛО кода.
...
Кстати, этот код ты считашь нармальным?
A>Ну вот и это и есть через ж. Потому что от ProjectItem до иерархии классов в файле, оповещений о том, что надо бы эту иерархию обновить и проч. и проч. путь не близкий и тупиковый.
Если редактор наш, то больше ничего и не надо.
VD>>Боюсь это будет слишком большой объем работ. Там одних диалогов настройки проектов дцать штук.
A>Каких таких диалогов? Есть Project Propertie\s, и что ещё тебе надо? Вообще-то объязательного интерфейса у VSIP нету. Можешь совсем без диалогов всё сделать.
Нажми провую кномку на проекте... открой свойства проекта... погляди сколько там страниц и сколько они делают. Потерять все это крайне не желательно. А делать по второму разу неразумно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.