Добавлен , опубликован
Когда начинаешь работать с кодом, то неизбежно услышишь пожелания сделать плагин к любимому редактору кода. Так как по техническим причинам разработка прошлого плагина приостановлена, было решено обмазаться LSP и добавить плагин для Visual Studio Code.

Установка

  • Установите node.js
  • Установите JDK23
  • Перегрузите ПК
  • Проверьте установку введя java --version в терминале:
java 23.0.2 2025-01-21
Java(TM) SE Runtime Environment (build 23.0.2+7-58)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)

UjAPI

Плагин разрабатывается с больши упором в сторону UjAPI, посему, что бы не говорили особо одарённые личности, но будущее варкрафта за ним. Посему и common.j здесь встроен уже с новыми нативками. Так что если вы хотите регулярно получать свежие обновления, то можете установить плагин только ради них.

Зачем это нужно?

Как ни прискорбно это звучит, но у мега популярной игры за более 20 лет её существования практически нет нормальных инструментов для работы с кодом, что я собрался исправить. Набив несколько шишек на прошлых итерациях (раз, два, три) сейчас мне кажется я подобрался к реализации продукта, который совокупно с документацией позволит по человечески писать и проверять код не отходя от кассы.

Зачем это нужно именно вам?

Ничто не мешает вам писать код на гуймуй и наслаждаться процессом. Но если вы всё же решитесь поучаствовать в тестировании, то в первую очередь будут рассматриваться ваши хотелки. Да и не прикольно ли это поучаствовать в создании чего-то интересного?

Планы на будущее

На данный момент плагин умеет только в чистожасс. При наличии неравнодушных людей будет реализована поддержка VJASS и ZINC. Если же по старой традиции комунити положит болт, то я просто буду реализовывать поддержку AngelScript для собственных нужд.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2 комментария удалено
14
Долго старался обходить стороной подобные посты, ибо это было что-то на инопланетном... теперь хотя бы попробую понять. Поясните для блондинки!
Получается, это плагин на VSCode с подсветкой. Я довольно рано отказался от VSCode в сторону IDE для веба (PhpStorm, PyCharm, Android Studio даже не спрашивайте зачем, прошелся с java по касательной).
Чисто по скринам скажу выглядит приятно, но вырвиглазно, JetBrains в новых версиях пошли путем приглушенных цветов. Но это не важно, если цвет зашит в сам VSCode.
Тип переменных сливается с именем функции, может это визуально сбивает с толку.
Но это мелочи.
Получается мы будем "проваливаться" в функции и смотреть перекрестные ссылки и возникающие проблемы по коду (не объявленные переменные и прочее)?
Судя по скринам с VSCode будет разработка над jass кодом ведется в разных файлах, которые потом собираются в 1? Это фишка UjAPI?
Моя гигантская проблема работы напрямую с jass - это его функциональное программирование, это малость устарело, мышление переломилось под ООП, но бОльшая проблема - это вечный поиск raw-кодов всего и вся... было бы круто поднять уровень программирования в Варкрафт до удобного образования ссылок и рефакторинга, но это "влажные" мечты. Фактически имеем расколотое с помощью Близзов сообщество, где часть осталась на старых версиях Варкрафта, а кто-то ушел в злосчастный Reforged... (распиаренный мне кем-то на xgm LUA на поверку оказался не таким уж и инновационным)
А каков принцип сборки проекта? это автоматизированно парсится в w3x архив? или нужно перелазить в редактор для пересохранения?
UjAPI - это надстройка над ВарКрафтом? но ведь он требует установки настройки сверху и сразу ограничивает использование? или весь код по итогу превращается в чистый jass? Ведь в любом случае все что мы пишем - это всего лишь работа с api-шкой движка Варкрафт, и ограничены его возможностями? либо я Блондинка и совсем не понимаю, и тут все на порядок глубже?
И почему этот плагин раз за разом переписывается? в чем недостаток предыдущих проектов? почему не планомерное развитие 1 проекта плагина?
_______________________________________
Сейчас я разработал движок на php (Laravel+blade) для личных нужд который позволяет создавать проект из связанных карт. Есть родитель - есть связанные наследники, у каждого дочернего проекта есть личные файлы - модельки текстурки декора например, родитель содержит все данные, а вот наследникам нужно разложить все по местам. И конечно сделать переход между проектами, чтобы по клику переходить между текущим активным проектом. По факту это работа с директориями, очень нишево.
И минимально завернуто в примитивную вьюшку
Но паре проектов на XGM было бы полезно, но при условии что они на темной стороне - Reforged, где появилась поддержка распаковки карты в проект. С выполнением MPQEditor через консоль с помощью пыхи я поработал, запаковать удалось, но карта сломалась, еще не смотрел в чем проблема... Мне важно также делать небольшие подмены в итоговый j файл, замена значения глобалок. Для wts файла я реализовал прочистку от рабочих тегов разработчика, у меня в имени юнита используется тег армии чтобы легче работать в редакторе, на выходе я чищу это дело. Заметьте, это сделано автоматизировано, я не чистил вручную, а разрабатывать с тегами на порядок приятно, жаль только фильтрации в директории не существует, и самого создания директорий нет, иначе бы все это не имело бы смысла.
Вот такая шняга... может натолкнет на какие либо идеи. Чисто под меня это работает и вполне успешно. Ибо будут расти различия наборов моделей для разных карт проекта. Но хотелось бы в идеале еще в j файле отрезать триггеры которые не относятся к карте. Но важнее едино образность карт проекта.
Это просто рефлексия без особого смысла и умысла. Хотя умысел есть - поднять активность комментариев.
Ответы (4)
30
AMark, ух ты написал. Спасибо. Щас раскидаю на пальцах.
Я довольно рано отказался от VSCode в сторону IDE для веба
У меня для них тоже есть плагин.
Чисто по скринам скажу выглядит приятно, но вырвиглазно, JetBrains в новых версиях пошли путем приглушенных цветов. Но это не важно, если цвет зашит в сам VSCode.
Я использовал цвета токенов по умолчанию. Это всё прекрасно переопределяется. Если плагин наберёт популярность напишу как.
Получается мы будем "проваливаться" в функции и смотреть перекрестные ссылки и возникающие проблемы по коду (не объявленные переменные и прочее)?
Планируется полноценная поддержка языка. Чтоб работа с JASS была неотличима от работы с любым другим популярным яп.
Судя по скринам с VSCode будет разработка над jass кодом ведется в разных файлах, которые потом собираются в 1? Это фишка UjAPI?
Нет. На данный момент последовательно проганяются три файла common.j, blizzard.j, текущий_файл.j. Разумеется кэш настроен
Далее делается ахалай-махалай и проводятся проверки кода и прочая магия.
Моя гигантская проблема работы напрямую с jass - это его функциональное программирование, это малость устарело, мышление переломилось под ООП
Расскажи это SQL подобным языкам. Но я тебя понимаю, посему в планах поддержка AngelScript. JASS удобен тем, что на нём удобно набивать руку. И каждый раз, когда я делаю фичу, то прикидываю, как её сделаю на AngelScript.
это вечный поиск raw-кодов всего и вся... было бы круто поднять уровень программирования в Варкрафт до удобного образования ссылок и рефакторинга, но это "влажные" мечты.
Это не влажные мечты. Если покопаешь мои ресурсы, то увидишь, что у меня хватает отдельных тулз которые умеют с этим всем работать. Проблема была в том, что я два года искал ядро, вокруг которго я эти тулзы аккумулирую. И чует моё сердце, что именно эти CLI тулзы проброшенные через LSP это то, что нужно.
Фактически имеем расколотое с помощью Близзов сообщество
Чтоб что-то расколоть, это что-то необходимо собрать. А сообщество никогда собственно собрано и не было. Заметь, что все популярные тулзы имеют в авторах ровно одного человека. И вот ражи интереса просто поробуй найти исходники JNGP. Тобишь каждый пилил в меру своих интересов. И ниразу в этих интересах небыло развитие сообщества. Для сравнения глянь на мои ресурсы. Для примера, я площадку сменил для того чтоб сообществу было удобней пользоваться документацией.
а кто-то ушел в злосчастный Reforged...
Ничем он не злочастный. Не нужно его воспринимать как врага. Ничего конструктивного из этого не выйдет. Если тебе нравится ванила, то просто пили под неё и народ тебя полюбит. А метая какахи все запомнят тебя как человека, который трогал руками говно.
распиаренный мне кем-то на xgm LUA на поверку оказался не таким уж и инновационным
Ниразу не слышал, чтоб Lua продвигали ка инновационный. Просто при сравнении с JASS всё что угодно покажется даром богов.
А каков принцип сборки проекта? это автоматизированно парсится в w3x архив? или нужно перелазить в редактор для пересохранения?
Пригцип сборки проекта ещё не согласован. Кажлый выбирает под себя. Никто не мешает взять тот же MPQEditor и пихать код напрямую в карту. Или взять import из грязножасса и юзать его на чистожассе. Об автоматизации на данном этапе пока рано думать. В приоритете проверка синтаксиса и прочие IDE фичи.
UjAPI - это надстройка над ВарКрафтом? но ведь он требует установки настройки сверху и сразу ограничивает использование? или весь код по итогу превращается в чистый jass? Ведь в любом случае все что мы пишем - это всего лишь работа с api-шкой движка Варкрафт, и ограничены его возможностями? либо я Блондинка и совсем не понимаю, и тут все на порядок глубже?
Это лаунчер, который перхватывает процесс игры и добавляет в неё расширенный функционал вплоть до языков программирования. Так что по сути мы работаем с расширенной апишкой варкрафта где возмодности ограниченны только трудочасами Unryze.
И почему этот плагин раз за разом переписывается? в чем недостаток предыдущих проектов? почему не планомерное развитие 1 проекта плагина?
Потому что я нифига не понимаю в программировании. И когда я решил осилить поддержку языка в популярном редакторе, то никто не смог мне посоветовать ничего вразумительного. Посему я не нашёл ничего лучше, чем просто перепробовать все редакторы и бибилиотеки к ним. Вот сводная таблица, основанная на многочисленных попытках и чтении документации:

JetBrains

Microsoft

где появилась поддержка распаковки карты в проект.
Распаковку карты в папку уже сейчас можно сделать. Я эту проблему уже со всех сторон понадкусывал. Просто не пришёл к системному решению.
Вот такая шняга... может натолкнет на какие либо идеи.
С идеями у меня проблем нет. Есть проблемы со временем и поддержкой коммунити, которого нет.
Но важнее едино образность карт проекта.
К этому мы стремимся. Но делать непонятно что непонятно как не хочется. Посему пока планомерно движемся к единообразию.
Загруженные файлы
38
AMark, vscode как раз для веба) а эти динозавры доживают свой век
30
Чисто по скринам скажу выглядит приятно, но вырвиглазно
Как оказалось, здесь всё в порядке с темами
А так как я использую стандартные токены, то ты можешь выбрать любую расцветку по вкусу:
Загруженные файлы
30
Последние новости!
Как оказалось, мы не представляли глубину кроличьей норы при разработке дополнений на VSCode. Если у вас после установки ничего не происходит подождите несколько дней, пока мы не разобьём голову фэйспалмом починим стабильный запуск.
30
Последние новости!
Как оказалось, я не могу исправить комментарий.

Проблема с запуском решена

Оказывается, вскода, имеющая внутри node.js для полноценной работы требует отдельно установленную node.js. Я считаю это гениально.
Загруженные файлы
Этот комментарий удален
30
Вышла новая версия! Прокрутить к ресурсу
Проделано много работы. Весь код собран в единый jar архив, добавлена недостающая подсветка и наброски проверки типов выражений. Правда нарисовалась беда с позиционированием ошибки.
Загруженные файлы
30
Вышла новая версия! Прокрутить к ресурсу
Добавлен список функций в блок OUTLINE. Дополнены проверки типов.
Загруженные файлы
30
Вышла новая версия! Прокрутить к ресурсу
Добавлено простое автодополнение, которое пока не учитывает положение курсора.
Загруженные файлы
30
Вышла новая версия! Прокрутить к ресурсу
Были пролинкованы все элементы и добавлена подсветка вхождений.
Загруженные файлы
30
Вышла новая версия! Прокрутить к ресурсу
  • добавлена аннотация функций при наведении
  • добавлен переход к объявлению по Ctrl+click
Загруженные файлы
Ответы (5)
30
KaneThaumaturge, я ещё не нашёл нормального способа сделать документацию чтоб она одновременно была доступна в интернете и её можно было подтягивать в эдитор. Ну а вариант с комментариями не катит по причине отсутствия локализации.
20
nazarpunk, не, я просто про возможность просмотра коммента к функциям. Китайский плагин плох в этом
30
KaneThaumaturge, если просто выводить комментарии, которые выше функции, то это можно запилить. Правда они будут в Markdown.
20
nazarpunk, я бы поставил тебе еще один лайк, но скорп запретил ставить больше
14
С каждым апдейтом все круче и круче!
а реально подобный плагин превратить как плагин под worldeditor для работы с jass - альтернатива tesh? или многое завязано именно на функционале vscode?
Ответы (2)
30
AMark, после многочисленных проб и ошибок стало понятно что для .j файлов людям нужна поддержка цельного war3map.j максимально приближённая к игре. Для разработчиков карт заедет поддержка VJASS/ZINC где есть встроенный механизм импорта из внешних файлов. Вот он и благополучно заменит вcтроенный TESH. Особенно если я осилю экспорт кода из *.wct.
30
или многое завязано именно на функционале vscode?
Плагин реализует LSP и поэтому ему вообще неважно, какой редактор будет слать в него запросы. Другой вопрос кто реализует поддержку LSP в эдиторе?
30
Вышла новая версия! Прокрутить к ресурсу
  • Обновлен common.j для UjAPI v1.1.27.285
  • По запросу KaneThaumaturge был добавлен вывод комментариев которые прилегают к функции. Комментарии распознаются как Markdown.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.