Небольшой отчет о сделанной работе
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.08.06 21:56
Оценка: 176 (21)
Вот решил показать как дела с интелисенсом. Может кто-то проникнется и поможет нам в работе.

Автодополнение при вводе:
...метода из класса System.Console


ряда локальных переменных, функций и полей


Пространств имен и классов при редактировании директивы using


Подсказки:
...для локальной переменной (обратите внимание на то как задан тип этой переменной )


...для ссылки на функцию созданную с помощью частичного применения оператора "+"


...для макроса "while" (сначала приводится код использующий макрос)

(а это уже подсказка) первый варинт нужен чтобы было понятно что ображуем "тело" передавющееся макросу.


Обратите внимание, что код макроса "раскрыт".

Красным указано где в этот момент находиля курсор.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Небольшой отчет о сделанной работе
От: ie Россия http://ziez.blogspot.com/
Дата: 18.08.06 03:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот решил показать как дела с интелисенсом. Может кто-то проникнется и поможет нам в работе.


Если метод Main не делать, а писать что-то вроде:
using System.Console;

WriteL // тут не пашет автодополнение

То автодополнение не работает. Хотя в методе Main и других методах пока таких проблем не заметил.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: Небольшой отчет о сделанной работе
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.08.06 11:00
Оценка:
Здравствуйте, ie, Вы писали:

ie>Если метод Main не делать, а писать что-то вроде:

ie>
ie>using System.Console;

ie>WriteL // тут не пашет автодополнение
ie>

ie>То автодополнение не работает. Хотя в методе Main и других методах пока таких проблем не заметил.

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

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

И так работы еще море. Еще нужно переделывать внутренности комапилятора, чтобы они показывали всю нужную информацию и при этом небыло ошибок. Плюс есть проблемы с производительностью которые требуют совершенсвования механизма отслеживания изменений кода в редактироуемом файле. Сейчас при изменении в любой части файла происходит перепарсивание этого файла и семантическая обработка всех файлов проекта. А надо сделать так, чтобы изменения в рамках одного метода приводили бы только к изменению информации о положениях методов в файле. Это позволит при вводе кода в тела метода производить семантический анализ только этого метода. Ну, а это будет гарантировать приемлемую скорость даже на огромных проектах.

Все это объемные и сложные задачи. Их нужно решать в первую очередь. А мелочи вроде комплита в автометодах потом как-нибудь устраним.

ЗЫ

Кстати, еще раз напомню, что мы бы не отказались от помощи.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Небольшой отчет о сделанной работе
От: vdimas Россия  
Дата: 22.08.06 13:46
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Но ведь можно по первым буквам "догадаться", так? Или декларация в Nemerle может начинаться с произвольных идентификаторов/токенов?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.