IntelliJ IDEA + Pascal

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

IntelliJ IDEA + Pascal

Сообщение Mirage » 24.03.2013 23:14:25

По работе пишу на Яве, для которой есть отличная IDE - Intellij IDEA.
Что в ней отличного? Я тоже долго не понимал, используя Eclipse. Eclipse тоже хорошая IDE.
Было непонятно, что может быть так уж сильно лучше? Все необходимое в Eclipse есть и работает.
Начиная от подсветки и автодополнений и заканчивая рефакторингом и квикфиксами.
Даже ctrl+click работает стабильно, в отличии от.
К тому же Eclipse, начиная с третьей версии, это не столько IDE, сколько открытая платформа для создания самых разных приложений. Приложения получаются путем написания плагинов к базовой платформе. Соответственно, к IDE на базе Eclipse есть тьма плагинов.

Однако, попробовав IDEA назад уже не хочется. Сложно объяснить почему.
Может быть это из-за большого количества функций, возможно, из-за степени проработки этих функций - тут бывают сюрпризы.
Приятные. Опять же, в отличии от. Порой даже непонятно, как она догадывается чего я хочу. Но ведь догадывается!
Продуктивность написания кода просто запредельна.

Чуть позже я выяснил, что IDEA это тоже платформа, только, в отличии от Eclipse, специализированная - для создания IDE.
PyCharm, WebStorm, RubyMine, PHPStorm, AppCode - это все IDEA. И даже Resharper построен на тех же принципах, хоть и плагин для VS.
В виде плагинов есть поддержка многих языков - Erlang, LUA, Haskell. Вышеперечисленные IDE тоже начинались как плагины.
А вот поддержки Паскаля как-то не было.

Как уже все наверное догадались, я такую поддержку решил добавить в виде плагина.
Для его функционирования достаточно бесплатной Community Edition версии 12.хх, которую можно скачать здесь:
http://www.jetbrains.com/idea/download/index.html
Сам плагин доступен как в официальном репозитории JetBrains, так и по ссылке:
http://www.siberika.com/download/IdeaPas.zip

Что сделано на текущий момент? (лучше на сайте смотреть, тут редко обновляется)
  • контекстно-зависимые подсказки
  • проверка использования юнитов в uses - не ли лишних, или указанных в interface, когда достаточно в implementation, с предложениями фиксов
  • навигация от класса/интерфейса к наследникам/реализациям
  • поиск объявления (модуля, переменной и т.д.) и упоминаний в коде
  • навигация interface <-> implementation модуля/класса
  • поддержка и подсветка синтаксиса - Delphi mode чтобы убить двух зайцев
  • подсветка ряда ошибок, в т.ч. использования необъявленных идентификаторов с предложениями фиксов
  • поддержка компиляторов - FPC и Delphi
  • запуск программ
  • поддержка условной компиляции и инклудов
  • рефакторинг - переименование
  • сворачивание кода (фолдинг)

а также все, что дает платформа. Навскидку:
  • удобный поиск
  • интеграция с VCS (SVN, Git, Mercurial, ...)
  • поддержка XML и SQL
  • TODO

Что планируется
  • "понимание" кода, на уровне Явы
  • предупреждения о сомнительных местах в коде, с предложениями фиксов
  • подсветка всех ошибок, с предложениями фиксов
  • поддержка рефакторинга
  • импорт проектов из Lazarus и Delphi
  • поддержка тестовых фреймворков
  • поэкспериментировать с FPC for JVM. Вполне может получиться полноценная среда разработки с отладчиком.

Установка плагина
1. Выбираем в меню File->Settings, затем Plugins
2. Жмем "Browse repositories", находим I-Pascal
или
2. Нажимаем install plugin from disk
3. Указываем файл IdeaPas.zip

Чтобы компилятор вызывался необходимо отключить external build здесь:
File->Settings->Compiler

Создание проекта
В Идее проект состоит из т.н. модулей разных типов, которые имеют свои настройки.
В нашем случае тип модуля - Pascal module. Он соответствует проекту в Delphi/Lazarus и представляет собой отдельное приложение, библиотеку и т.д. Т.е. одновременно можно работать над группой привычных проектов, в рамках идеевского проекта.

Чтобы подключить компилятор, тем самым получив возможность компилировать и выполнять программы, в IDE необходимо добавить т.н. SDK определенного типа.
Это можно сделать в диалоге создания проекта:

1. Выбираем в меню File->New project
2. Выбираем "Pascal Module" чтобы создать модуль нужного типа
3. Нажимаем "New" справа от "Project SDK"
4. Выбираем директорию где установлен FPC

Настроить SDK можно так:
1. Выбираем в меню File->Project Structure
2. Выбираем SDKs
3. Нажимаем на нужный SDK
Хотя пока настраивать особо нечего, кроме опций компилятора.

А вот настроить модуль нужно, т.к. там указывается главный файл модуля, который будет компилироваться и выполняться:
1. Выбираем File->Project Structure
2. Выбираем Modules
3. Выбираем нужный модуль
4. Указываем главный файл в настройке Main file на вкладке Settings
На вкладке Sources можно указать пути к используемым библиотекам.

Компиляция и запуск
Скомпилировать файл можно из контекстного меню, пункт "Compile..."
С запуском сложнее - запуск в Идее осуществляется через т.н. Run configurations, который сперва нужно создать. Тип - FPC executable:
1. Выбираем в меню Run->Run...
2. Выбираем "Edit configurations..."
3. Нажимаем "+"
4. Выбираем "FPC executable"
5. Нажимаем кнопку "Run" чтобы запустить приложение

Назначение данного плагина не конкуренция с Lazarus, а скорее дополнение.

Вопросы? Пожелания? Мысли?
Все приветствуется!

Также хотелось бы увидеть мысли о том, какие сомнительные места модно выделять в коде.
Мне вот пока приходят мысли о коде типа:
x := byte(b);
Т.е. приведение булевого типа к числовому не через Ord().
Последний раз редактировалось Mirage 22.12.2015 01:31:53, всего редактировалось 4 раз(а).
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение Brainenjii » 25.03.2013 06:37:38

занятно!
Но что с отладчиком без JVM? CodeTools (создание/изменение реализации через изменение и прочие вкусности)?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 26.03.2013 23:29:39

Без JVM это прикручивать GDB опять. Прикрутить-то можно, только смысл в чем? У Лазаруса он уже прикручен.
Насчет CodeTools не понял - что за создание/изменение реализации через изменение?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 18.05.2013 23:00:14

Надо же, Гугл тоже решил вслед за мной плагин к Идее написать. :)
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 31.08.2013 22:07:28

Поработал над плагином немного:
Теперь поиск упоминаний и переход от использования к объявлению работает не только для типов.
Например, можно найти все места где используется класс, метод или поле в класса/записи.
Добавил в парсер (вернее в лексер) поддержку условной компиляции.
Парсятся в том числе инклуды с дефайнами.
В результате, можно видеть какие ветки кода активны, а какие нет. Неактивные пока раскрашиваются как комментарии.

Также сделал сайт для плагина.
http://www.siberika.com/pasidea.htm
Прямая ссылка:
http://www.siberika.com/download/IdeaPas.zip
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение grot » 02.09.2013 21:48:23

We need Pascal-Class-Properties DEBUGER ?!?
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 03.09.2013 21:12:07

grot: а по-русски?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение grot » 04.09.2013 15:08:30

Ваша инициатива по альтернативному IDE для FPC просто замечательна !

Со стандартным функционалом "найти-подсветить-запустить"
более-менее справляется Lazarus...
Но при отладке под GDB - не "понимаются" свойства классов языка ObjectPascal...
( послушать его, так у TStringList оказывается нет свойства Count и т. д. )

Крайте не хватает "вменяемого" отладчика (debugger), который бы "понимал"
Class's properties языка ObjectPascal - и уже не важно, какие технологие будут при этом использоваться
(только не .НЕТ, разумеенся )!!!

В продолжение темы :
http://www.freepascal.ru/forum/viewtopic.php?f=5&t=9310
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 04.09.2013 15:54:23

