Pull to refresh

Comments 35

Это супер круто!
А можно то же самое для PHP?
Вообще автокомплит на основе исполнения кода — мощная штука
PHP планируем. Там такой подход будет востребован?
Если действительно есть потребность можем ускорить именно PHP.
Есть потребность в автокомплите кода в sublime text в принципе. Сейчас есть вариант использовать IDE, либо отказаться от автокомплита и использовать простые редакторы.
Но в phpstorm нет некоторых фич, которые в современном php очень нужны, например:
$arr['em'] = new EntityManager(...);
$arr['em']->...();

phpstorm уже не знает, что в $arr['em'] находится и соответственно нет подсказок по методам.
function foo($obj)
{
    ... // какая-то обработка obj
    return $obj;
}

Тут ясно, что на вход принимается какой-то объект и возвращается он же, или объект этого же типа, phpstorm об этом не знает и на данный момент нельзя никак ему об этом сообщить (реальный пример — метод EntityManager::merge из doctrine2)
Под симфони существует целый плагин, который делает именно то, что вы сделали с js(не уверен что так же, но он это делает). Смысл в том, что в симфони используется повсеместно паттерн DI. В реальности после компиляции конфигов и прочего к DI относящегося, генерируется файл, в котором для каждой зависимости есть функция. В общем достаточно держать в памяти этот файл, и автокомплит готов.

Под первые две вещи я предлагал уже в трекере сделать через PHPDOC-аннотации, но пока этого нет.
В общем очень жду, когда вы подобное сделаете,
Вопрос как держать в памяти… PHP хранит в памяти функции?
Мы готовы взяться за PHP, но нам нужна консультация PHP- эксперта.
к сожалению я не эксперт.
Но на сколько я знаю — php компилирует в байт-код и затем движок исполняет этот код.
Я думаю вам для работы автокомплита нужна только первая стадия.
Создайте тут тему: phpclub.ru/talk, я думаю найдутся люди, которые подскажут в каком направлении двигаться
LiveCoding на PHP — бесполезное занятие. Во всяком случае не в таком виде, большинство скриптов выполняют свою работу за короткое время и не имеют какого-то конкретного состояния, в котором они находятся.
Лучше сделайте Dart :)
Dart — хорошая мысль. Мы как раз думаем на поддержкой TypeScript, CoffeeScript в IDEA можем заодно и Dart
Typescript — это было бы действительно здорово. Он очень мощный, но слишком медленный — компиляция и релоад больших проектов занимает килотонны времени. Наиболее популярная IDE для Typescript — Visual Studio. Если вы сделаете для нее плагин, то отбоя от желающих не будет: в последнее время он бьет по популярности другие компилируемые языки (гугл тренды). Со своей стороны могу заверить, что в моей компании 10 разработчиков, для которых точно купят лицензию на такой хороший продукт, но только под Visual Studio (сам проект на Typescript + ExtJS).
А нельзя как-то настроить среду исполнения, чтобы он функции и объекты не убивал после запроса, а хранил, как это просиходит в серверных Java апликейшенах?
Не могу ответить вам точно на этот вопрос, существуют плагины, чтобы байткод хранить в памяти, а вот про объекты — хранить их можно только в сторонних хранилищах.
хм… апдейтера нету встроенного?
P.S. Обновил с сайта.
UFO just landed and posted this here
Кто уже пользовался, расскажите впечатления.
Мы планируем добавить поддержку IDEA/Webstorm, Vim, Textmate, Emacs, Brackets, Coda. Примерно в таком порядке.
Вы можете сами добавить поддержку (кстати можем договориться об оплате).
Посмотрите исходники нашего расширения для Sublime, вся логика внутри COLT, на стороне плагина — запросы по http и их обработка.
С собранными js работаете? source maps там используете например?
Да, у нас есть Source Maps. Там нужно кое что «допиливать».
Если у вас реальные проблемы и нужно решить кейсы — пишите нам запросы!
Мы обязательно добавим поддержку. У нас есть CoffeScript, TypeScript.
Мы можем добавить вызов любых пре-процессоров через вызов внешнего скрипта. Такой фунционал планируется.
UFO just landed and posted this here
А под intelliJ webStorm etc. не планируете делать плагин?
UFO just landed and posted this here
ST2 пока только.
ST3 поддержку оказалось добавить сложнее чем мы думали — другая версия питона.
Думаю за две недели добавим.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Для Ruby бы такое. Никто не в курсе?
Вариант помесячной оплаты очень странный. Компании конечно хорошо, постоянное поступление денег, но разработчикам это странно.
$(«p»).empty().[ctrl][space]

расскажите подробнее про принципы работы автокомплита. кольт использует статический анализ или в самом деле выполняет набираемый код приложения? что если приложение обладает какими-то непоправимыми сайд-эффектами (диски форматирует, за путина голосует, ракеты на луну запускает и т.п.) — это же не будет случаться за ради любопытства разработчика?
Так они вроде только с браузерными приложениями работают. Там все это естественно ограничено иначе у нас бы вся луна была в ракетах.
COLT выполняет код оборачивая его try{} чтобы в случае чего не сломать приложение. Потом анализирует рантайм объекты.
Фишка в том, что код мы выполняем в том пространстве имен (scope) где вы хотите получить автокомплит. В той же функции, что в в коде.
Поэтому вы имеете доступ к данным которые видны только в этом пространстве имен.
Нам удалось сделать такую функциональность без применения дебага, специальных сред выполнения.
Обычным JS, за счет трасформации кода. Мы используем движок livecoding для доставки нашего же кода для анализа внутрь каждой функции.
Поэтому запускать приложение можно везде. И автокомлитить поля и фунциии с того же телефона или телевизора. И выводить данные.
Sign up to leave a comment.