Visual Studio Code: WarCode

Добавлен , опубликован
Предназначение:

WarCode

Расширение для VSCode, позволяющее работать с чистым и незамутнённым jass.
Основано на библиотеке Chevrotain, поиграться с которой можно здесь.
Грамматики основаны на jassjs, только значительно улучшены.

.j

JASS лексика полностью описана. Синтаксически неверный код будет выдавать ошибки.
Все блоки размечены для более удобной навигации.
Остальные фичи будут постепенно дорабатываться.

.zn

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

.wts

Написана новая грамматика для поддержки .wts.

.slk

Добавлен простой просмотр и примитивный редактор .slk.

Цветовая схема

Настройка собственной цветовой схемы прекрасно описана здесь.
Список токенов для применения цветов находится здесь.

Тестирование

Если вы используете расширения, наподобие ujass, то отключите их для директории, в которой производите тестирование. Так же отключите это расширение для ваших рабочих директорий.

Прекращение разработки

Ввиду абсолютной унылости VSCode было принято волевое решение сменить платформу.

Повторное прекращение разработки

Плагин повторно прекращает свою разработку в пользу JASS-ANTLR-Kotlin-VSCode.

Полезные ссылки

Поддержать проект

Можете просто поддержать XGM, мы с удовольствием проведём интересный конкурс на эти деньги.
`
ОЖИДАНИЕ РЕКЛАМЫ...
38
Форматирование в вскоде просто выдаёт тебе содержимое файла и предлагает самому его отформатировать заменив прежнее содержимое. И потом заново строить дорогое дерево
Там в любом случае ты строишь либо всё, либо часть дерева заново, потому что файл может быть изменен в любом месте. А свобода выбора решений для кеширования и архитектуры - так это скорее плюс. Можно делать всё, что вздумается. Хоть встроить вскоды в вскод и мониторы в мониторы
30
Можно делать всё, что вздумается.
Например разметить многострочный токен?
Вот тебе простейший пример. В IntelliJ я сделал кастомный текст при сворачивании. Удачи сделать такое в VSCode.
А свобода выбора решений для кеширования и архитектуры - так это скорее плюс.
Ты не поверишь, в IntelliJ тоже свобода выбора, только помимо великого ничего как в вскоде есть искаропка, которая покрывает большинство случаев.
А потом может сразу на асм, ну её, эту цивилизацию
Логика просто шикарна. Вместо простого добавления языка в IDE ты предлагаешь сделать IDE из VSCode?
Загруженные файлы
38
Почему другие языки офигенно работают в вскод, а у тебя какие-то великие беды.
Может быть дело было не в бобине?)
Загруженные файлы
30
Почему другие языки офигенно работают в вскод, а у тебя какие-то великие беды.
Офигенно? Давай проедём простейший тест:

VSCode

IntelliJ

Загруженные файлы
18
Офигенно? Давай проедём простейший тест
Причем тут vscode?

Начнём пожалуй с выбора языка. У intelliJ типизированная java что только одной строгой типизацией заруливает унылый ts, насчёт которого у меня есть что сказать
Начать стоит с вопроса - причем тут ЯП? LSP сервер пишется на любом языке, хоть на lua хоть на go
Загруженные файлы
30
Причем тут vscode?
js у обоих искоробочный. И правда, при чём здесь vscode?
Начать стоит с вопроса - причем тут ЯП?
И правда, мы же рунами на бересте пишем.
LSP сервер пишется на любом языке, хоть на lua хоть на go
Работать с апи ты тоже будешь на любом языке?
38
А если у меня
не значит html, то надо писать кучу noinspect?

В целом implicit language injection это спорная трата цпу, как минимум на маленьких константах, их может быть очень много и парсить все строки в проекте на наличие всех языков антоним быстродействия
30
их может быть очень много и парсить все строки в проекте
Там не парсятся все строки. Там ты сам задаёшь, где в твоём языке может быть иньекция и сам определяешь инъекции в другие языки. Но основная фишка в том, что ты можешь написать плагин, который может влиять на другие плагины и добавлять к ним свой функционал. Для реализации такого веселья в вскоде нужно крутить сальтухи.
18
Работать с апи ты тоже будешь на любом языке?
Сервер проверки кода работает по rpc и должен быть максимально независимым. Все что предоставляет IDE это раскрашивание символов и события наведения, выделения кода

при чём здесь vscode?
Внезапно vscode тоже умеет раскрашивать символы внутри строк
30
Vlod, ты внимательно пример смотрел? Глазами?
Я так понимаю, что тебе от IDE нужно только наведение и выделение?
28
ты внимательно пример смотрел? Глазами?
На самом деле я тоже не понял суть того примера с .js файлом.
30
На самом деле я тоже не понял суть того примера с .js файлом.
Внутри строки js подсветка html. Тобишь langiage injection, а не разбор строки.
20
На самом деле я тоже не понял суть того примера с .js файлом.
Я понимаю если бы разница была маленькая, но когда текст не сливается с разметкой - это явно удобнее. Да и при желании тексту через IntelliJ намного проще сменить расцветку, чем оверрайдить 100500 вещей в ВСкоде.
30
чем оверрайдить 100500 вещей в ВСкоде.
Оверрайдить? Ты VSCode с IntelliJ не путаешь? В вскоде у тебя есть апи и развлекайся с ним как хочешь.
20
Оверрайдить? Ты VSCode с IntelliJ не путаешь? В вскоде у тебя есть апи и развлекайся с ним как хочешь.
Ну, оверрайд я имел ввиду -> насильная перекраска через токены, которые часто стреляют в лицо. Да, перегнул со словом.
18
Тобишь langiage injection, а не разбор строки
Честно говоря и IDE и LSP совершают разбор строки, а что мешает langiage injection подключить к серверу вопрос открытый

Если langiage injection в IntelliJ не умеет валидировать SQL запрос, например существование указных полей в схеме, то это подсветка уровня notepad++ и разбор строки
30
Если langiage injection в IntelliJ не умеет валидировать SQL запрос, например существование указных полей в схеме, то это подсветка уровня notepad++ и разбор строки
Сразу виддно специалиста по IDE. IntelliJ умеет не только валидировать запрос но и и исполнять его по удалёнке.
Загруженные файлы
18
IntelliJ умеет не только валидировать запрос но и и исполнять его по удалёнке.
Ало контекст обсуждения какой, может анализ строки и langiage injection?
>>> cur.execute("""
...     INSERT INTO some_table (an_int, a_date, a_string)
...     VALUES (%s, %s, %s);
...     """,
...     (10, datetime.date(2005, 11, 18), "O'Reilly"))
Что в этом примере может сделать IntelliJ со строкой кроме перекрашивания символов
38
Webstorm вроде умел в нормальный автокомплит html внутри других языков
28
Что в этом примере может сделать IntelliJ со строкой кроме перекрашивания символов

Вот ещё пример с инжектом Python в строку самого Python.
Загруженные файлы
30
Webstorm вроде умел в нормальный автокомплит html внутри других языков
Ну так это же один движок, просто пересобраный с разными наборами плагинов из коробки.
18
Вот ещё пример с инжектом Python в строку самого Python
Это open source решение?
20
Вот ещё пример с инжектом Python в строку самого Python
Это open source решение?
Загруженные файлы
28
Это open source решение?
А мне какое дело, мне когда надо, я это юзаю. Но не то, чтобы часто. Да и мне пока неведом способ постоянного инжекта, после перезапуска нужно заново инжектить.
30
Да и мне пока неведом способ постоянного инжекта
Этот способ прекрасно описан в документации.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.