Thursday, June 28, 2007

Разработка плаггинов для Ride-Me

Вчера я писал про новую IDE для Ruby. Удивительно что все разрабочики живущие на Windows не используют ее. По сравнению с ней RoRED мягко говоря похож на блокнот. Про Scite - я молчу, сравнивать тут не с чем. Оказвается в Ride Me есть и навигация на метод, открытие фаила по имени и пр. Одним словом, есть почти вся функциональность Visual Studio 2002. Присутствует нормальный интерфейс к script/generate, старт веб-сервера, прогон тестов. Однако кое-чего не хватает:
1. Сниппетов - есть управления ими, но нет клавиши которая их вставляет (странно, но факт).
2. Отсутсвует автодополнение контрол-пробел не работает - а это совсем не приятно.
3. Нет нормального отладчика.

В результате я решил написать небольшой плаггин, который по крайней мере будет включать в себя фиксы для #1 и #2. Потратив пару часов - у меня получилось что-то похожее на желаемое - не идеально, но жить можно.

Если кто-то хочет посмотреть что из этого получилось - кидайте в комменты - выложу с исходниками на C#.

В дальнейшем планирую сделать парсер для Ruby ( нормальный с помощью antlr), сделать нормальный автокомплит, парсер для require "file.rb" (содержимого ссылок).

Под нормальным автокомлитом я подразумеваю следующее:
def test_method1
Message.| #тут получить список статических методов класса Message (разрешимо).
end


def test_method2
user = User.new()
....
user.| # здесь по-идеи можно сделать автокомплит, т.к. тип известен всегда (User)
end

def test_method3 my_arg
my_arg.| # тут его уже не сделать в принципе, только если искать ссылки и пытаться найти инициализацию объекта который оказывается в качестве параметра.
end

def test_method4
a = "hello" #тип - String
test_method3 a # по-идее теперь в методе test_method3 можно предугадать тип параметра my_arg, однако это уже не тривиально.
end

Еще бы хотелось иметь рефакторинг.... rename, выделить интерфейс, метод и пр...

No comments: