Re[5]: Интеграция Nemerle c Visual Studio
От: Дарней Россия  
Дата: 21.04.06 09:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Д>>хотя там еще что-то из VisualStudioIntegration\Tools вроде бы нужно. Как минимум таргеты для msbuild


AVK>Не знаю, у меня никаких таргетов не используется.


выглядит оно вот так:
  <Import Project="$(VS_SDK_ROOT)\VisualStudioIntegration\Tools\Build\Microsoft.VsSDK.targets" />

в самом файле я не копался, но предположить нетрудно — эта штука отвечает за регистрацию плагина в студии.
Так что нужно или тащить за собой этот файл с его зависимостями, или писать хоть какой-то свой инсталлер.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[6]: Интеграция Nemerle c Visual Studio
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.04.06 09:36
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>в самом файле я не копался, но предположить нетрудно — эта штука отвечает за регистрацию плагина в студии.


Т.е. просто запускает RegPkg.exe? Ну тогда можно спокойно забить.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[9]: Интеграция Nemerle c Visual Studio
От: Freezy Россия  
Дата: 21.04.06 14:49
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, VladD2, Вы писали:


VD>>Я вот тоже думал, а не плюнуть ли на эту студию и не попробовать залепить свой полностью менеджед-варинат. Конкурента ШарпДеву.


VD>>Редактор есть. С проектом тоже проблем не будет, так как МСБилд имеет своей АПИ (я в статье практически читаю прокт Шарпа).


Д>Тогда уж лучше взять MonoDevelop и запинать его, чтобы он на винде нормально шел, назло всем линуксоидам

Д>А вообще, писать свою IDE — это конечно заманчиво, но очень уж большой объем работы.... боюсь, что не потянем. Вот например, jebrains свой проект Oblivion в конце концов свернул... неудивительно, проект с таким названием изначально был обречен
Д>С другой стороны, интеграция к студии уже привернута, во всяком случае по основным направлениям. Всё, что нужно — это добить редактор и все фичи, которые к нему прилагаются.
Хотя бы потому, что Bethesda Softworks такое название не очень бы понравилось
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.04.06 16:52
Оценка:
Здравствуйте, Freezy, Вы писали:

Цитируй только то что нужно для понимания.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.04.06 16:52
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>выглядит оно вот так:

Д>
Д>  <Import Project="$(VS_SDK_ROOT)\VisualStudioIntegration\Tools\Build\Microsoft.VsSDK.targets" />
Д>

Д>в самом файле я не копался, но предположить нетрудно — эта штука отвечает за регистрацию плагина в студии.
Д>Так что нужно или тащить за собой этот файл с его зависимостями, или писать хоть какой-то свой инсталлер.

Какий на фиг плагинов? Это такргет МСБилда. Он за компиляцию и за содержимое проекта отвечает.
А вот зависимости зависят от того какие Task-и использует этот файл.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Интеграция Nemerle c Visual Studio
От: Дарней Россия  
Дата: 22.04.06 06:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Какий на фиг плагинов? Это такргет МСБилда. Он за компиляцию и за содержимое проекта отвечает.

VD>А вот зависимости зависят от того какие Task-и использует этот файл.

я всего лишь показывал, что откомпилировать плагин можно только при наличии хотя бы части SDK
но это в принципе не особо важно — писать инсталлер для плагина все равно придется, и лучше сделать это раньше чем позже
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.04.06 15:03
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, VladD2, Вы писали:


AVK>>>Не знаю, у меня никаких таргетов не используется.


VD>>Значти ты не 2005-ую студию используешь.

VD>>В 2005-ой без них нельзя.

VD>>Собственно современный хак C#-ного проекта и основан на добавлении лишнего таргет-файла заставляющего компилировать Немерловые файлы.


AVK>Речь шла о таргетах VSIP.


Ссылку можно на описание этого чуда? А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда. А то что VSIP для 2005-ой студии их использует совершенно нормально.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Интеграция Nemerle c Visual Studio
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.04.06 15:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ссылку можно на описание этого чуда? А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда. А то что VSIP для 2005-ой студии их использует совершенно нормально.


АФАИК на самом низком уровне надо обрабатывать команды BuildSln, RebuildSln, DeploySln, CleanSln, BuildSel, RebuildSel, DeploySel, CleanSel, CancelBuild в методах QueryStatusCommand и ExecCommand интерфейса IVsUIHierarchy.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[9]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.04.06 16:04
Оценка:
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Интеграция Nemerle c Visual Studio
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.04.06 18:24
Оценка:
Здравствуйте, 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.

не встретишь. Хотелось написать своё. Не потому что в этом есть великая нужда, а из любви к красоте.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: Интеграция Nemerle c Visual Studio
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.04.06 19:49
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Речь шла о таргетах VSIP.


VD>Ссылку можно на описание этого чуда?


Это не ко мне.

VD> А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда.


О них и идет речь. Ты внимательнее читай топик, прежде чем отвечать. Тут было замечено, что пакет не собрать без инсталляции VS2005 SDK, на что я заметил, что мой пакет собирается без него без каких либо проблем.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[11]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.04.06 22:10
Оценка:
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.04.06 22:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Ссылку можно на описание этого чуда?


AVK>Это не ко мне.


Хм. Ты же сказал "А".