При всем уважении к проекту, но поиск-подсветка в Лазарусе далека от современных стандартов.
А средств анализа кода просто нет пока.
Касательно отладки - прикрутить GDB можно и к данному плагину, но вроде говорится, что невменяемость отладчика идет от самого GDB, т.к. он просто не понимает паскаль. Хотя мне не очень понятно как GDB влияет на то, что показывается в IDE.
Вообще тут было бы полезно пообщаться с людьми, которые прикручивали GDB к Лазарусу.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение grot » 04.09.2013 18:21:07

Коллега !

Зачем нужны люди - это же open-source !
Сам не смотрел - но думаю, вызовы GDB там лежат "на поверхности" ...
Вот тут-то и будет нужен "отладчик" чтобы отладить "отладчик" !

Успехов !
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 04.09.2013 22:00:15

Люди нужны чтобы рассказать в чем там проблема. Самому по исходникам в этом разбираться то еще удовольствие.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение grot » 05.09.2013 10:35:24

Для начала - я бы посмотрел что может в принципе вывести GDB в автономном режиме
(т.е. без запущенного Lazarus)
и сравнить с его выводом из Lazarus.

Сразу станет понятно - рассматривать GDB дальше
или сразу искать альтернативные решения ...
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: IntelliJ IDEA + Pascal

Сообщение grot » 08.09.2013 11:25:09

А Lazarus то наш оказывается о-ого-го:

Using Lazarus as a GDB frontend:
http://leonardorame.blogspot.ru/2011/06/using-lazarus-as-gdb-frontend.html
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: IntelliJ IDEA + Pascal

Сообщение Mirage » 04.11.2013 16:13:53

Обновил плагин.
Добавилось:
  • контекстно-зависимые подсказки
  • подсветка незадекларированных идентификаторов
  • быстрый фикс для предыдущего пункта в виде добавление объявления переменной
  • навигация между интерфейсом и реализацией для методов и подпрограмм (кнопка-иконка слева)
  • комментирование строки/блока по "ctrl+/" / "shift+ctrl+/"
  • подсветка скобок
  • поддержка других IntelliJ-based IDE (Pycharm, PHPStorm, etc). Правда внешний компилятор не везде поддерживается.

В ближайшей версии научу учитывать мемберы классов-предков (сейчас не учитываются при подсветке ошибок и навигации), парсить .ppu, поправлю кое-где парсер.

А так, можно уже использовать на реальных проектах, польза есть.

Да, для компиляции надо отключить external build здесь:
File->Settings->Compiler
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: IntelliJ IDEA + Pascal

Сообщение hinst » 06.11.2013 19:33:19

Решил потестировать твой плагин :shock:
В общем, я думаю, прикручивание паскаля к IntelliJ хорошая идея. Наверное. И вот что я обнаружил, посмотри пожалуйста на этот скриншот
http://imageshack.com/a/img690/772/fpiu.png
В месте где protected var вот там подчёркнуто и написано , or : expected, в общем, парсеру видимо не нравится такой стиль написания кода.
Ну а переход по ссылкам у меня работает. Только вот эти var'ы не работают да и методы которые идут сразу после var'а тоже не работают (там видно что на одну строку ниже тоже становится красное) и такие красные методы тоже не определяются как надо.
Далее вот
SysUtils,
Classes,
SyncObjs;
они все тоже красные. Ну стандартные модули я так понимаю ещё не сделаны
Integer, TCriticalSection, Boolean красные
Переименование вроде бы работает. Если в разных модулях упоминается один и тот же идентификатор, то переименовывается. Поиск упоминаний в разных модулях тоже вроде работает. Даже для некоторых штук подчёркнутых красным переименование вроде как работает, но я уж не стал это искушать

Добавлено спустя 2 минуты 14 секунд:
я подозреваю что нормальная запиленность IntelliJ связана с тем, что она коммерческая. Это конечно хорошо, мне лично их код нафиг не нужен, пусть сами фиксят свои баги; но вот не знаю, предусматривает ли их лицензия коммерческие проекты изготовленные на Community Edition

Добавлено спустя 33 секунды:
(типа я IntelliJ не купил, а свою прогу написал на бесплатной редакции IntelliJ и продал)
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

След.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

Рейтинг@Mail.ru
cron