VD>> А то я что-то уверен, что таковых в природе не существует, а речь идет о такрогет-файлах МСБилда.


AVK>О них и идет речь.


Если о них, то неясно в чем проблема.

AVK> Ты внимательнее читай топик, прежде чем отвечать. Тут было замечено, что пакет не собрать без инсталляции VS2005 SDK, на что я заметил, что мой пакет собирается без него без каких либо проблем.


Не вижу связи между пакетами с регистрацией и таргетами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Интеграция Nemerle c Visual Studio
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.04.06 22:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А что нужно сделать чтобы зарегистрировать свой редактор? И можно ли при этом пользоваться редактором VS?


Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory
Как пользовать редактор студии я не знаю. Но дело это ИМХО беспонтовое, потому что без поддержки со стороны проекта твой редактор ничего о структуре проекта и всех осталных файлах знать не будет (или будет получать эту информацию через жопу) и особо дальше подсветки/завершения служебных слов ты не уедешь.

VD>Я понимаю твое желание покапаться в студии. Но лично я хотел бы по быстрее получить полноценную поддержку Немерла в студии.


АФАИК только редактором не обойтись, нужен весь комплекс.

VD>В общем-то ясно, что для совсем полноценной поддержки нужно разрабатывать свой пакет, но это не мешает на первое время сделать хоть какую то поддержку.


Хоть какая-то у тебя и так есть.

VD>Я тоже не в восторге от грязи, но хотелось бы поглядеть на код самому, а не верить на слово.


Скачай SDK, там примеры в исходниках.

VD>Это может быть вызвано проблемами интеграции с СОМ-ом.


К сожалению это проблемы неправильного назначения владельцев ресурсов.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[13]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.04.06 00:20
Оценка:
Здравствуйте, adontz, Вы писали:

A>Реализовать свой Package и в методе SetSite получить сервис SVsRegisterEditors и передать ему IVsEditorFactory


Хм. Опять свой покет. А без этого никак? Ну, через плагин?...

A>Как пользовать редактор студии я не знаю. Но дело это ИМХО беспонтовое, потому что без поддержки со стороны проекта твой редактор ничего о структуре проекта и всех осталных файлах знать не будет (или будет получать эту информацию через жопу) и особо дальше подсветки/завершения служебных слов ты не уедешь.


Насколько мне известно получить ProjectItem не очень большая проблема. Ну, а там получить список файлов проекта уже становится делом техники. С C#-проектами я копался...

VD>>Я понимаю твое желание покапаться в студии. Но лично я хотел бы по быстрее получить полноценную поддержку Немерла в студии.


A>АФАИК только редактором не обойтись, нужен весь комплекс.


Боюсь это будет слишком большой объем работ. Там одних диалогов настройки проектов дцать штук.

VD>>В общем-то ясно, что для совсем полноценной поддержки нужно разрабатывать свой пакет, но это не мешает на первое время сделать хоть какую то поддержку.


A>Хоть какая-то у тебя и так есть.


Нужно автодополнение при вводе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Интеграция Nemerle c Visual Studio
От: adontz Грузия http://adontz.wordpress.com/
Дата: 23.04.06 00:43
Оценка:
Здравствуйте, 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 нету. Можешь совсем без диалогов всё сделать.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Интеграция Nemerle c Visual Studio
От: Chipsеt Россия http://merlinko.com
Дата: 23.04.06 00:44
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, adontz, Вы писали:


Д>для начала нужно решить, что от VSIP вообще требуется

Д>я бы предложил вот такой список (в порядке уменьшения соотношения важности/простоты)

Д>подсветка кода

+1
Д>автокомплит
Д>1. Ключевые слова и встроенные типы
Д>2. Классы FCL
Д>3. Классы программы
А что делать с макросами? Внутремакросовское (слово красивое) не будет автокомплититься?
Я просто уточняю и понимаю что макросы парсить это тормоза системы и разработки.
Д>resolve namespaces

Д>implement interface/abstract class

Вот здесь не дошло В каком смысле "implement" и какие именно "interface/abstract class"?
... << RSDN@Home 1.2.0 alpha rev. 648>>
"Всё что не убивает нас, делает нас сильнее..."
Re[8]: Интеграция Nemerle c Visual Studio
От: Chipsеt Россия http://merlinko.com
Дата: 23.04.06 00:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, adontz, Вы писали:


VD>Ну, да пофигу на чем писать. Переписать на Немерлю потом будет не проблема. Там почти полноценный конвертер есть.


А есть ли смысл конвертировать на Немерле без применения Немерлешных изысков?

O>>>Можно ещё Rene (Refactoring for Nemerle).


A>>Вот. Так и назовём.


VD>Можно так NeVs


А ещё есть такое очень красивое название: Neva. Правда расшифровку я не могу предоставить, ммм, NEmerle Visual Assistant, VisuAl studio?
... << RSDN@Home 1.2.0 alpha rev. 648>>
"Всё что не убивает нас, делает нас сильнее..."
Re[3]: Интеграция Nemerle c Visual Studio
От: adontz Грузия http://adontz.wordpress.com/
Дата: 23.04.06 00:48
Оценка: 8 (1)
Здравствуйте, 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");
  }
}
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[15]: Интеграция Nemerle c Visual Studio
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.04.06 01:57
Оценка:
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.